diff -r 5ac92c1ffdf9 -r 1cea07056124 dnssec-creatkey --- a/dnssec-creatkey Wed Aug 11 14:08:33 2010 +0200 +++ b/dnssec-creatkey Thu Aug 12 10:18:58 2010 +0200 @@ -3,6 +3,12 @@ use strict; 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; @@ -35,7 +41,6 @@ my $zone; my $keyname; - # prueft ob eingaben in ARGV domains sind und gibt sie in die liste @manu for (@ARGV) { chomp( my $zone = `idn --quiet "$_"` ); @@ -51,13 +56,14 @@ # prueft ob zonen mit schluesselmaterial ueber index- und keycounterdatei # verfuegen. # legt .index.ksk an falls nicht und gibt die entsprechende zone in die -# liste @change +# liste @change while (<$master_dir/*>) { chomp( $zone = $_ ); - if (-f "$zone/.index.zsk" and - -f "$zone/.index.ksk" and - -f "$zone/.keycounter") { + if ( -f "$zone/.index.zsk" + and -f "$zone/.index.ksk" + and -f "$zone/.keycounter" ) + { next; } @@ -65,26 +71,25 @@ if (m#^K#) { my $file_in_zone = $_; - open (KEY,$_) or die "$_: $!\n"; + open( KEY, $_ ) or die "$_: $!\n"; for () { if (m#DNSKEY.257#) { $file_in_zone =~ s#(/.*/)(.*).key#$2#; - open (INDEX, ">$zone/.index.ksk") or die; + open( INDEX, ">$zone/.index.ksk" ) or die; print INDEX "$file_in_zone\n"; - close (INDEX); + close(INDEX); $zone =~ s#($master_dir/)(.*)#$2#; push( @change, $zone ); } } - close (KEY); + close(KEY); } } } - # gibt alle zonen mit abgelaufenen keycounter in die liste @change while (<$master_dir/*>) { chomp( $zone = $_ ); @@ -105,7 +110,7 @@ } #erzeugt zsks -for ( @change, @manu ) { +for ( &del_double( @change, @manu ) ) { $zone = $_; chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; @@ -139,14 +144,14 @@ } #erzeugt ksks -for (@manu) { +for ( &del_double(@manu) ) { $zone = $_; chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; $keyname = `dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $zone`; print "creat new KSK for $zone? (no): "; - unless ( =~ m/^yes/) { + unless ( =~ m/^yes/ ) { next; } @@ -176,7 +181,7 @@ # loescht alle unbenoetigten schluessel, fuegt die schluessel in # die zone-datei -for ( @change, @manu ) { +for ( &del_double( @change, @manu ) ) { $zone = $_; my @old_zone_content = (); my @new_zone_content = (); @@ -201,7 +206,7 @@ # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie # besser vergleichen zu koennen. - for (@kkeylist, @zkeylist) { + for ( @kkeylist, @zkeylist ) { chomp; s#K.*\+.*\+(.*)#$1#; } @@ -231,7 +236,8 @@ if ( $file =~ /.*key/ ) { $file =~ s#/.*/(K.*)#$1#; - push @new_zone_content, "\$INCLUDE \"$file\"\t\t; dnssec-zsk\n" ; + push @new_zone_content, + "\$INCLUDE \"$file\"\t\t; dnssec-zsk\n"; last; } @@ -247,7 +253,8 @@ if ( $file =~ /.*key/ ) { $file =~ s#/.*/(K.*)#$1#; - push @new_zone_content, "\$INCLUDE \"$file\"\t\t; dnssec-ksk\n" ; + push @new_zone_content, + "\$INCLUDE \"$file\"\t\t; dnssec-ksk\n"; last; }