dnssec-killkey
changeset 27 d5337081ed02
parent 26 0342c09abf97
child 29 ef4b45dd7618
--- a/dnssec-killkey	Thu Aug 05 10:49:36 2010 +0200
+++ b/dnssec-killkey	Mon Aug 09 11:45:43 2010 +0200
@@ -3,104 +3,107 @@
 use strict;
 use FindBin;
 
-
 # liest die Konfiguration ein
-my @configs = ("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf");
+my @configs = ( "$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf" );
 my %config;
 
-for (grep {-f} @configs) {
-        open(CONFIG, $_) or die "Can't open $_: $!\n";
+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"
+unless ( seek( CONFIG, 0, 0 ) ) {
+    die "Can't open config (searched: @configs)\n";
 }
 
 while (<CONFIG>) {
-        chomp;
-        s/#.*//;
-        s/\t//g;
-        s/\s//g;
+    chomp;
+    s/#.*//;
+    s/\t//g;
+    s/\s//g;
 
-        next unless length;
-        my ($cname, $ccont) = split (/\s*=\s*/, $_,2);
-        $config{$cname} = $ccont;
+    next unless length;
+    my ( $cname, $ccont ) = split( /\s*=\s*/, $_, 2 );
+    $config{$cname} = $ccont;
 }
-close (CONFIG);
+close(CONFIG);
 
-my $master_dir = $config{master_dir};
+my $master_dir  = $config{master_dir};
 my $ablauf_zeit = $config{abl_zeit};
 my $zone;
 my @status;
 my @auto;
-chomp (my $now_time=`date +%s`);	# aktuelle unixzeit
-
+chomp( my $now_time = `date +%s` );    # aktuelle unixzeit
 
 # prueft zonen aus ARGV und loescht das schluesselmaterial
 for (@ARGV) {
-        chomp ($zone = `idn --quiet $_`);
-	my $zdir = "$master_dir/$zone";
-	unless (-e "$master_dir/$zone") {
-                print "$zone ist keine verwaltete zone \n";
-        } else {
-		if (-e "$zdir/$zone.signed") { unlink "$zdir/$zone.signed"}
-		if (-e "$zdir/.keycounter") { unlink "$zdir/.keycounter"}
-		if (-e "$zdir/.index.ksk") { unlink "$zdir/.index.ksk"}
-		if (-e "$zdir/.index.zsk") { unlink "$zdir/.index.zsk"}
-		if (-e "$zdir/dsset-$zone.") { unlink "$zdir/dsset-$zone."}
-		if (-e "$zdir/keyset-$zone.") { unlink "$zdir/keyset-$zone."}
-		for (`ls $master_dir/$zone/K*[key,private]`){ unlink $_}
-        }
+    chomp( $zone = `idn --quiet $_` );
+    my $zdir = "$master_dir/$zone";
+    unless ( -e "$master_dir/$zone" ) {
+        print "$zone ist keine verwaltete zone \n";
+    }
+    else {
+        if ( -e "$zdir/$zone.signed" )  { unlink "$zdir/$zone.signed" }
+        if ( -e "$zdir/.keycounter" )   { unlink "$zdir/.keycounter" }
+        if ( -e "$zdir/.index.ksk" )    { unlink "$zdir/.index.ksk" }
+        if ( -e "$zdir/.index.zsk" )    { unlink "$zdir/.index.zsk" }
+        if ( -e "$zdir/dsset-$zone." )  { unlink "$zdir/dsset-$zone." }
+        if ( -e "$zdir/keyset-$zone." ) { unlink "$zdir/keyset-$zone." }
+        for (`ls $master_dir/$zone/K*[key,private]`) { unlink $_ }
+    }
 }
 
 # beendet den key-rollover
 for (<$master_dir/*>) {
-	$zone = $_;
-	$zone =~ s#($master_dir/)(.*)#$2#;
+    $zone = $_;
+    $zone =~ s#($master_dir/)(.*)#$2#;
 
-	my @index = ();
-	my $index_wc;
+    my @index = ();
+    my $index_wc;
 
-	# prueft nach der ".index.zsk"-datei und erstellt den zeitpunkt
-	# an dem das key-rollover endet. - $status[9]
-	if (-e "$master_dir/$zone/.index.zsk") {
-		@status = stat("$master_dir/$zone/.index.zsk");
-		$status[9] += (3600 * $ablauf_zeit);
-	}
-	else {
-		next;
-	}
+    # prueft nach der ".index.zsk"-datei und erstellt den zeitpunkt
+    # an dem das key-rollover endet. - $status[9]
+    if ( -e "$master_dir/$zone/.index.zsk" ) {
+        @status = stat("$master_dir/$zone/.index.zsk");
+        $status[9] += ( 3600 * $ablauf_zeit );
+    }
+    else {
+        next;
+    }
 
-	# prueft ob das key-rollover-ende erreicht ist
-	unless ($status[9] < $now_time ) {
-		next;
-	}
+    # prueft ob das key-rollover-ende erreicht ist
+    unless ( $status[9] < $now_time ) {
+        next;
+    }
 
-	# prueft die anzahl der schluessel in der ".index.zsk"
-	# loescht alte schluessel
-	open (INDEX, "$master_dir/$zone/.index.zsk") or die "$master_dir/$zone/.index.zsk: $!\n";
-	@index = <INDEX>;
-	$index_wc = @index;
-	close (INDEX);
-	if ($index_wc > 1) {
-		open (INDEX, ">$master_dir/$zone/.index.zsk")or die "$master_dir/$zone/.index.zsk: $!\n";
-		print INDEX $index[1];
-		close (INDEX);
-		push @auto, $zone;
-	}
+    # prueft die anzahl der schluessel in der ".index.zsk"
+    # loescht alte schluessel
+    open( INDEX, "$master_dir/$zone/.index.zsk" )
+        or die "$master_dir/$zone/.index.zsk: $!\n";
+    @index    = <INDEX>;
+    $index_wc = @index;
+    close(INDEX);
+    if ( $index_wc > 1 ) {
+        open( INDEX, ">$master_dir/$zone/.index.zsk" )
+            or die "$master_dir/$zone/.index.zsk: $!\n";
+        print INDEX $index[1];
+        close(INDEX);
+        push @auto, $zone;
+    }
 
-	# prueft die anzahl der schluessel in der ".index.ksk"
-	# loescht alte schluessel
-	open (INDEX, "$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
-	@index = <INDEX>;
-	$index_wc = @index;
-	close (INDEX);
-	if ($index_wc > 1) {
-		open (INDEX, ">$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
-		print INDEX $index[1];
-		close (INDEX);
-		push @auto, $zone;
-	}
+    # prueft die anzahl der schluessel in der ".index.ksk"
+    # loescht alte schluessel
+    open( INDEX, "$master_dir/$zone/.index.ksk" )
+        or die "$master_dir/$zone/.index.ksk: $!\n";
+    @index    = <INDEX>;
+    $index_wc = @index;
+    close(INDEX);
+    if ( $index_wc > 1 ) {
+        open( INDEX, ">$master_dir/$zone/.index.ksk" )
+            or die "$master_dir/$zone/.index.ksk: $!\n";
+        print INDEX $index[1];
+        close(INDEX);
+        push @auto, $zone;
+    }
 
 }
 
@@ -108,72 +111,76 @@
 # unbenoetigte schluessel entfernt und die vorhandenen schluessel in die
 # zonedatei geschrieben.
 for (@auto) {
-	my $zone = $_;
-	my @old_zone_content = ();
-	my @new_zone_content = ();
-	my @keylist = ();
-	my $file;
+    my $zone             = $_;
+    my @old_zone_content = ();
+    my @new_zone_content = ();
+    my @keylist          = ();
+    my $file;
 
-	open (INDEX, "$master_dir/$zone/.index.zsk") or die "$master_dir/$zone/.index.zsk: $!\n";
-	@keylist = <INDEX>;
-	close (INDEX);
+    open( INDEX, "$master_dir/$zone/.index.zsk" )
+        or die "$master_dir/$zone/.index.zsk: $!\n";
+    @keylist = <INDEX>;
+    close(INDEX);
 
-	open (INDEX, "$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
-	push @keylist, <INDEX>;
-	close (INDEX);
+    open( INDEX, "$master_dir/$zone/.index.ksk" )
+        or die "$master_dir/$zone/.index.ksk: $!\n";
+    push @keylist, <INDEX>;
+    close(INDEX);
 
-	open (ZONE, "$master_dir/$zone/$zone") or die "$master_dir/$zone/$zone: $!\n";
-	@old_zone_content = <ZONE>;
-	close (ZONE);
+    open( ZONE, "$master_dir/$zone/$zone" )
+        or die "$master_dir/$zone/$zone: $!\n";
+    @old_zone_content = <ZONE>;
+    close(ZONE);
 
-	# kuerzt die schluessel-bezeichnung aus der indexdatei auf die
-	# id um sie besser vergleichen zu koennen.
-	for (@keylist) {
-		chomp;
-		s#K.*\+.*\+(.*)#$1#;
-	}
+    # kuerzt die schluessel-bezeichnung aus der indexdatei auf die
+    # id um sie besser vergleichen zu koennen.
+    for (@keylist) {
+        chomp;
+        s#K.*\+.*\+(.*)#$1#;
+    }
 
-	# filtert alle schluessel aus der zonedatei
-	# old_zone_content ==> new_zone_content
-	for (@old_zone_content) {
-		unless (/IN\sDNSKEY/) {
-			push @new_zone_content, $_;
-		}
-	}
+    # filtert alle schluessel aus der zonedatei
+    # old_zone_content ==> new_zone_content
+    for (@old_zone_content) {
+        unless (/IN\sDNSKEY/) {
+            push @new_zone_content, $_;
+        }
+    }
 
-	# prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
-	# indexdatei beschrieben sind. wenn nicht werden sie geloescht.
-	for (`ls $master_dir/$zone/K*[key,private]`){
-		chomp;
-		$file = $_;
-		my $rm_count = 1;
+    # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
+    # indexdatei beschrieben sind. wenn nicht werden sie geloescht.
+    for (`ls $master_dir/$zone/K*[key,private]`) {
+        chomp;
+        $file = $_;
+        my $rm_count = 1;
+
+        for (@keylist) {
 
-		for (@keylist) {
+            if ( $file =~ /$_/ ) {
+                $rm_count = 0;
 
-			if ($file =~ /$_/) {
-				$rm_count = 0;
+                # schluessel die in der indexdatei standen, werden an die
+                # zonedatei angehangen.
+                if ( $file =~ /.*key/ ) {
+                    open( KEYFILE, "$file" ) or die "$file: $!\n";
+                    push @new_zone_content, <KEYFILE>;
+                    close(KEYFILE);
 
-				# schluessel die in der indexdatei standen, werden an die
-				# zonedatei angehangen.
-				if ($file =~ /.*key/) {
-					open (KEYFILE, "$file") or die "$file: $!\n";
-					push @new_zone_content, <KEYFILE>;
-					close (KEYFILE);
-					
-					last;
-				}
-			}
-		}
+                    last;
+                }
+            }
+        }
 
-		#loescht alle unbenoetigten schluessel
-		if ($rm_count == 1) {
-			print `rm -f $file`;
-		}
-	}
+        #loescht alle unbenoetigten schluessel
+        if ( $rm_count == 1 ) {
+            print `rm -f $file`;
+        }
+    }
 
-	open (ZONE, ">$master_dir/$zone/$zone") or die "$master_dir/$zone/$zone: $!\n";
-	print ZONE @new_zone_content;
-	close (ZONE);
-	
-	print "$master_dir/$zone/$zone wurde neu erstellt \n";
+    open( ZONE, ">$master_dir/$zone/$zone" )
+        or die "$master_dir/$zone/$zone: $!\n";
+    print ZONE @new_zone_content;
+    close(ZONE);
+
+    print "$master_dir/$zone/$zone wurde neu erstellt \n";
 }