--- 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] <zone>
+ vidns [-l] [-k key] [-s server] [-d] <zone>
=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<server-name>
The name of the server to contact for the AXFR and the update.