--- 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";
}