# HG changeset patch # User Matthias Förste foerste@schlittermann.de # Date 1313412484 -7200 # Node ID 6c4ec099c4a89689624370f6720fb5d3754f137b # Parent 1c208b4d0a79b747583612c4590add92ba1e107d split out local.pm diff -r 1c208b4d0a79 -r 6c4ec099c4a8 ius/local.pm --- /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: