dnssec-killkey
changeset 26 0342c09abf97
parent 25 c02caf4e0eb6
child 27 d5337081ed02
equal deleted inserted replaced
25:c02caf4e0eb6 26:0342c09abf97
    38 
    38 
    39 # prueft zonen aus ARGV und loescht das schluesselmaterial
    39 # prueft zonen aus ARGV und loescht das schluesselmaterial
    40 for (@ARGV) {
    40 for (@ARGV) {
    41         chomp ($zone = `idn --quiet $_`);
    41         chomp ($zone = `idn --quiet $_`);
    42 	my $zdir = "$master_dir/$zone";
    42 	my $zdir = "$master_dir/$zone";
    43         if (-e "$master_dir/$zone") {
    43 	unless (-e "$master_dir/$zone") {
    44 
    44                 print "$zone ist keine verwaltete zone \n";
       
    45         } else {
    45 		if (-e "$zdir/$zone.signed") { unlink "$zdir/$zone.signed"}
    46 		if (-e "$zdir/$zone.signed") { unlink "$zdir/$zone.signed"}
    46 		if (-e "$zdir/.keycounter") { unlink "$zdir/.keycounter"}
    47 		if (-e "$zdir/.keycounter") { unlink "$zdir/.keycounter"}
    47 		if (-e "$zdir/.index.ksk") { unlink "$zdir/.index.ksk"}
    48 		if (-e "$zdir/.index.ksk") { unlink "$zdir/.index.ksk"}
    48 		if (-e "$zdir/.index.zsk") { unlink "$zdir/.index.zsk"}
    49 		if (-e "$zdir/.index.zsk") { unlink "$zdir/.index.zsk"}
    49 		if (-e "$zdir/dsset-$zone.") { unlink "$zdir/dsset-$zone."}
    50 		if (-e "$zdir/dsset-$zone.") { unlink "$zdir/dsset-$zone."}
    50 		if (-e "$zdir/keyset-$zone.") { unlink "$zdir/keyset-$zone."}
    51 		if (-e "$zdir/keyset-$zone.") { unlink "$zdir/keyset-$zone."}
    51 
       
    52 		for (`ls $master_dir/$zone/K*[key,private]`){ unlink $_}
    52 		for (`ls $master_dir/$zone/K*[key,private]`){ unlink $_}
    53 
       
    54         } else {
       
    55                 print "$zone ist keine verwaltete zone \n";
       
    56         }
    53         }
    57 }
    54 }
    58 
    55 
    59 # beendet den key-rollover
    56 # beendet den key-rollover
    60 for (<$master_dir/*>) {
    57 for (<$master_dir/*>) {
    67 	# prueft nach der ".index.zsk"-datei und erstellt den zeitpunkt
    64 	# prueft nach der ".index.zsk"-datei und erstellt den zeitpunkt
    68 	# an dem das key-rollover endet. - $status[9]
    65 	# an dem das key-rollover endet. - $status[9]
    69 	if (-e "$master_dir/$zone/.index.zsk") {
    66 	if (-e "$master_dir/$zone/.index.zsk") {
    70 		@status = stat("$master_dir/$zone/.index.zsk");
    67 		@status = stat("$master_dir/$zone/.index.zsk");
    71 		$status[9] += (3600 * $ablauf_zeit);
    68 		$status[9] += (3600 * $ablauf_zeit);
    72 	} else { next; }
    69 	}
       
    70 	else {
       
    71 		next;
       
    72 	}
    73 
    73 
    74 	# prueft ob das key-rollover-ende erreicht ist
    74 	# prueft ob das key-rollover-ende erreicht ist
    75 	unless ($status[9] < $now_time ) {
    75 	unless ($status[9] < $now_time ) {
    76 		next;
    76 		next;
    77 	}
    77 	}
    78 
    78 
    79 	# prueft die anzahl der schluessel in der ".index.zsk"
    79 	# prueft die anzahl der schluessel in der ".index.zsk"
    80 	# loescht alte schluessel
    80 	# loescht alte schluessel
    81 	open (INDEX, "$master_dir/$zone/.index.zsk");
    81 	open (INDEX, "$master_dir/$zone/.index.zsk") or die "$master_dir/$zone/.index.zsk: $!\n";
    82 	@index = <INDEX>;
    82 	@index = <INDEX>;
    83 	$index_wc = @index;
    83 	$index_wc = @index;
    84 	close (INDEX);
    84 	close (INDEX);
    85 	if ($index_wc > 1) {
    85 	if ($index_wc > 1) {
    86 		open (INDEX, ">$master_dir/$zone/.index.zsk");
    86 		open (INDEX, ">$master_dir/$zone/.index.zsk")or die "$master_dir/$zone/.index.zsk: $!\n";
    87 		print INDEX $index[1];
    87 		print INDEX $index[1];
    88 		close (INDEX);
    88 		close (INDEX);
    89 		push @auto, $zone;
    89 		push @auto, $zone;
    90 	}
    90 	}
    91 
    91 
    92 	# prueft die anzahl der schluessel in der ".index.ksk"
    92 	# prueft die anzahl der schluessel in der ".index.ksk"
    93 	# loescht alte schluessel
    93 	# loescht alte schluessel
    94 	open (INDEX, "$master_dir/$zone/.index.ksk");
    94 	open (INDEX, "$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
    95 	@index = <INDEX>;
    95 	@index = <INDEX>;
    96 	$index_wc = @index;
    96 	$index_wc = @index;
    97 	close (INDEX);
    97 	close (INDEX);
    98 	if ($index_wc > 1) {
    98 	if ($index_wc > 1) {
    99 		open (INDEX, ">$master_dir/$zone/.index.ksk");
    99 		open (INDEX, ">$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
   100 		print INDEX $index[1];
   100 		print INDEX $index[1];
   101 		close (INDEX);
   101 		close (INDEX);
   102 		push @auto, $zone;
   102 		push @auto, $zone;
   103 	}
   103 	}
   104 
   104 
   112 	my @old_zone_content = ();
   112 	my @old_zone_content = ();
   113 	my @new_zone_content = ();
   113 	my @new_zone_content = ();
   114 	my @keylist = ();
   114 	my @keylist = ();
   115 	my $file;
   115 	my $file;
   116 
   116 
   117 	open (INDEX, "$master_dir/$zone/.index.zsk");
   117 	open (INDEX, "$master_dir/$zone/.index.zsk") or die "$master_dir/$zone/.index.zsk: $!\n";
   118 	@keylist = <INDEX>;
   118 	@keylist = <INDEX>;
   119 	close (INDEX);
   119 	close (INDEX);
   120 
   120 
   121 	open (INDEX, "$master_dir/$zone/.index.ksk");
   121 	open (INDEX, "$master_dir/$zone/.index.ksk") or die "$master_dir/$zone/.index.ksk: $!\n";
   122 	push @keylist, <INDEX>;
   122 	push @keylist, <INDEX>;
   123 	close (INDEX);
   123 	close (INDEX);
   124 
   124 
   125 	open (ZONE, "$master_dir/$zone/$zone");
   125 	open (ZONE, "$master_dir/$zone/$zone") or die "$master_dir/$zone/$zone: $!\n";
   126 	@old_zone_content = <ZONE>;
   126 	@old_zone_content = <ZONE>;
   127 	close (ZONE);
   127 	close (ZONE);
   128 
   128 
   129 	# kuerzt die schluessel-bezeichnung aus der indexdatei auf die
   129 	# kuerzt die schluessel-bezeichnung aus der indexdatei auf die
   130 	# id um sie besser vergleichen zu koennen.
   130 	# id um sie besser vergleichen zu koennen.
   154 				$rm_count = 0;
   154 				$rm_count = 0;
   155 
   155 
   156 				# schluessel die in der indexdatei standen, werden an die
   156 				# schluessel die in der indexdatei standen, werden an die
   157 				# zonedatei angehangen.
   157 				# zonedatei angehangen.
   158 				if ($file =~ /.*key/) {
   158 				if ($file =~ /.*key/) {
   159 					open (KEYFILE, "$file");
   159 					open (KEYFILE, "$file") or die "$file: $!\n";
   160 					push @new_zone_content, <KEYFILE>;
   160 					push @new_zone_content, <KEYFILE>;
   161 					close (KEYFILE);
   161 					close (KEYFILE);
   162 					
   162 					
   163 					last;
   163 					last;
   164 				}
   164 				}
   169 		if ($rm_count == 1) {
   169 		if ($rm_count == 1) {
   170 			print `rm -f $file`;
   170 			print `rm -f $file`;
   171 		}
   171 		}
   172 	}
   172 	}
   173 
   173 
   174 	open (ZONE, ">$master_dir/$zone/$zone");
   174 	open (ZONE, ">$master_dir/$zone/$zone") or die "$master_dir/$zone/$zone: $!\n";
   175 	print ZONE @new_zone_content;
   175 	print ZONE @new_zone_content;
   176 	close (ZONE);
   176 	close (ZONE);
   177 	
   177 	
   178 	print "$master_dir/$zone/$zone wurde neu erstellt \n";
   178 	print "$master_dir/$zone/$zone wurde neu erstellt \n";
   179 }
   179 }