update-serial.pl
branchhs12
changeset 67 6adcf16d5cd6
parent 66 c44bc1c8e396
parent 65 ea0afdd6b026
child 70 bffb3f2cca90
equal deleted inserted replaced
66:c44bc1c8e396 67:6adcf16d5cd6
    19 sub update_index($);
    19 sub update_index($);
    20 sub sign_expired($);
    20 sub sign_expired($);
    21 sub need_rollover();
    21 sub need_rollover();
    22 sub done_rollover();
    22 sub done_rollover();
    23 sub begin_rollover(@);
    23 sub begin_rollover(@);
    24 sub kill_useless_keys($);
    24 sub unlink_unused_keys($);
    25 
    25 
    26 sub sign_zone;
    26 sub sign_zone;
    27 sub update_serial;
    27 sub update_serial;
    28 sub mk_zone_conf;
    28 sub mk_zone_conf;
    29 sub file_entry;
    29 sub file_entry;
   472 
   472 
   473         open($fh, ">$dir/.keycounter") or die "$dir/.keycounter: $!\n";
   473         open($fh, ">$dir/.keycounter") or die "$dir/.keycounter: $!\n";
   474         say $fh 0;
   474         say $fh 0;
   475         close($fh);
   475         close($fh);
   476 
   476 
   477         kill_useless_keys($zone);
   477         unlink_unused_keys($zone);
   478         &key_to_zonefile($zone);
   478         &key_to_zonefile($zone);
   479         push @r, $zone;
   479         push @r, $zone;
   480     }
   480     }
   481 
   481 
   482     return @r;
   482     return @r;
   506     open(ZONEFILE, ">$zpf/$zone") or die "$zpf/$zone: $!\n";
   506     open(ZONEFILE, ">$zpf/$zone") or die "$zpf/$zone: $!\n";
   507     print ZONEFILE @new_content;
   507     print ZONEFILE @new_content;
   508     close(ZONEFILE);
   508     close(ZONEFILE);
   509 }
   509 }
   510 
   510 
   511 sub kill_useless_keys($) {
   511 sub unlink_unused_keys($) {
   512 
   512 
   513     # die funktion loescht alle schluessel die nicht in der index.zsk
   513     # die funktion loescht alle schluessel die nicht in der index.zsk
   514     # der uebergebenen zone stehen
   514     # der uebergebenen zone stehen
   515     my $zone = shift;
   515     my $zone = shift;
   516 
   516 
   517     my @keys = ();
   517     my @keys;
   518     my $dir  = "$config{master_dir}/$zone";
   518     my $dir  = "$config{master_dir}/$zone";
   519 
   519 
   520     {
   520     {
   521 	# collect the keys and cut everything except the key id
   521 	# collect the keys and cut everything except the key id
       
   522 	# we cut the basenames (w/o the .private|.key suffix)
   522         open(my $zsk, "<$dir/.index.zsk") or die "$dir/.index.zsk: $!\n";
   523         open(my $zsk, "<$dir/.index.zsk") or die "$dir/.index.zsk: $!\n";
   523         open(my $ksk, "<$dir/.index.ksk") or die "$dir/.index.ksk: $!\n";
   524         open(my $ksk, "<$dir/.index.ksk") or die "$dir/.index.ksk: $!\n";
   524 	@keys = map { basename $_, ".private", ".key" } (<$zsk>, <$ksk>);
   525 	@keys = (<$zsk>, <$ksk>);
   525     }
   526     }
   526 
       
   527     ### @keys
       
   528 
   527 
   529     # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
   528     # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen
   530     # indexdatei beschrieben sind. wenn nicht werden sie geloescht.
   529     # indexdatei beschrieben sind. wenn nicht werden sie geloescht.
   531     # ---- <><><><>
   530     for my $file (glob "$dir/K*.key $dir/K*.private") {
   532     for my $file (grep /(?:key|private)$/ => glob "$config{master_dir}/$zone/K*") {
   531 	unlink $file if basename($file, ".key", ".private") ~~ @keys;
   533 	$file = basename $file, ".private", ".key";
       
   534 	unlink "$file.key", "$file.private" if $file ~~ @keys;
       
   535     }
   532     }
   536 }
   533 }
   537 
   534 
   538 sub end_ro {
   535 sub end_ro {
   539     our @end_ro_list;
   536     our @end_ro_list;
   557         if ($count > 1) {
   554         if ($count > 1) {
   558             open(INDEX, ">$config{master_dir}/$zone/.index.zsk");
   555             open(INDEX, ">$config{master_dir}/$zone/.index.zsk");
   559             print INDEX $last_key;
   556             print INDEX $last_key;
   560             close(INDEX);
   557             close(INDEX);
   561         }
   558         }
   562         kill_useless_keys($zone);
   559         unlink_unused_keys($zone);
   563         &key_to_zonefile($zone);
   560         &key_to_zonefile($zone);
   564         push @new_serial, $zone;
   561         push @new_serial, $zone;
   565     }
   562     }
   566 }
   563 }
   567 
   564