Handle hostnames with upper-case letters
[webmin.git] / bind8 / xfer.cgi
1 #!/usr/local/bin/perl
2 # Force a zone transfer for a slave domain
3
4 require './bind8-lib.pl';
5 &ReadParse();
6 $zone = &get_zone_name($in{'index'}, $in{'view'});
7 &can_edit_zone($zone) ||
8         &error($text{'master_ecannot'});
9
10 # Get config object
11 $bconf = $conf = &get_config();
12 if ($in{'view'} ne '') {
13         $view = $conf->[$in{'view'}];
14         $conf = $view->{'members'};
15         }
16 $zconf = $conf->[$in{'index'}]->{'members'};
17 $file = &find_value("file", $zconf);
18
19 $desc = &ip6int_to_net(&arpa_to_ip($zone->{'name'}));
20 &ui_print_header($desc, $text{'xfer_title'}, "",
21                  undef, undef, undef, undef, &restart_links($zone));
22
23 # Get master IPs
24 $masters = &find("masters", $zconf);
25 foreach $av (@{$masters->{'members'}}) {
26         push(@ips, join(" ", $av->{'name'}, @{$av->{'values'}}));
27         }
28 print &text('xfer_doing', join(" ", @ips)),"<br>\n";
29 $temp = &transname();
30 $rv = &transfer_slave_records($zone->{'name'}, \@ips, $temp);
31 foreach $ip (@ips) {
32         if ($rv->{$ip}) {
33                 print &text('xfer_failed', $ip,
34                     "<font color=red>".&html_escape($rv->{$ip})."</font>"),
35                     "<br>\n";
36                 }
37         else {
38                 print &text('xfer_done', $ip),"<br>\n";
39                 }
40         }
41 print "<p>\n";
42
43 # Show records
44 if (-r $temp) {
45         @recs = &read_zone_file($temp, $zone->{'name'}.".", undef, undef, 0, 1);
46         print &text('xfer_count', scalar(@recs)),"<p>\n";
47         }
48 &unlink_file($temp);
49
50 &ui_print_footer("edit_slave.cgi?index=$in{'index'}&view=$in{'view'}",
51                  $text{'master_return'});