#!/usr/local/bin/perl
# Force a zone transfer for a slave domain
require './bind8-lib.pl';
&ReadParse();
$zone = &get_zone_name($in{'index'}, $in{'view'});
&can_edit_zone($zone) ||
&error($text{'master_ecannot'});
# Get config object
$bconf = $conf = &get_config();
if ($in{'view'} ne '') {
$view = $conf->[$in{'view'}];
$conf = $view->{'members'};
}
$zconf = $conf->[$in{'index'}]->{'members'};
$file = &find_value("file", $zconf);
$desc = &ip6int_to_net(&arpa_to_ip($zone->{'name'}));
&ui_print_header($desc, $text{'xfer_title'}, "",
undef, undef, undef, undef, &restart_links($zone));
# Get master IPs
$masters = &find("masters", $zconf);
foreach $av (@{$masters->{'members'}}) {
push(@ips, join(" ", $av->{'name'}, @{$av->{'values'}}));
}
print &text('xfer_doing', join(" ", @ips)),"
\n";
$temp = &transname();
$rv = &transfer_slave_records($zone->{'name'}, \@ips, $temp);
foreach $ip (@ips) {
if ($rv->{$ip}) {
print &text('xfer_failed', $ip,
"".&html_escape($rv->{$ip}).""),
"
\n";
}
else {
print &text('xfer_done', $ip),"
\n";
}
}
print "
\n"; # Show records if (-r $temp) { @recs = &read_zone_file($temp, $zone->{'name'}.".", undef, undef, 0, 1); print &text('xfer_count', scalar(@recs)),"
\n"; } &unlink_file($temp); &ui_print_footer("edit_slave.cgi?index=$in{'index'}&view=$in{'view'}", $text{'master_return'});