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 |