- Timestamp:
- Apr 18, 2005, 11:21:16 AM (20 years ago)
- Location:
- tools
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
tools/wleiden.pl
r4203 r4302 1 #!/usr/bin/perl -w 2 # 3 # Copyright 2005 Stichting Wireless Leiden 4 # maart 2004 rick@wirelessleiden.nl 5 # 6 7 # Config located at other file 8 my $conf_file="/home/genesis/tools/genesis.conf"; 9 do($conf_file) || die("Cann't open $conf_file"); 10 ################ END OF CONFIG ########################## 11 12 #variablen 13 my $time=gmtime(); 14 my $source=`/bin/hostname`; 15 chomp($source); 16 17 18 #slurp IP berekeningen info 19 do ("$IP_pmPath") || die ("Cann't open $IP_pmPath"); 20 #slurp dns info 21 do ("$dnsheader_confPath") || die ("Cann't open $dnsheader_confPath"); 22 23 24 #zoek uit of het master_ip addr voorkomt in de configs 25 #belangrijk van aliassen 26 sub master_ipNotUsed { 27 if( $debug ) { 28 print "running master_ipNotUsed...\n"; 1 2 # 3 # 4 # aug 2002, jasper\@WirelessLeiden.NL 5 # 6 7 8 $now=localtime($unow=time()); 9 10 $config='/etc/wl/wleiden.conf'; 11 $domain='wLeiden.NET'; 12 13 $ifconfig='/sbin/ifconfig'; 14 $iwconfig='/sbin/iwconfig'; 15 $ipchains='/sbin/ipchains'; 16 $indexmaker='/usr/bin/indexmaker'; 17 $sroute='/sbin/route'; 18 $OSPFPWD='huppel'; 19 $separator=';'; 20 $author='feb 2003 jasper@WirelessLeiden.NL'; 21 $wicontrol='/usr/sbin/wicontrol'; 22 23 if ($functions_only) {goto functions;} 24 $source='/etc/wl/wleiden.pl'; 25 26 do($config) || die; 27 parse_config(); 28 29 30 $hostname=`/bin/hostname |cut -d . -f 1`;chomp($hostname); 31 $maxmask= pack("CCCC", 255, 255, 255, 255); 32 33 34 if (! $ARGV[0]) {die "use start/stop/startall";} 35 36 if ($ARGV[1]=~/debug/i) {$DEBUG=1;} 37 if ($ARGV[0]=~/start/i) 38 { 39 40 ###################################################################### 41 do_it(); 42 43 open_files(); 44 $nwcfg.="$indexmaker /etc/mrtg/mrtg.cfg> /var/www/html/mrtg/index.html 2> /dev/null\n"; 45 46 print_files();close_files(); 47 48 system("chmod 755 /etc/wl/nwcfg.sh;/etc/wl/nwcfg.sh"); 49 50 if ($DEBUG) {die "DEBUGGING!";} 51 52 if ($DEBUG) {print "\nDEBUG: making mrtg index.\n";} 53 54 changeline("/etc/sysconfig/dhcpd","DHCPDARGS","DHCPDARGS=\"$dhcpints\""); 55 56 #if ($DEBUG) {print "\nDEBUG: reloading firewall.\n";} 57 #$nwcfg.="/usr/local/sbin/firewall\n"; 58 59 if ($DEBUG) {print "\nDEBUG: restarting daemons.\n";} 60 61 if ($ARGV[0]=~/startall/) {$restart='restart';} 62 else {$restart='condrestart';} 63 $nwcfg.="/etc/init.d/dhcpd $restart\n"; 64 $nwcfg.="/etc/init.d/zebra $restart\n"; 65 $nwcfg.="/etc/init.d/ospfd $restart\n"; 66 $nwcfg.="/etc/init.d/httpd $restart\n"; 67 $nwcfg.="/etc/init.d/named $restart\n"; 68 69 70 ######################################################################## 71 } else # geen start -> stop 72 { 73 $nwcfg.="$ifconfig lo:1 down\n"; 74 75 foreach $if (keys %config) 76 { 77 $nwcfg.="$ifconfig $if down\n"; 29 78 } 30 foreach my $if (keys %config) { 31 if( $IP{$if} =~ /([0-9\.]+).*/ ) { 32 if( $1 eq $master_ip ) { 33 return(0); 34 }; 35 }; 36 }; 37 return(1); 38 }; 39 40 41 42 sub genHeader { 43 my $comment = $_[0]; 44 my $output = 45 "$comment This file specific to wireless\n" . 46 "$comment leiden. Please make all changes in Genesis.\n" . 47 "$comment\n" . 48 "$comment Generated by $source\n" . 49 "$comment on $time\n" . 50 "$comment\n" . 51 "$comment $author\n" . 52 "$comment\n\n\n"; 53 return ($output); 54 }; 55 56 57 sub txtconfig { 58 my $output = ""; 59 foreach $interface (keys %config) { 60 $output .= $config{$interface}; 61 }; 62 return($output); 63 }; 64 65 66 sub dhcpd_conf { 67 my $output = genHeader("#"); 68 $output .= 69 "option domain-name \"$domain\";\n" . 70 " \n" . 71 "default-lease-time 7200;\n" . 72 "max-lease-time 2592000;\n" . 73 "\n" . 74 "ddns-update-style none;\n" . 75 "\n" . 76 "# Hack for the WET11\n" . 77 "#\n" . 78 "always-broadcast on;\n" . 79 "\n" . 80 "option domain-name-servers ${master_ip};\n" . 81 "\n"; 82 83 foreach my $interface (sort keys %config) { 84 if( $interface =~ /^[a-z]+[0-9]+$/i ) { 85 (my $ip, my $netmask) = split('/', $IP{$interface}); 86 my $subnet = IP::toSubnet($netmask); 87 my $broadcast = IP::getBroadcastAddr($ip, $subnet); 88 my $network = IP::getNetworkAddr($ip, $subnet); 79 } 80 81 82 exit; 83 84 ######################################################################## 85 86 functions: 87 88 $ahum=1; 89 90 sub do_it 91 { 92 if ($OS=~/FreeBSD/i) {$FreeBSD=1;} 93 elsif ($OS=~/Linux/i) {$Linux=1;} 94 95 init_files(); 96 97 #system("/sbin/modprobe ipv6"); 98 #system("/sbin/modprobe ipchains"); 99 100 $nwcfg.="$ifconfig lo:1 down\n"; 101 #print "ifconfig lo:1 $master_ip\n"; 102 #$nwcfg.="$ifconfig lo:1 $master_ip netmask 255.255.255.255\n"; # altijd up! 103 104 $last=''; 105 foreach $if (sort {$b <=> $a} keys %config) 106 { 107 if ($TYPE{$if}=~/wireless/) {$last=$if} 108 } if ($last) {iwconfig("$last &> /dev/null");} # Laatste het eerste... 109 110 $keys=1; 111 foreach $if (sort keys %config) 112 { 113 if ($if=~/^([^:]+):(\d+)/) {$mymain=$1;$mysub=$2;} else {$mymain='';} 114 115 if ($functions_only<1) {print "Doing interface: $if IP: $IP{$if}\n";} 116 117 if ($if!~/:\d+/) {$main=1;} else {$main=0;} 118 119 ##################### DOWN 120 if ($DOWN{$if}=~/yes/) 121 { print "$if configured DOWN.\n"; 122 $nwcfg.="$ifconfig $if 127.0.0.1 down\n"; 123 124 if ($main) 125 { 126 $zebra1.=sprintf <<EOZ3; 127 128 interface $if 129 description $DESC{$if} 130 ip address 127.0.0.1/0 131 shutdown 132 133 EOZ3 134 $ospfd2{$if}.=" interface $if\n\n"; 135 } 136 next; # Interface down. 137 } 138 ##################### DOWN 139 if ($main) 140 { 141 $if=~/(\d+)/;$ifnum=$1; 142 $nick="${nodename}$ifnum.$domain"; 143 144 if ($TYPE{$if}=~/wireless/) 145 { 146 147 if ($SDESC{$if}) {$nick="$SDESC{$if}.$nick";} 148 #print "$nick\n"; 149 if (iwconfig("$if mode $MODE{$if}")) 150 { 151 if ($DEBUG) {print "\nDEBUG: iwconfig $if mode $MODE{$if} essid $ESSID{$if} nick $nick ap $AP{$if} channel $CHANNEL{$if} sens $SENS{$if} txpower $TXPOWER{$if} rate $RATE{$if}\n";} 152 iwconfig("$if essid $ESSID{$if}"); 153 iwconfig("$if nick $nick"); 154 155 $freebsd.=sprintf<<EOFB33; 156 $wicontrol -i $if -s $nick # Nickname 157 #$wicontrol -i $if -t 7 # TXrate 158 $wicontrol -i $if -P 0 # PowerSave 159 $wicontrol -i $if -Z # Zero SNR cache 160 EOFB33 161 if ($MODE{$if}=~/master/i) 162 { 163 $freebsd.=sprintf<<EOFB3; 164 $wicontrol -i $if -p 6 # hostap mode 165 $wicontrol -i $if -n $ESSID{$if} # network name 166 $wicontrol -i $if -q $ESSID{$if} # ESSID 167 $wicontrol -i $if -c 1 # broadcasting essid on 168 EOFB3 169 } else { 170 $freebsd.=sprintf<<EOFB4; 171 $wicontrol -i $if -p 1 # Client mode (managed) 172 $wicontrol -i $if -n $ESSID{$if} # ESSID 173 EOFB4 174 } 175 if ($AP{$if}) {iwconfig("$if ap $AP{$if}");} 89 176 90 $output .= 91 "# $interface $DESC{$interface}\n"; 92 93 if ( $DHCP{$interface} =~ /[0-9]+\-[0-9]+/i ) { 94 my $dhcp_part = $ip; 95 $dhcp_part =~ s/[0-9]+$//; 96 (my $dhcp_start, my $dhcp_stop) = $DHCP{$interface} =~ /([0-9]+)\-([0-9]+)/i; 97 $dhcp_start = $dhcp_part . $dhcp_start; 98 $dhcp_stop = $dhcp_part . $dhcp_stop; 99 $output .= 100 "subnet $network netmask $subnet {\n" . 101 " range $dhcp_start $dhcp_stop;\n" . 102 " option broadcast-address $broadcast;\n" . 103 " option subnet-mask $subnet;\n" . 104 " option routers $ip;\n" . 105 "}\n" . 106 "\n"; 107 } 108 else { 109 $output .= 110 "subnet $network netmask $subnet {not authoritative; }\n" . 111 "\n"; 112 }; 113 }; 114 }; 115 116 return($output); 117 }; 118 119 sub named_conf { 120 my $output = genHeader("#"); 121 $output .= 122 "options {\n" . 123 " directory \"/var/db/namedb\"\;\n" . 124 " forwarders {\n"; 125 foreach my $forward (@forwarder) { 126 $output .= "$forward;\n"; 127 }; 128 $output .= 129 " };\n" . 130 "};\n" . 131 "\n" . 132 "\n" . 133 "zone \"\.\" {\n" . 134 " type hint;\n" . 135 " file \"/etc/namedb/named.root\"\;\n" . 136 "}\;\n" . 137 "\n" . 138 "zone \"0\.0\.127\.IN-ADDR.ARPA\" {\n" . 139 " type master\;\n" . 140 " file \"/etc/namedb/localhost.rev\"\;\n" . 141 "}\;\n" . 142 "\n" . 143 "zone \"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT\" {\n" . 144 " type master\;\n" . 145 " file \"/etc/namedb/localhost-v6.rev\"\;\n" . 146 "};\n" . 147 "\n"; 148 149 150 foreach my $tmpZone (sort keys %zone) { 151 my $dnsZone = $zone{$tmpZone}; 152 $output .= 153 "zone \"$tmpZone\" {\n" . 154 " type slave\;\n" . 155 " file \"slave-$tmpZone\"\;\n" . 156 " masters {\n"; 157 foreach my $tmpIP (sort @$dnsZone) { 158 $output .= " $tmpIP\;\n"; 159 }; 160 $output .= 161 " };\n" . 162 "};\n" . 163 "\n"; 164 }; 165 166 return($output); 167 }; 168 169 170 171 sub rc_node_local { 172 my $output = genHeader("#"); 173 my $masterNotUsed = master_ipNotUsed(); 174 $output.= 175 "hostname=\"$nodetype$nodename.$domain\"\n" . 176 "location=\"$location\"\n" . 177 "\n"; 178 179 if( $tproxy ) { 180 if( $tproxy =~ m/\d+\.\d+\.\d+\.\d+\/\d+/ ) { 181 $output .= 182 "# Tproxy is ran on this system\n". 183 "tproxy_enable='YES'\n". 184 "tproxy_range='$tproxy'\n". 185 "\n"; 186 } 187 elsif( $tproxy !~ m/no/i ) { 188 $output .= "# WARNING - specification propably wrong - check " . 189 "genesis. It should be a pure CIDR\n"; 190 }; 191 }; 192 193 $output .= "ifconfig_lo0_alias0=\"inet 172.31.255.1/32\"\n"; 194 if( $masterNotUsed ) { 195 $output .= "ifconfig_lo0_alias1=\"inet $master_ip/32\"\n\n"; 177 if ($MODE{$if}=~/master/) { 178 if ($CHANNEL{$if}) { 179 $freebsd.="$wicontrol -i $if -f $CHANNEL{$if} # Channel\n"; 180 } else { 181 $freebsd .= "# WARNING - master but no channel defined.\n"; 182 }; 183 } else { 184 $freebsd.="# No channel - client follows\n# $wicontrol -i $if -f 0 # Channel\n"; 185 } 186 187 if ($SENS{$if}) {iwconfig("$if sens $SENS{$if}");} 188 if ($TXPOWER{$if}) {iwconfig("$if txpower $TXPOWER{$if}");} 189 if ($RATE{$if}) {iwconfig("$if rate $RATE{$if}");} 190 } #else { print "ERROR: Could not configure interface $if\n";next;} 191 192 $rcconf.="\nifconfig_$if=\"inet $IP{$if} -promisc\"\n"; 193 #$rcconf.="ifconfig_$if=\"inet $IP{$if} -promisc \"\n ssid $ESSID{$if} \\"\n"; 194 #if ($CHANNEL{$if}) {$rcconf.=" channel $CHANNEL{$if}";} 195 #$rcconf.="\\\n stationname $nick\"\n"; 196 #if ($MODE{$if}=~/master/) {$rcconf.="#mediaopt hostap\n";} 197 #$rcconf.="\n"; 198 199 $freebsd.="\n"; 200 } # if wireless 201 mrtg1(); 202 if ($OS=~/FreeBSD/) 203 { 204 $ospfd2{$if}.=sprintf <<EOO2; 205 206 interface $if 207 ip ospf message-digest-key 1 md5 $OSPFPWD 208 ip ospf authentication message-digest 209 ip ospf dead-interval 180 210 EOO2 211 212 $keys++; 213 214 $zebra.=sprintf <<EOZ2; 215 216 interface $if 217 description $DESC{$if} 218 no shutdown 219 EOZ2 220 } 221 222 } ###################### MAIN 223 224 if ($OS=~/Linux/) 225 { 226 $ospfd2{$if}.=sprintf <<EOO21; 227 228 interface $if 229 ip ospf message-digest-key 1 md5 $OSPFPWD 230 ip ospf authentication message-digest 231 EOO21 232 $keys++; 233 234 $zebra.=sprintf <<EOZ21; 235 236 interface $if 237 description $DESC{$if} 238 no shutdown 239 EOZ21 240 } 241 242 if ($IP{$if}) 243 { 244 $zebra.=sprintf " ip address $IP{$if}\n"; 245 ($ip,$netmask,$broadcast,$network,$width)=calc_ip($IP{$if}); 246 if ($netmask == '0.0.0.0') 247 {print "Forgot netmask in config $hostname $if: $IP{$if}!\n"; 248 die "Forgot netmask in config $hostname $if: $IP{$if}!\n"; 249 } 250 251 # if ($DEBUG) {print("\nDEBUG: $ifconfig $if $ip netmask $netmask broadcast $broadcast up\n");} 252 if ($DEBUG) {print("\nDEBUG: $if $ip $netmask $network $broadcast\n");} 253 254 if (! $main) {$nwcfg.="$ifconfig $mymain up\n";} 255 $nwcfg.="$ifconfig $if $ip down\n"; 256 $nwcfg.="$ifconfig $if $ip netmask $netmask broadcast $broadcast up\n"; 257 if ($main) 258 { 259 if ($TYPE{$if}!~/wireless/) {$rcconf.="\nifconfig_$if=\"inet $IP{$if}\"\n";} 260 } else {$rcconf.="ifconfig_${mymain}_alias${mysub}=\"inet $IP{$if}\"\n";} 261 } 262 if (($OS=~/Linux/) || ($main)) {$zebra.= "\n";} 263 264 if ($ROUTE{$if}) 265 { 266 if ($DEBUG) {print "\nDEBUG: ROUTE: $ROUTE{$if}\n";} 267 268 foreach $r (split(/$separator/,$ROUTE{$if})) 269 { 270 if ($DEBUG) {print "\nDEBUG: ROUTE2: $r\n";} 271 272 $r=~/([^\/ ]+)\/?(\S+)\s+(\S+)/; 273 $R="$1/$2";$gw=$3;$nm=$2; 274 ($route,$r_netmask,$r_broadcast,$r_network,$r_width)=calc_ip($R); 275 if ($R eq '0.0.0.0/0') 276 { $doit="$sroute add default gw $gw dev $mymain"; 277 $rcconf.="\ndefaultrouter=\"$gw\"\n\n"; 278 } 279 elsif ($nm eq 32) {$doit="$sroute add $route gw $gw dev $mymain";} 280 else {$doit="$sroute add -net $route netmask $r_netmask gw $gw dev $mymain";} 281 282 if ($DEBUG) {print "\nROUTE3: $doit\n";} 283 $nwcfg.="$doit\n"; 284 if ($R eq '0.0.0.0/0') {$ospfd3.=" default-information originate\n"} 285 else 286 { 287 $area=get_area($R); 288 $ospfd4.="! static route $R\nnetwork $R area $area\n\n"; 289 $NW{$area}.="$network/$width "; 290 } 291 $zebra.="ip route $r\n"; 292 } 293 } 294 295 ($ip,$netmask,$broadcast,$network,$width)=calc_ip($IP{$if}); 296 if (($DHCP{$if}) && ($DHCP{$if}!~/off|no/i)) 297 { 298 ($from,$upto)=split(/-/,$DHCP{$if}); 299 $ip=~/(^\d+\.\d+\.\d+)\.\d+$/; 300 $dip=$1; 301 $dhcp.=sprintf <<EOD2; 302 303 # 304 # $if $DESC{$if} 305 # 306 subnet $network netmask $netmask { 307 range $dip.$from $dip.$upto; 308 option broadcast-address $broadcast; 309 option subnet-mask $netmask; 310 option routers $ip; 311 $DHCP_STATIC{$if} 312 } 313 314 EOD2 315 if ($dhcpints!~/$mymain/) {$dhcpints.=" $mymain";} 316 } # DHCP 317 else 318 { 319 if ( ($main) ) #|| ($DHCP{$mymain}=~/off|no/i)) 320 { # niet als main wel dhcp heeft. 321 $dhcp.="subnet $network netmask $netmask {not authoritative; } # $if\n\n"; 322 } 323 } 324 if ($OSPF_NEIGHBORS{$if}=~/no/i) 325 { 326 if ($main) {$OSPF_PASSIVE{$if}=1;} 327 } 328 329 if ($OSPF_AREA{$if}!~/no/i) 330 { 331 ($ip,$netmask,$broadcast,$network,$width)=calc_ip($IP{$if}); 332 333 if ($IP{$if}) 334 { 335 # if (($OSPF_NEIGHBORS{$if}!~/no/) || 336 if ($OSPF_AREA{$if} eq '') {$area=get_area($network);} 337 else {$area=int($OSPF_AREA{$if});} 338 339 $ospfd4.="! $if ($DESC{$if})\nnetwork $network/$width area $area\n\n"; 340 $NW{$area}.="$network/$width "; 341 } 342 343 if ($OSPF_BROADCAST{$if}=~/no/i) 344 { 345 if ($main) 346 { 347 #if ($DEBUG) {print "DEBUG: OSPF_NEIGHBORS{$if}: ($OSPF1_NEIGHBORS{$if})\n";} 348 $OSPFD_NONBROADCAST{$if}=1; 349 } 350 if ($OSPF_NEIGHBORS{$if}!~/no/i) 351 { 352 foreach $n (split(/[\s$separator]+/,$OSPF_NEIGHBORS{$if})) 353 { 354 if ($DEBUG) {print "DEBUG: OSPF2_NEIGHBOR{$if}: [$n]\n";} 355 $ospfd5.="! $if link: $SDESC{$if}\n neighbor $n\n\n"; 356 } 357 if ($main) {$OSPF_PASSIVE{$if}=0;} 358 else {$OSPF_PASSIVE{$mymain}=0;} 359 } #ospf_neighbors 360 } 361 362 } # ospf_area 363 364 if ($POINT_TO_POINT{$if}) 365 { 366 foreach $p (split(/$separator/,$POINT_TO_POINT{$if})) 367 { 368 mrtg2(); 369 } #foreach $pointtopoint 370 } # pointopoint 371 } # foreach if 372 373 foreach $if (sort keys %config) 374 { 375 if ($if!~/:\d+/) {$main=1;} else {$main=0;} 376 if ($main) 377 { 378 $ospfd2.=$ospfd2{$if}; 379 if ($OSPF_PASSIVE{$if}) 380 { 381 $ospfd22.=" passive-interface $if\n"; 382 } 383 if ($OSPFD_NONBROADCAST{$if}) 384 { 385 $ospfd2.= " ip ospf network non-broadcast\n"; 386 } 387 if ($OSPF_COST{$if}) 388 { 389 $ospfd2.=" ip ospf cost $OSPF_COST{$if}\n"; 390 } 391 392 } 393 } 394 395 $zebra.= "\n\nlog file /var/log/zebra.log\n\n"; 396 397 foreach $area (keys %NW) 398 { 399 if ($area eq 0) {next;} 400 $nwa=0xffffffff; 401 foreach $nw (split(/\s+/,$NW{$area})) 402 { 403 ($ip,$width)=split(/\//,$nw); 404 ($a,$b,$c,$d)=split(/\./,$ip); 405 ($II)=($a<<24)+($b<<16)+($c<<8)+$d; 406 if ($width eq 32) {$nm=0xffffffff;} 407 else {$nm=0xffffffff-1<<(31-$width);} 408 409 $II=$II & $nm; 410 $nwa=$nwa & $II; 411 # $ospfd.=sprintf ("NW-$area: $nw ==> %08x enne %08x\n",$II,$nwa); 196 412 } 197 else { 198 $output .= "#ifconfig_lo0_alias1=\"inet $master_ip/32\"\n\n"; 199 }; 200 201 foreach my $interface (sort keys %config) { 202 (my $if, my $number) = split(/:/, $interface); 203 if( defined $number ) { 204 $output .= "ifconfig_$if\_alias$number=\"inet $IP{$interface}\""; 205 } 206 else { 207 $output .= "ifconfig_$if=\"inet $IP{$interface}\"\t"; 208 }; 209 ## add some extra link information 210 $output .= "\t# $DESC{$interface}\n"; 211 }; 212 return($output); 213 }; 214 215 sub rc_local { 216 my $output = genHeader("#"); 217 foreach my $if (sort keys %config) { 218 if( ($if =~ /^wi[0-9]$/i) and ($TYPE{$if} =~ /wireless/i) ) { 219 $output .= 220 "$wicontrol -i $if -s $SDESC{$if} # Nickname\n" . 221 "#$wicontrol -i $if -t 7 # TXrate\n" . 222 "$wicontrol -i $if -P 0 # PowerSave\n" . 223 "$wicontrol -i $if -Z # Zero SNR cache\n"; 224 if( $MODE{$if}=~/master/i ) { 225 $output .= 226 "$wicontrol -i $if -p 6 # hostap mode\n" . 227 "$wicontrol -i $if -c 1 # broadcasting essid on\n" . 228 "$wicontrol -i $if -n $ESSID{$if} # network name\n" . 229 "$wicontrol -i $if -q $ESSID{$if} # ESSID\n" . 230 "$wicontrol -i $if -f $CHANNEL{$if}# Channel\n"; 231 } 232 else { 233 $output .= 234 "$wicontrol -i $if -p 1 # Client mode (managed)\n" . 235 "$wicontrol -i $if -n $ESSID{$if} # ESSID\n" . 236 "# No channel - client follows\n" . 237 "# $wicontrol -i $if -f 0 # Channel\n"; 238 }; 239 $output .= "\n"; 240 }; 241 }; 242 return($output); 243 }; 244 245 246 247 sub resolv_conf { 248 my $output = genHeader"#"; 249 250 $output .= 251 "search wleiden.net.\n" . 252 "nameserver 127.0.0.1\n" . 253 "\n"; 254 255 foreach my $if (sort keys %config) { 256 if( exists $POINT_TO_POINT{$if} ) { 257 foreach my $ip ($POINT_TO_POINT{$if}) { 258 $output .= "nameserver $ip # $DESC{$if}\n"; 259 }; 260 }; 261 }; 262 return($output); 263 }; 264 265 266 267 sub snmpd_local_conf { 268 my $output = genHeader("#"); 269 my $masterNotUsed = master_ipNotUsed(); 270 $output .= 271 "# Location of the physical node.\n" . 272 "#\n" . 273 "syslocation \"$location\"\n" . 274 "#\n" . 275 "# Maintained by\n" . 276 "syscontact \"$contact\"\n" . 277 "\n"; 278 279 if( $DISK =~ /flash/i ) { 280 $output .= "# Verify that disk is RO\n"; 281 $output .= "sh diskro /usr/local/sbin/diskro.sh\n\n"; 282 }; 283 284 $output .= "agentaddress 161,tcp:161\n"; 285 286 if( $masterNotUsed ) { 287 $output .= "agentaddress $master_ip\n"; 288 }; 289 290 foreach my $if (keys %config) { 291 if( $IP{$if} =~ /([0-9\.]+).*/ ) { 292 $output .= "agentaddress $1\n"; 293 }; 294 }; 295 return($output); 296 }; 297 298 299 300 sub parse_config { 301 my $workingfile = $_[0]; 302 do($workingfile) || die("Cann't open/parse $workingfile"); 303 foreach my $if (keys %config) { 304 my $cfg=$config{$if}; 305 while ($cfg) { 306 $cfg=~s/^([^\n\r]+)[\r\n]*//m; 307 my $line=$1; 308 $line=~s/\s*#.*//; 309 if (((my $name, my $value)=split(/=/,$line)) eq 2) { 310 my $doit="if (exists(\$$name\{\"$if\"\})) {\$$name\{\"$if\"\}.=\";$value\";} else {\$$name\{\"$if\"\}.=\"$value\";}"; 311 eval($doit); 312 }; 313 $cfg=~s/[\r\n]*$//m; 413 $nwa=itoadr($nwa); 414 415 if ($AGGREGATE) {$agg=$AGGREGATE;} 416 else {$agg=21;} 417 418 if (($nwa!~/^172\.16\./) && ($area > 0)) 419 { $ospfarea.="area $area range $nwa/$agg substitute $nwa/$agg\n"; } 420 421 $ospf21.="! area $area authentication message-digest\n"; 422 } 423 424 425 $ospfd.=sprintf <<EOOL; 426 427 ! ================> interfaces <================ 428 429 $ospfd2 430 431 ! ================> OSPF router <================ 432 router ospf 433 ospf router-id $master_ip 434 $ospfd21 435 436 passive-interface lo0 437 $ospfd22 438 439 !default 440 $ospfd3 441 442 $ospfarea 443 444 ! ================> networks <================ 445 $ospfd4 446 447 ! ================> neighbors <================ 448 $ospfd5 449 450 log file /var/log/ospf.log 451 452 EOOL 453 # $rcconf.="\n\n" . $freebsd; 454 } 455 456 sub get_area 457 { 458 local($IP)=@_; 459 local($range); 460 local($ip,$netmask,$broadcast,$network,$width); 461 local($a,$b,$c,$d)=split(/\./,$IP); 462 local($II)=($a<<24)+($b<<16)+($c<<8)+$d; 463 local($ii,$ip,$nm,$I2); 464 465 # for ($i=0;$i<=$maxareas;$i++) 466 # { 467 # $ii=$II[$i]; 468 # $nm=$NM[$i]; 469 # $I2=$II & $nm; 470 ##$ospfd.=sprintf "i=$i\t $RANGE[$i]\t ii=$ii\t nm=$nm\t I2=$I2 $II $IP $a,$b,$c,$d\n"; 471 # if ($I2 == $ii) {return($AREA[$i]);} 472 # } 473 # return(12345); 474 475 $area=1; 476 if ($b eq 16) {$area=0;} 477 elsif ($c < 128) {$area=($b * 10)} 478 else {$area=(1+($b*10));} 479 if ($area > 255) {$area/=10;} 480 return($area); 481 } 482 483 484 sub read_areas 485 { 486 $maxareas=0; 487 open(AC,"$home/areas.conf") || die; 488 while (<AC>) 489 { 490 chomp(); 491 s/#.*$//; 492 if (! $_) {next;} 493 ($area,$range,$desc,$counter,$junk)=split(/\s+/); 494 $AREA[$maxareas]=$area; 495 $RANGE[$maxareas]=$range; 496 $DESC[$maxareas]=$desc; 497 498 ($ip,$width)=split(/\//,$range); 499 ($a,$b,$c,$d)=split(/\./,$ip); 500 $ii=($a<<24)+($b<<16)+($c<<8)+$d; 501 502 if ($width eq 32) {$nm=0xffffffff;} 503 else {$nm=0xffffffff-1<<(31-$width);} 504 $II[$maxareas]=$ii; 505 $NM[$maxareas]=$nm; 506 507 $maxareas++; 508 } 509 close(AC); 510 } 511 512 sub parse_config 513 { 514 foreach $if (keys %config) 515 { 516 $cfg=$config{$if}; 517 if (! $html) {print "Parsing interface: $if\n";} 518 while ($cfg) 519 { 520 $cfg=~s/^([^\n\r]+)[\r\n]*//m; 521 $line=$1; 522 $line=~s/\s*#.*//; 523 if ((($name,$value)=split(/=/,$line)) eq 2) 524 { 525 if ($name eq 'ESSID') {$value=lc($value);} 526 #print "VAL($name)=$value\n"; 527 $doit="if (exists(\$$name\{\"$if\"\})) {\$$name\{\"$if\"\}.=\"$separator$value\";} else {\$$name\{\"$if\"\}.=\"$value\";}"; 528 #print "DOIT: [$doit]\n"; 529 eval($doit); 530 } 531 #print "CFG:[$cfg]\n"; 532 $cfg=~s/[\r\n]*$//m; 533 } 534 } 535 if ($functions_only<1) {print "Done parsing config.\n";} 536 } 537 538 sub iwconfig 539 { 540 local($line)=@_; 541 $nwcfg.="$iwconfig $line\n"; 542 543 } 544 545 sub ipchains 546 { 547 local($line)=@_; 548 return(system("$ipchains $line")); 549 } 550 551 #($a,$b,$c,$d) = unpack('C4',$addr[0]); 552 553 #$IP = pack("CCCC", 152, 2, 128, 184); # create IP address 554 #($var1, $var2, $var3, $var4) = unpack("CCCC", $IP); #inverse of the above 555 556 557 558 sub calc_ip 559 { local($i)=@_; 560 local($a,$b,$c,$d); 561 local($ip,$width)=split(/\//,$i); 562 local($a,$b,$c,$d)=split(/\./,$ip); 563 local($ii)=($a<<24)+($b<<16)+($c<<8)+$d; 564 565 if ($width eq 32) {$nm=0xffffffff;} 566 else {$nm=0xffffffff-1<<(31-$width);} 567 $nw=($ii & $nm); 568 $br=$nw | (0xffffffff & ~$nm); 569 $netmask=itoadr($nm);; 570 $broadcast=itoadr($br);; 571 $network=itoadr($nw); # $i=itoadr($ii); 572 573 # printf "ip=$ip|width=$width|nm=%0x|$netmask|br=%0x|$broadcast|$i|\n",$nm,$br; 574 575 return($ip,$netmask,$broadcast,$network,$width); 576 } 577 578 sub itoadr 579 { 580 local($ip)=@_; 581 local($a,$b,$c,$d); 582 $a=($ip & 0xff000000) >> 24; 583 $b=($ip & 0x00ff0000) >> 16; 584 $c=($ip & 0x0000ff00) >> 8; 585 $d=($ip & 0x000000ff); 586 return("$a.$b.$c.$d"); 587 } 588 589 sub changeline 590 { 591 local($file,$old,$new)=@_; 592 open(OLD,$file) || die "Could not open old file: $file\n"; 593 open(NEW,">$file.genesis.$$") || die "Could not create new file: $file.genesis.$$"; 594 while(<OLD>) 595 { 596 if (/$old/) {print NEW "$new\n";} 597 else {print NEW $_;} 598 } 599 close(NEW); 600 close(OLD); 601 rename("$file.genesis.$$",$file) || die "Could not overwrite old file: $file"; 602 } 603 604 605 sub open_files 606 { 607 open (SH,">/etc/wireless.conf.sh"); # Voor firewall script. 608 open (NWCFG,">/etc/wl/nwcfg.sh"); # Voor network config 609 open (DHCP,">/etc/dhcpd.conf") || die "Could not create dhcpd.conf"; 610 open (ZEBRA,">/etc/zebra/zebra.conf") || die "Could not create zebra.conf"; 611 open (OSPFD,">/etc/zebra/ospfd.conf") || die "Could not create ospfd.conf"; 612 open (MRTG,">/etc/mrtg/mrtg.cfg") || die "Could not create mrtg.cfg"; 613 open (RCCONF,">/etc/rc.conf") || die "Could not create rc.conf"; 614 open (FREEBSD,">/etc/rc.node.conf") || die "Could not create rc.node.conf"; 615 open (RESOLV,">/etc/resolv.conf") || die "Could not create resolv.conf"; 616 open (NAMED,">/etc/named.conf") || die "Could not create named.conf"; 617 } 618 619 620 sub close_files 621 { 622 close (SH); 623 close (NWCFG); 624 close (DHCP); 625 close (ZEBRA); 626 close (OSPFD); 627 close (MRTG); 628 close(RCCONF); 629 close(FREEBSD); 630 close(RESOLV); 631 close(NAMED); 632 } 633 634 sub print_files 635 { 636 print SH $sh; 637 print NWCFG $nwcfg; 638 print DHCP $dhcp; 639 print ZEBRA $zebra; 640 print OSPFD $ospfd; 641 print MRTG $mrtg; 642 print RCFONG $rcconf; 643 print FREEBSD $freebsd; 644 print RESOLV $resolv; 645 print NAMED $named; 646 } 647 648 649 sub init_files 650 { 651 $sh=sprintf <<EOSH; 652 #! /bin/bash 653 # 654 # Generated by $source 655 # on $now 656 # 657 $svn_version 658 659 660 gw_open=$gw_open 661 EOSH 662 663 $nwcfg=sprintf <<EONW; 664 #! /bin/bash 665 # 666 # Generated by $source 667 # on $now 668 # 669 # DO NOT CHANGE! 670 # 671 # $author 672 # home: /etc/wl/nwcfg 673 # 674 $svn_version 675 676 EONW 677 678 679 $dhcp=sprintf <<EOD; 680 # dhcpd.conf 681 # 682 # Generated by $source 683 # on $now 684 # 685 # $author 686 # home: /usr/local/etc/dhcpd.conf 687 # 688 $svn_version 689 690 option domain-name "$domain"; 691 692 default-lease-time 7200; 693 max-lease-time 2592000; 694 695 ddns-update-style none; 696 697 # Hack for the WET11 698 # 699 always-broadcast on; 700 701 EOD 702 #foreach $ns (split(/\s+/,$NS_forward)) 703 # {$dhcp.="option domain-name-servers ${ns};\n";} 704 {$dhcp.="option domain-name-servers ${master_ip};\n";} 705 706 $dhcp.="\n\n"; 707 708 $zebra= sprintf <<EOZ; 709 ! -*- zebra -*- 710 ! 711 ! Zebra configuration for $hostname 712 ! 713 ! Generated by $source 714 ! on $now 715 ! 716 ! DO NOT CHANGE! 717 ! 718 ! $author 719 ! home=/usr/local/etc/zebra/zebra.conf 720 ! 721 $svn_version 722 723 hostname $hostname 724 password getronics 725 enable password getronics 726 727 ! Interfaces 728 729 interface lo0 730 description loopback 731 ip address 127.0.0.1/8 732 733 734 EOZ 735 736 $ospfd=init_ospfd(); 737 738 $mrtg=sprintf <<EOM; 739 740 # 741 # mrtg configuration for $hostname 742 # 743 # Generated by $source 744 # on $now 745 # 746 # DO NOT CHANGE! 747 # 748 # $author 749 # home=/etc/mrtg 750 # 751 $svn_version 752 753 Workdir: /var/www/html/mrtg 754 755 756 # 757 # 758 # 759 760 Target[${hostname}_load]: `/usr/local/sbin/cpuload.pl` 761 MaxBytes[${hostname}_load]: 1000 762 Title[${hostname}_load]: CPU load on $hostname 763 PageTop[${hostname}_load]: <H1>CPU load on ${hostname}</H1> 764 Options[${hostname}_load]: transparent, gauge, nopercent 765 Legendi[${hostname}_load]: 5min 766 Legendo[${hostname}_load]: 15min 767 ShortLegend[${hostname}_load]: % 768 YLegend[${hostname}_load]: % 769 WithPeak[${hostname}_load]: wmy 770 771 Target[${hostname}_mem]: `/usr/local/sbin/memusage.pl` 772 MaxBytes[${hostname}_mem]: 256000000 773 Title[${hostname}_mem]: Memory usage on ${hostname} 774 PageTop[${hostname}_mem]: <H1>Memory usage on ${hostname}</H1> 775 Options[${hostname}_mem]: transparent, gauge, nopercent 776 Legendi[${hostname}_mem]: free 777 Legendo[${hostname}_mem]: swap 778 ShortLegend[${hostname}_mem]: Bytes 779 YLegend[${hostname}_mem]: Bytes 780 WithPeak[${hostname}_mem]: wmy 781 782 Target[${hostname}_up]: `/usr/local/sbin/uptime.pl` 783 MaxBytes[${hostname}_up]: 10000 784 Title[${hostname}_up]: ${hostname} Uptime 785 PageTop[${hostname}_up]: <H1>${hostname} Uptime</H1> 786 Options[${hostname}_up]: transparent, gauge, nopercent 787 Legendi[${hostname}_up]: uptime 788 Legendo[${hostname}_up]: 789 ShortLegend[${hostname}_up]: Days 790 YLegend[${hostname}_up]: Days 791 WithPeak[${hostname}_up]: wmy 792 793 EOM 794 795 $master_ip_on_alias="ifconfig_lo0_alias1=\"inet $master_ip/32\""; 796 foreach my $if (keys %config) { 797 if( $IP{$if} =~ /([0-9\.]+).*/ ) { 798 if( $1 eq $master_ip ) { 799 $master_ip_on_alias="#ifconfig_lo0_alias1=\"inet $master_ip/32\""; 800 break; 314 801 }; 315 802 }; 316 803 }; 317 804 318 sub authorized_keys { 319 my $output = genHeader("#"); 320 if( -e "$global_keyPath" ) { 321 open( GLOBAL, "$global_keyPath" ) || die ("Cann't open $global_keyPath"); 322 $output .= join("", <GLOBAL>); 323 close( GLOBAL ); 324 } 325 else { 326 $output .= "# No $global_keyPath\n"; 327 }; 328 329 if( -e "$ndir/$nodetype$nodename/$ssh_file" ) { 330 open( NODE, "$ndir/$nodetype$nodename/$ssh_file" ) || die ("Cann't open $home/$nodename/$ssh_file"); 331 $output .= join("", <NODE>); 332 close( NODE ); 333 } 334 else { 335 $output .= "# No $ndir/$nodetype$nodename/$ssh_file\n"; 336 }; 337 338 return($output); 805 806 $rcconf.=sprintf <<EORC1; 807 # This file is read by /etc/rc.conf - and specific to wireless 808 # leiden. Please make all changes in Genesis. 809 # 810 # Generated by $source 811 # on $now 812 # 813 # $author 814 # 815 $svn_version 816 817 hostname="$hostname.wLeiden.NET" 818 location="$location" 819 820 ifconfig_lo0_alias0="inet 172.31.255.1/32" 821 $master_ip_on_alias 822 EORC1 823 824 if ($tproxy !~ m/no/i) { 825 $rcconf .= "# WARNING - specification propably wrong - check genesis. It should be a pure CIDR\n" 826 unless $tproxy =~ m/\d+\.\d+\.\d+\.\d+\/\d+/; 827 $rcconf .= "# Tproxy is ran on this system\n". 828 "tproxy_enable='YES'\n". 829 "tproxy_range='$tproxy'\n". 830 "\n"; 339 831 }; 340 832 341 sub do_it { 342 my $file = $_[0]; 343 my $body = ""; 344 345 $file =~ s/\./_/g; 346 $body=&$file; 347 return($body); 833 #$freebsd.=sprintf <<EOFB1; 834 # Wireless Leiden startup script om wireless kaarten te initialiseren 835 # 836 # Generated by $source 837 # on $now 838 # 839 # $author 840 # home=/etc/wl/freebsd.sh 841 # 842 #$svn_version 843 #EOFB1 844 845 $resolv.=sprintf <<EOR1; 846 search wleiden.net . 847 848 # Local machine / own nameserver. 849 nameserver 127.0.0.1 850 EOR1 851 852 #foreach $ns (split(/\s+/,$NS_resolv)) { 853 # $resolv.="nameserver $ns\n"; 854 #} 855 856 foreach $if (sort keys %config) { 857 foreach $ns (split(/[\s$separator]+/,$OSPF_NEIGHBORS{$if})) { 858 next unless $ns =~ m/\d+/; 859 $resolv.="# Nameserver on adjacent node - $DESC{$if} over $if\nnameserver $ns\n\n"; 860 }; 348 861 }; 349 862 350 if( exists $ARGV[0] ) { 351 if( exists $ARGV[1] ) { 352 parse_config($ARGV[0]); 353 print do_it($ARGV[1]); 354 } 355 else { 356 print "Usage `perl wleiden.pl 'inputfile' 'outputfile'`\n"; 863 864 865 $named.=sprintf <<EON1; 866 # named.conf 867 # 868 # Generated by $source 869 # on $now 870 # 871 # $author 872 # home=/etc/namedb/named.conf 873 # 874 $svn_version 875 876 options { 877 directory "/var/db/namedb"; 878 forward only; 879 forwarders { 880 172.17.8.68; // proxy1 881 172.17.143.4; // proxy2 882 172.20.128.98; // proxy3 883 // 172.18.8.66; // Internet GW Jasper 884 // 172.17.32.66; // Internet GW Dirkx 885 EON1 886 887 %x=(); 888 foreach $ns (split(/\s+/,$NS_forward)) { 889 next if $ns eq $master_ip; 890 $named.=" ${ns};\n"; 891 $x{ $ns } = 1; 892 } 893 894 foreach $if (sort keys %config) { 895 foreach $ns (split(/[\s$separator]+/,$OSPF_NEIGHBORS{$if})) { 896 next unless $ns =~ m/\d+/; 897 $x{ $ns } = 0; 898 }; 899 }; 900 901 #foreach(sort keys(%x)) { 902 # next if $x{$_}; 903 # $named.="// $_; // Next door Neighbour..\n"; 904 # } 905 906 $named.=sprintf <<EON2; 907 }; 908 }; 909 910 zone "." { 911 type hint; 912 file "/etc/namedb/named.root"; 913 }; 914 915 zone "0.0.127.IN-ADDR.ARPA" { 916 type master; 917 file "/etc/namedb/localhost.rev"; 918 }; 919 920 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { 921 type master; 922 file "/etc/namedb/localhost-v6.rev"; 923 }; 924 925 EON2 926 927 push (@ZONES,"wLeiden.NET"); 928 push (@ZONES,"wZoeterwoude.NET"); 929 for ($i=16;$i<32;$i++) {push(@ZONES,"$i.172.in-addr.arpa");} 930 foreach $zone (@ZONES) 931 { 932 $named.=sprintf<<EON3; 933 zone "$zone" { 934 type slave; 935 file "slave-$zone"; 936 masters { 937 172.21.16.99; // rambo 938 172.17.8.68; // proxy1 939 172.17.143.4; // proxy2 940 172.20.128.98; // proxy3 941 172.27.129.66; // Rick 942 172.18.8.66; // Jasper 943 }; 944 }; 945 946 EON3 947 } 948 949 950 $snmpd=<<EOM; 951 # /usr/local/share/snmp/snmpd.local.conf 952 # overwrites/augments the data in snmpd.conf 953 # which is identical on each node with data 954 # specific to this node. 955 # 956 # 957 #MIBS is not availible, commented by Rick van der Zwet 958 #mibs +LIGHT80211-MIB 959 EOM 960 961 $snmpd .= qq| 962 # Location of the physical node. 963 # 964 syslocation "$location" 965 966 | if defined $location; 967 968 $snmpd .= qq| 969 # Location of the physical node. 970 # 971 syscontact "$contact" 972 973 | if defined $contact; 974 975 $snmpd .= 976 "# Verify that disk is RO\n". 977 "sh diskro /usr/local/sbin/diskro.sh\n\n" 978 if ($DISK eq 'FLASH'); 979 980 $snmpd.=<<EOM; 981 982 # Also listen to tcp 983 agentaddress 161,tcp:161 984 EOM 985 986 my $master_ip_in_snmpd = "agentaddress $master_ip"; 987 foreach my $if (keys %config) { 988 if( $IP{$if} =~ /([0-9\.]+).*/ ) { 989 if($master_ip eq $1) {$master_ip_in_snmpd=""}; 990 $snmpd.=<<EOM; 991 agentaddress $1 992 EOM 357 993 }; 358 994 }; 359 995 360 1; 996 $snmpd.=<<EOM; 997 $master_ip_in_snmpd 998 999 # end of file 1000 EOM 1001 } 1002 1003 1004 1005 sub init_ospfd 1006 { 1007 1008 local($init)=sprintf <<EOO; 1009 ! -*- ospfd -*- 1010 ! 1011 ! osfpd configuration for $hostname 1012 ! 1013 ! Configuration generated by $source 1014 ! on $now 1015 ! 1016 ! DO NOT CHANGE! 1017 ! 1018 ! $author 1019 ! home=/usr/local/etc/zebra/ospfd.conf 1020 ! 1021 $svn_version 1022 1023 hostname $hostname 1024 password getronics 1025 enable password getronics 1026 1027 interface lo0 1028 EOO 1029 return($init); 1030 } 1031 1032 1033 sub mrtg1 1034 { 1035 $mrtg.=sprintf <<EOM2; 1036 Target[${if}_traf]: `/usr/local/sbin/ipchains_traf.pl ${if}` 1037 MaxBytes[${if}_traf]: $SPEED{$if} 1038 Title[${if}_traf]: Traffic Analysis ${if} $SDESC{$if} 1039 PageTop[${if}_traf]: <H1>Traffic on $if $DESC{$if}</H1> 1040 Options[${if}_traf]: transparent 1041 WithPeak[${if}_traf]: wmy 1042 1043 EOM2 1044 1045 if ($functions_only<1) 1046 { 1047 ipchains("-N ${if}-i"); 1048 ipchains("-N ${if}-o"); 1049 ipchains("-I input -i ${if} -j ${if}-i"); 1050 ipchains("-I output -i ${if} -j ${if}-o"); 1051 1052 } 1053 if ($TYPE{$if}=~/wireless/i) 1054 { 1055 $mrtg.=sprintf <<EOM3; 1056 Target[${if}_quality]: `/usr/local/sbin/wlan_quality.pl ${if}` 1057 MaxBytes1[${if}_quality]: 100 1058 MaxBytes2[${if}_quality]: 100 1059 Title[${if}_quality]: Quality $if $SDESC{$if} 1060 PageTop[${if}_quality]: <H1>Quality $if $DESC{$if}</H1> 1061 Options[${if}_quality]: transparent, gauge, nopercent 1062 Legendi[${if}_quality]: Quality 1063 Legendo[${if}_quality]: Noise 1064 ShortLegend[${if}_quality]: /100 1065 YLegend[${if}_quality]: /100 1066 WithPeak[${if}_quality]: wmy 1067 1068 Target[${if}_rate]: `/usr/local/sbin/wlan_bitrate.pl ${if}` 1069 MaxBytes1[${if}_rate]: 11 1070 MaxBytes2[${if}_rate]: 11 1071 Title[${if}_rate]: Bitrate $if $SDESC{$if} 1072 PageTop[${if}_rate]: <H1>Bitrate $if $DESC{$if}</H1> 1073 Options[${if}_rate]: transparent, gauge, nopercent 1074 Legendi[${if}_rate]: Bitrate 1075 ShortLegend[${if}_rate]: Mb/s 1076 YLegend[${if}_rate]: Mb/s 1077 WithPeak[${if}_rate]: wmy 1078 1079 EOM3 1080 if ($MODE{$if}=~/master/i) 1081 { 1082 $mrtg.=sprintf <<EOM4; 1083 Target[${if}_users]: `/usr/local/sbin/wlan_users.pl ${if}` 1084 MaxBytes[${if}_users]: 100 1085 Title[${if}_users]: Users on $if $SDESC{$if} 1086 PageTop[${if}_users]: <H1>Users on $if $DESC{$if}</H1> 1087 Options[${if}_users]: transparent, gauge, nopercent 1088 Legendi[${if}_users]: Users 1089 ShortLegend[${if}_users]: users 1090 YLegend[${if}_users]: users 1091 WithPeak[${if}_users]: wmy 1092 1093 EOM4 1094 } 1095 } # wireless 1096 1097 1098 } 1099 1100 sub mrtg2 1101 { 1102 $mrtg.=sprintf <<EOM5; 1103 Target[${if}_lat]: `/usr/local/sbin/latency.pl $p` 1104 MaxBytes1[${if}_lat]: 100 1105 MaxBytes2[${if}_lat]: 200 1106 Title[${if}_lat]: Latency/PktLoss Analysis to $p on $if $SDESC{$if} 1107 PageTop[${if}_lat]: <H1>Latency/PktLoss to $p on $if $DESC{$if}</H1> 1108 Options[${if}_lat]: transparent, gauge, nopercent 1109 Legendi[${if}_lat]: PacketLoss% 1110 Legendo[${if}_lat]: Max Latency (ms) 1111 ShortLegend[${if}_lat]: %/ms 1112 YLegend[${if}_lat]: %/ms 1113 WithPeak[${if}_lat]: wmy 1114 1115 EOM5 1116 1117 } 1118 1119 sub ahum 1120 { 1121 print "AHUM!\n"; 1122 } 1123 1124 #return(1); 1125
Note:
See TracChangeset
for help on using the changeset viewer.