dnssec-creatkey
changeset 31 1cea07056124
parent 30 5ac92c1ffdf9
child 32 d1addc2ec712
--- 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 (<KEY>) {
                 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 (<STDIN> =~ m/^yes/) {
+    unless ( <STDIN> =~ 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;
                 }