%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.248 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/bind8/ |
Upload File : |
#!/usr/bin/perl # Show a list of free IP addresses, within the configured ranges use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; our (%config, %text); require './bind8-lib.pl'; # Go through all zones to find IPs in use, and networks my $conf = &get_config(); my @views = &find("view", $conf); my @zones; my %view; foreach my $v (@views) { my @vz = &find("zone", $v->{'members'}); map { $view{$_} = $v } @vz; push(@zones, @vz); } push(@zones, &find("zone", $conf)); my %taken; my %nets; foreach my $z (@zones) { my $type = &find_value("type", $z->{'members'}); next if ($type ne "master" && $type ne "primary"); my $file = &find_value("file", $z->{'members'}); my @recs = &read_zone_file($file, $z->{'value'}); foreach my $r (@recs) { if ($r->{'type'} eq 'A') { $taken{$r->{'values'}->[0]}++; my $net = $r->{'values'}->[0]; $net =~ s/\d+$/0/; if ($net ne "127.0.0.0") { $nets{$net}++; } } elsif ($r->{'type'} eq 'PTR') { $taken{&arpa_to_ip($r->{'values'}->[0])}++; } } } # Use configured networks, if any my @nets; if ($config{'free_nets'}) { @nets = split(/\s+/, $config{'free_nets'}); } else { @nets = keys %nets; } @nets = sort { $a cmp $b } @nets; # display list of free IPs in the nets &popup_header($text{'free_title'}); print "<script>\n"; print "function select(f)\n"; print "{\n"; print "top.opener.ifield.value = f;\n"; print "top.close();\n"; print "return false;\n"; print "}\n"; print "</script>\n"; print &ui_columns_start([ $text{'free_ip'} ], 100); foreach my $net (@nets) { my @netip = split(/\./, $net); my $start; my $end; if ($netip[3] eq "0") { $start = 1; $end = 255; } elsif ($netip[3] =~ /^(\d+)\-(\d+)$/) { $start = $1; $end = $2; } else { $start = $end = $netip[3]; } for(my $d=$start; $d<=$end; $d++) { my $ip = "$netip[0].$netip[1].$netip[2].$d"; if (!$taken{$ip}) { print &ui_columns_row([ &ui_link("", $ip, undef, "onClick='return select(\"$ip\");'") ]); } } } print &ui_columns_end(); &popup_footer();