added local mode
authorheiko
Fri, 23 May 2014 14:27:40 +0200
changeset 13 75e4219b5980
parent 12 8ec11d83f469
child 14 0f37544f1b98
added local mode
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] <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.