From bcbbb1fda669f7fcb13407c58baa62caed5bb432 Mon Sep 17 00:00:00 2001 From: Jorj Bauer Date: Sun, 22 Nov 2020 11:56:59 -0500 Subject: [PATCH] needed a way to also remove old entries that have been abandoned --- bin/sync-slave | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/bin/sync-slave b/bin/sync-slave index 5cd3f3d..f8306ab 100755 --- a/bin/sync-slave +++ b/bin/sync-slave @@ -10,8 +10,11 @@ my $force = shift; # a "force" flag, if the update is big my $ddns = Martnet::DDNS->new(); my @vh = $ddns->get(); +my %vhh = map { $_->{zone} => 1 } @vh; my @all = parse_slavefile("/etc/bind/martnet.slave.zones.9"); +my %allh = all_zones_hash(@all); +use Data::Dumper; # For each virtual host, see if we've got it already my $changecount = 0; @@ -21,7 +24,12 @@ foreach my $i (@vh) { } } -die "Cowardly refusing to make a big update automatically" +foreach my $i (keys %allh) { + $changecount++ + unless ($vhh{$i}); +} + +die "Cowardly refusing to make a big update automatically [$changecount]" if ($changecount > 10 && !$force); if ($changecount) { @@ -66,6 +74,16 @@ sub do_rewrite { system("/usr/sbin/rndc reload"); } +sub all_zones_hash { + my (@zl) = @_; + + my %ret; + foreach my $i (@zl) { + $ret{$i->{zone}}++; + } + return %ret; +} + sub contains_zone { my ($zone, @zl) = @_;