--- /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: