diff -r d3158de72598 -r d50f6874b7ab dnssec-sign --- a/dnssec-sign Thu Dec 02 16:46:17 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; -use FindBin; - -sub del_double { - my %all; - grep { $all{$_} = 0 } @_; - return ( keys %all ); -} - -# liest die Konfiguration ein -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 () { - 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 $sign_alert_time = $config{sign_alert_time}; -my $zone; -my ( @manu, @auto ); -my @zone_sig_content; -my $sig_date; -my $kc; -my $serial_up = 0; - -for (@ARGV) { - if ( $_ eq "-s" ) { - $serial_up = 1; - shift @ARGV; - } -} - -# prueft zonen aus ARGV und fuegt sie in die liste @manu ein -for (@ARGV) { - chomp( my $zone = `idn --quiet "$_"` ); - - if ( -e "$master_dir/$zone/.keycounter" ) { - push @manu, $zone; - } -} - -chomp( my $unixtime = `date +%s` ); -$unixtime = $unixtime + ( 3600 * $sign_alert_time ); -my $time = `date -d \@$unixtime +%Y%m%d%H`; - -# vergleicht fuer alle zonen im ordner $master_dir mit einer -# .signed-datei den zeitpunkt in $time mit dem ablaufdatum der -# signatur, welcher aus der datei .signed ausgelesen wird. -for (<$master_dir/*>) { - s#($master_dir/)(.*)#$2#; - $zone = $_; - - if ( -e "$master_dir/$zone/$zone.signed" ) { - - open( ZONE, "$master_dir/$zone/$zone.signed" ); - @zone_sig_content = ; - close(ZONE); - - for (@zone_sig_content) { - if (m#SOA.*[0-9]{14}#) { - s#.*([0-9]{10})([0-9]{4}).*#$1#; - if ( $_ < $time ) { - push @auto, $zone; - `touch $master_dir/$zone/$zone` - } - } - } - } -} - -#gibt zonen mit schluessel aber ohne signatur in die liste @auto -#for (<$master_dir/*>) { -# s#($master_dir/)(.*)#$2#; -# $zone = $_; -# -# if ( -e "$master_dir/$zone/.keycounter" ) { -# -# open( KC, "$master_dir/$zone/.keycounter" ); -# $kc = ; -# close(KC); -# -# if ( $kc < 1 ) { -# push @auto, $zone; -# } -# } -#} - -# signiert alle zonen in @auto und @manu und erhoeht den wert in -# der keycounter-datei -for ( &del_double( @auto, @manu ) ) { - $zone = $_; - - chdir "$master_dir/$zone"; - - if (`dnssec-signzone $zone 2>/dev/null`) { - print "$zone neu signiert \n"; - - open( KC, "$master_dir/$zone/.keycounter" ); - $kc = ; - close(KC); - $kc += 1; - open( KC, ">$master_dir/$zone/.keycounter" ); - print KC $kc; - close(KC); - - } - else { - print "$zone konnte nicht signiert werden \n"; - } -} -