# HG changeset patch # User heiko # Date 1400848060 -7200 # Node ID 75e4219b5980457806d9581fe70748a31167137d # Parent 8ec11d83f4694c9750bfb40100d393aa11eba9be added local mode diff -r 8ec11d83f469 -r 75e4219b5980 bin/dnsvi --- a/bin/dnsvi Fri May 23 14:19:02 2014 +0200 +++ b/bin/dnsvi Fri May 23 14:27:40 2014 +0200 @@ -13,6 +13,7 @@ sub main { my %o = ( + local => undef, key => undef, server => undef, debug => undef, @@ -23,6 +24,7 @@ 'k|key=s' => \$o{key}, 's|server=s' => \$o{server}, 'd|debug!' => \$o{debug}, + 'l|local!' => \$o{local}, 'editor=s' => \$o{editor}, ) && @ARGV == 1 @@ -30,7 +32,7 @@ my $zone = shift @ARGV; - $o{server} = (split ' ', `dig +short soa $zone`)[0] + $o{server} = $o{local} ? 'localhost' : (split ' ', `dig +short soa $zone`)[0] if not defined $o{server}; my @dig = ( @@ -62,7 +64,7 @@ (grep { $_->{rrtype} eq 'SOA' } map { $_->{rrset} } @zone1)[0]; my @cmds = ( - "server $o{server}", + $o{local} ? () : "server $o{server}", "prereq yxrrset @{$orig_soa}{qw{label rrtype data}}", (map { "update delete $_" } @$del), (map { "update add $_" } @$add), @@ -83,7 +85,9 @@ 'nsupdate', defined $o{debug} ? ('-d') : (), defined $o{key} ? (-k => $o{key}) : (), + defined $o{local} ? ('-l') : (), ); + open(my $nsupdate, '|-') or do { exec @nsupdate; die "Can't exec @nsupdate: $!\n"; @@ -105,7 +109,7 @@ =head1 SYNOPSIS - vidns [-k key] [-s server] [-d] + vidns [-l] [-k key] [-s server] [-d] =head1 DESCRIPTION @@ -116,6 +120,11 @@ =over +=item B<-l>|B<--local> + +Local mode, when running on the server where the updates need to go to. +But still zone transfers need to be enabled! (default: off) + =item B<-s>|B<--server> B The name of the server to contact for the AXFR and the update.