--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ius/local.pm Mon Aug 15 14:48:04 2011 +0200
@@ -0,0 +1,61 @@
+# 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) = @_;
+
+ # Filename ist für das File selbst und auch für die Konfig
+ (my $file = $zone) =~ s/[\/&|]/_/g;
+
+ my $txt = <<__;
+// Autoadded %time by $0
+zone "$zone" IN {
+ type slave;
+ file "/etc/bind/s/$file";
+ masters { %masters; };
+ allow-query { any; };
+ allow-transfer { none; };
+};
+
+__
+
+ $txt =~ s/%time/scalar localtime/eg;
+ $txt =~ s/%masters/$src/g;
+
+ if (-f ($_ = "/etc/bind/zones.d/$file")) {
+ $@ = "$_ 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: