local.pm.ex
changeset 11 d1dd256c037a
child 13 82ecd75a4ee2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/local.pm.ex	Wed Nov 30 06:55:20 2005 +0000
@@ -0,0 +1,58 @@
+# Example
+# $Id$
+# $URL$
+
+# remove the next line if you know, what you're doing
+die "Sure?  You should adapt this file to your needs!";
+
+package local;
+
+# in:	zone name
+#       src ip
+# out:  0 failure ($@ contains message)
+#      !0 ok      ($@ may contain message)
+sub addZone($$) {
+    my ($zone, $src) = @_;
+
+    my $txt = <<__;
+// Autoadded %time by $0
+zone "$zone" IN {
+    type slave;
+    file "/var/cache/bind/slave/$zone";
+    masters { %masters; };
+    allow-query { any; };
+    allow-transfer { none; };
+};
+
+__
+
+    $txt =~ s/%time/scalar localtime/eg;
+    $txt =~ s/%masters/$src/g;
+
+    if (-f ($_ = "/etc/bind/zones.auto/$zone")) {
+	$@ = "$_ already exists";
+	return 0;
+    }
+
+    open(OUT, $_ = ">$_") or die "Can't open $_: $!\n";
+    print OUT $txt;
+
+    open(OUT, $_ = ">>/etc/bind/zones.all") or die "Can't open $_: $!\n";
+    print OUT $txt;
+
+    close OUT;
+
+    # return 0 == system("rndc reload");
+    local @ARGV = qw(/var/run/bind/run/named.pid);
+    chomp($_ = <>);
+    warn "Sending HUP to $_\n";
+    $@ = "Nameserver reloaded (HUP sent)";
+    kill "HUP", $_ and return 1;
+
+    $@ = "No process $_";
+    return 0;
+}
+	
+
+1;
+# vim:sts=4 sw=4 aw ai sm: