update-index
changeset 33 d3269961e944
child 34 f5db9f4a3e76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/update-index	Fri Aug 13 17:00:37 2010 +0200
@@ -0,0 +1,68 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+use File::Basename;
+use FindBin;
+
+# liest die Konfiguration
+my @configs = ( "$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf" );
+my %config;
+
+for ( grep {-f} @configs ) {
+    open( CONFIG, $_ ) or die "Can't open $_: $!\n";
+}
+
+unless ( seek( CONFIG, 0, 0 ) ) {
+    die "Can't open config (searched: @configs)\n";
+}
+
+while (<CONFIG>) {
+    chomp;
+    s/#.*//;
+    s/\t//g;
+    s/\s//g;
+    next unless length;
+    my ( $cname, $ccont ) = split( /\s*=\s*/, $_, 2 );
+    $config{$cname} = $ccont;
+}
+close(CONFIG);
+
+my $master_dir = $config{master_dir};
+my $indexzone = $config{indexzone};
+my @iz_content_old = ();
+my @iz_content_new = ();
+my $iz_line;
+my $zone;
+
+unless ( -d $master_dir and -r $master_dir ) {
+    die "$master_dir: $!\n";
+}
+
+open (INDEXZONE, "$master_dir/$indexzone/$indexzone")
+    or die "$master_dir/$indexzone/$indexzone: $!\n";
+@iz_content_old = <INDEXZONE>,
+close (INDEXZONE);
+
+for (@iz_content_old) {
+    unless (m#ZONE::#) {
+        push @iz_content_new, $_;
+    }
+}
+
+
+for my $dir ( glob "$master_dir/*" ) {
+    $zone = basename($dir);
+
+    $iz_line = "\t\tIN TXT\t\t\"ZONE::$zone\"\n";
+
+    push @iz_content_new, $iz_line;
+}
+
+
+open (INDEXZONE, ">$master_dir/$indexzone/$indexzone")
+    or die "$master_dir/$indexzone/$indexzone: $!\n";
+print INDEXZONE @iz_content_new;
+close (INDEXZONE);
+
+print "index domain $indexzone updated \n";