update-index
changeset 38 d50f6874b7ab
parent 37 d3158de72598
child 39 8b46e7c48995
child 43 7e472c559b36
child 45 5dc44dc86f61
equal deleted inserted replaced
37:d3158de72598 38:d50f6874b7ab
     1 #! /usr/bin/perl
       
     2 
       
     3 use strict;
       
     4 use warnings;
       
     5 use File::Basename;
       
     6 use FindBin;
       
     7 
       
     8 # liest die Konfiguration
       
     9 my @configs = ( "$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf" );
       
    10 my %config;
       
    11 
       
    12 for ( grep {-f} @configs ) {
       
    13     open( CONFIG, $_ ) or die "Can't open $_: $!\n";
       
    14 }
       
    15 
       
    16 unless ( seek( CONFIG, 0, 0 ) ) {
       
    17     die "Can't open config (searched: @configs)\n";
       
    18 }
       
    19 
       
    20 while (<CONFIG>) {
       
    21     chomp;
       
    22     s/#.*//;
       
    23     s/\t//g;
       
    24     s/\s//g;
       
    25     next unless length;
       
    26     my ( $cname, $ccont ) = split( /\s*=\s*/, $_, 2 );
       
    27     $config{$cname} = $ccont;
       
    28 }
       
    29 close(CONFIG);
       
    30 
       
    31 my $master_dir = $config{master_dir};
       
    32 my $indexzone = $config{indexzone};
       
    33 my @iz_content_old = ();
       
    34 my @iz_content_new = ();
       
    35 my $iz_line;
       
    36 my $zone;
       
    37 
       
    38 unless ( -d $master_dir and -r $master_dir ) {
       
    39     die "$master_dir: $!\n";
       
    40 }
       
    41 
       
    42 open (INDEXZONE, "$master_dir/$indexzone/$indexzone")
       
    43     or die "$master_dir/$indexzone/$indexzone: $!\n";
       
    44 @iz_content_old = <INDEXZONE>,
       
    45 close (INDEXZONE);
       
    46 
       
    47 for (@iz_content_old) {
       
    48     unless (m#ZONE::#) {
       
    49         push @iz_content_new, $_;
       
    50     }
       
    51 }
       
    52 
       
    53 
       
    54 for my $dir ( glob "$master_dir/*" ) {
       
    55     $zone = basename($dir);
       
    56     my $info_end = "::sec-off";
       
    57 
       
    58     if (-e "$dir/.keycounter") {
       
    59         $info_end = "::sec-on";
       
    60     }
       
    61 
       
    62     $iz_line = "\t\tIN TXT\t\t\"ZONE::$zone$info_end\"\n";
       
    63 
       
    64     push @iz_content_new, $iz_line;
       
    65 }
       
    66 
       
    67 
       
    68 open (INDEXZONE, ">$master_dir/$indexzone/$indexzone")
       
    69     or die "$master_dir/$indexzone/$indexzone: $!\n";
       
    70 print INDEXZONE @iz_content_new;
       
    71 close (INDEXZONE);
       
    72 
       
    73 print "index domain $indexzone updated \n";