From 865bb55ee60d8fdc73c5a7603cbf4b70fe0621ae Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sun, 10 Aug 2008 02:44:24 +0000 Subject: [PATCH] Delete slave zones in automatic view --- bind8/bind8-lib.pl | 9 ++++----- bind8/delete_zone.cgi | 6 +++++- bind8/list_slaves.cgi | 7 +++++-- bind8/mass_delete.cgi | 4 +++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/bind8/bind8-lib.pl b/bind8/bind8-lib.pl index 450668eb2..2efe90a25 100644 --- a/bind8/bind8-lib.pl +++ b/bind8/bind8-lib.pl @@ -2223,12 +2223,12 @@ foreach $slave (@slaves) { return @slaveerrs; } -# delete_on_slaves(domain, [&slave-hostnames]) +# delete_on_slaves(domain, [&slave-hostnames], [local-view]) # Delete some domain or all or listed slave servers sub delete_on_slaves { -local $dom = $_[0]; -local %on = map { $_, 1 } @{$_[1]}; +local ($dom, $slavehosts, $localview) = @_; +local %on = map { $_, 1 } @$slavehosts; &remote_error_setup(\&slave_error_handler); local $slave; local @slaveerrs; @@ -2248,8 +2248,7 @@ foreach $slave (&list_slave_servers()) { if ($slave->{'bind8_view'} eq "*") { # Same as on master .. but for now, don't pass in any view # so that it will be found automatically - # XXX - $view = undef; + $view = $localview; } elsif ($slave->{'bind8_view'}) { # Named view diff --git a/bind8/delete_zone.cgi b/bind8/delete_zone.cgi index 7886a6695..eff1e5eda 100755 --- a/bind8/delete_zone.cgi +++ b/bind8/delete_zone.cgi @@ -8,6 +8,10 @@ $conf = &get_config(); if ($in{'view'} ne '') { $view = $conf->[$in{'view'}]; $conf = $view->{'members'}; + $viewname = $view->{'values'}->[0]; + } +else { + $viewname = undef; } $zconf = $conf->[$in{'index'}]; &can_edit_zone($zconf, $view) || @@ -140,7 +144,7 @@ foreach $u (keys %wusers) { # Also delete from slave servers if ($in{'onslave'} && $access{'remote'}) { - @slaveerrs = &delete_on_slaves($zconf->{'value'}); + @slaveerrs = &delete_on_slaves($zconf->{'value'}, undef, $viewname); if (@slaveerrs) { &error(&text('delete_errslave', "

".join("
", map { "$_->[0]->{'host'} : $_->[1]" } diff --git a/bind8/list_slaves.cgi b/bind8/list_slaves.cgi index ceacd5c24..0f956581c 100755 --- a/bind8/list_slaves.cgi +++ b/bind8/list_slaves.cgi @@ -27,8 +27,11 @@ if (@servers) { push(@cols, $s->{'host'}. ($s->{'nsname'} ? " ($s->{'nsname'})" : "")); push(@cols, $s->{'sec'} ? $text{'yes'} : $text{'no'}); - push(@cols, $s->{'bind8_view'} || - "$text{'slaves_noview'}"); + push(@cols, $s->{'bind8_view'} eq '*' ? + "$text{'slaves_sameview'}" : + $s->{'bind8_view'} ? + $s->{'bind8_view'} : + "$text{'slaves_noview'}"); push(@cols, $s->{'desc'}); ($type) = grep { $_->[0] eq $s->{'type'} } @servers::server_types; diff --git a/bind8/mass_delete.cgi b/bind8/mass_delete.cgi index 7fe69d2ca..ed4200c4d 100755 --- a/bind8/mass_delete.cgi +++ b/bind8/mass_delete.cgi @@ -82,9 +82,11 @@ else { # Also delete from slave servers if ($in{'onslave'} && $access{'remote'}) { + $viewname = $view ? $view->{'values'}->[0] : undef; print &text('massdelete_slaves', $zconf->{'value'}),"
\n"; - @slaveerrs = &delete_on_slaves($zconf->{'value'}); + @slaveerrs = &delete_on_slaves( + $zconf->{'value'}, undef, $viewname); if (@slaveerrs) { print $text{'massdelete_failed'},"
\n"; foreach $s (@slaveerrs) {