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