dnssec-creatkey
changeset 29 ef4b45dd7618
parent 28 4807ad9b8d19
child 30 5ac92c1ffdf9
equal deleted inserted replaced
28:4807ad9b8d19 29:ef4b45dd7618
   178 # die zone-datei
   178 # die zone-datei
   179 for ( @change, @manu ) {
   179 for ( @change, @manu ) {
   180     $zone = $_;
   180     $zone = $_;
   181     my @old_zone_content = ();
   181     my @old_zone_content = ();
   182     my @new_zone_content = ();
   182     my @new_zone_content = ();
   183     my @keylist          = ();
   183     my @kkeylist         = ();
       
   184     my @zkeylist         = ();
   184     my $file             = ();
   185     my $file             = ();
   185 
   186 
   186     open( INDEX, "<$master_dir/$zone/.index.zsk" )
   187     open( INDEX, "<$master_dir/$zone/.index.zsk" )
   187         or die "$master_dir/$zone/.index.zsk: $!\n";
   188         or die "$master_dir/$zone/.index.zsk: $!\n";
   188     @keylist = <INDEX>;
   189     @zkeylist = <INDEX>;
   189     close(INDEX);
   190     close(INDEX);
   190 
   191 
   191     open( INDEX, "<$master_dir/$zone/.index.ksk" )
   192     open( INDEX, "<$master_dir/$zone/.index.ksk" )
   192         or die "$master_dir/$zone/.index.ksk: $!\n";
   193         or die "$master_dir/$zone/.index.ksk: $!\n";
   193     push @keylist, <INDEX>;
   194     @kkeylist = <INDEX>;
   194     close(INDEX);
   195     close(INDEX);
   195 
   196 
   196     open( ZONE, "<$master_dir/$zone/$zone" )
   197     open( ZONE, "<$master_dir/$zone/$zone" )
   197         or die "$master_dir/$zone/$zone: $!\n";
   198         or die "$master_dir/$zone/$zone: $!\n";
   198     @old_zone_content = <ZONE>;
   199     @old_zone_content = <ZONE>;
   199     close(ZONE);
   200     close(ZONE);
   200 
   201 
   201     # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie
   202     # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie
   202     # besser vergleichen zu koennen.
   203     # besser vergleichen zu koennen.
   203     for (@keylist) {
   204     for (@kkeylist, @zkeylist) {
   204         chomp;
   205         chomp;
   205         s#K.*\+.*\+(.*)#$1#;
   206         s#K.*\+.*\+(.*)#$1#;
   206     }
   207     }
   207 
   208 
   208     # filtert alle schluessel aus der zonedatei
   209     # filtert alle schluessel aus der zonedatei
   209     # old_zone_content ==> new_zone_content
   210     # old_zone_content ==> new_zone_content
   210     for (@old_zone_content) {
   211     for (@old_zone_content) {
   211         unless (/IN\sDNSKEY/) {
   212         unless (/dnssec-(zsk|ksk)/) {
   212             push @new_zone_content, $_;
   213             push @new_zone_content, $_;
   213         }
   214         }
   214     }
   215     }
   215 
   216 
   216     # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
   217     # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
   218     for (`ls $master_dir/$zone/K*[key,private]`) {
   219     for (`ls $master_dir/$zone/K*[key,private]`) {
   219         chomp;
   220         chomp;
   220         $file = $_;
   221         $file = $_;
   221         my $rm_count = 1;
   222         my $rm_count = 1;
   222 
   223 
   223         for (@keylist) {
   224         for (@zkeylist) {
   224 
   225 
   225             if ( $file =~ /$_/ ) {
   226             if ( $file =~ /$_/ ) {
   226                 $rm_count = 0;
   227                 $rm_count = 0;
   227 
   228 
   228                 # schluessel die in der indexdatei standen, werden an die
   229                 # schluessel die in der indexdatei standen, werden an die
   229                 # zonedatei angehangen.
   230                 # zonedatei angehangen.
   230                 if ( $file =~ /.*key/ ) {
   231                 if ( $file =~ /.*key/ ) {
   231                     open( KEYFILE, "<$file" ) or next "$file: $!\n";
   232 
   232                     push @new_zone_content, <KEYFILE>;
   233                     $file =~ s#/.*/(K.*)#$1#;
   233                     close(KEYFILE);
   234                     push @new_zone_content, "\$include $file\t\t; dnssec-zsk\n" ;
       
   235 
       
   236                     last;
       
   237                 }
       
   238             }
       
   239         }
       
   240         for (@kkeylist) {
       
   241 
       
   242             if ( $file =~ /$_/ ) {
       
   243                 $rm_count = 0;
       
   244 
       
   245                 # schluessel die in der indexdatei standen, werden an die
       
   246                 # zonedatei angehangen.
       
   247                 if ( $file =~ /.*key/ ) {
       
   248 
       
   249                     $file =~ s#/.*/(K.*)#$1#;
       
   250                     push @new_zone_content, "\$include $file\t\t; dnssec-ksk\n" ;
   234 
   251 
   235                     last;
   252                     last;
   236                 }
   253                 }
   237             }
   254             }
   238         }
   255         }