28 } |
28 } |
29 close(CONFIG); |
29 close(CONFIG); |
30 } |
30 } |
31 |
31 |
32 sub read_argv { |
32 sub read_argv { |
33 |
33 # evaluate argv or print the help |
34 # wertet argv aus oder gibt die hilfe aus |
|
35 my $arg = shift @ARGV; |
34 my $arg = shift @ARGV; |
36 my $zone; |
35 my $zone; |
37 our $do; |
36 our $do; |
38 our @zones; |
37 our @zones; |
39 our $master_dir; |
38 our $master_dir; |
40 |
39 |
41 if (!defined $arg) { |
40 if (!defined $arg) { |
42 print " usage: dnssec-keytool <option> zone\n"; |
41 print " usage: dnssec-keytool <option> zone\n"; |
43 print " -z erstellt einen neuen ZSK\n"; |
42 print " -z created a new ZSK\n"; |
44 print " -k erstellt je einen neuen ZSK und KSK\n"; |
43 print " -k created a new ZSK and KSK\n"; |
45 print " -rm loescht das Schluesselmaterial einer Zone\n"; |
44 print " -rm deletes the key-set of a zone\n"; |
46 print " -c erstellt bei existierenden ksk konfigurationsdateien\n"; |
45 print " -c created configuration files for the dnstools\n"; |
47 print " fuer die dnstools, sowie einen neuen zsk\n"; |
46 print " and a new ZSK for an existing KSK\n"; |
48 print "\n"; |
47 print "\n"; |
49 |
48 |
50 exit; |
49 exit; |
51 } |
50 } |
52 elsif ($arg eq "-k") { $do = "ksk"; } |
51 elsif ($arg eq "-k") { $do = "ksk"; } |
53 elsif ($arg eq "-rm") { $do = "rm"; } |
52 elsif ($arg eq "-rm") { $do = "rm"; } |
54 elsif ($arg eq "-c") { $do = "ck"; } |
53 elsif ($arg eq "-c") { $do = "ck"; } |
55 elsif ($arg eq "-z") { $do = "zsk"; } |
54 elsif ($arg eq "-z") { $do = "zsk"; } |
56 else { |
55 else { |
57 print "keine gueltige Option.\n"; |
56 print "not a valid option.\n"; |
58 exit; |
57 exit; |
59 } |
58 } |
60 |
59 |
61 # prueft die zonen in argv ob es verwaltete zonen sind |
60 # checks the zones in argv if there are managed zones |
62 for (@ARGV) { |
61 for (@ARGV) { |
63 chomp($zone = `idn --quiet "$_"`); |
62 chomp($zone = `idn --quiet "$_"`); |
64 if (-e "$master_dir/$zone/$zone") { |
63 if (-e "$master_dir/$zone/$zone") { |
65 push @zones, $zone; |
64 push @zones, $zone; |
66 } |
65 } |
67 } |
66 } |
68 } |
67 } |
69 |
68 |
70 sub rm_keys { |
69 sub rm_keys { |
|
70 # deletes all the keys were handed over -rm in argv |
71 our @zones; |
71 our @zones; |
72 our $master_dir; |
72 our $master_dir; |
73 my $zone; |
73 my $zone; |
74 my @new_zone_content; |
74 my @new_zone_content; |
75 my @old_zone_content; |
75 my @old_zone_content; |
97 } |
97 } |
98 if (-e "$zpf/keyset-$zone.") { |
98 if (-e "$zpf/keyset-$zone.") { |
99 unlink "$zpf/keyset-$zone." and $ep = 1; |
99 unlink "$zpf/keyset-$zone." and $ep = 1; |
100 } |
100 } |
101 |
101 |
102 for (`ls $zpf/K$zone*`) { |
102 for (glob("$zpf/K$zone*")) { |
103 chomp($_); |
103 chomp($_); |
104 print "weg du scheissezwerg $_"; |
104 unlink ("$_"); |
105 unlink("$_"); |
|
106 } |
105 } |
107 |
106 |
108 if ($ep == 1) { |
107 if ($ep == 1) { |
109 print " * $zone: schluesselmaterial entfernt\n"; |
108 print " * $zone: removed key-set\n"; |
110 } |
109 } |
111 |
110 |
112 open(ZONE, "$zpf/$zone") |
111 open(ZONE, "$zpf/$zone") |
113 or die "$zpf/$zone: $!\n"; |
112 or die "$zpf/$zone: $!\n"; |
114 @old_zone_content = <ZONE>; |
113 @old_zone_content = <ZONE>; |
270 @keylist = <INDEX>; |
269 @keylist = <INDEX>; |
271 close(INDEX); |
270 close(INDEX); |
272 open(INDEX, "<$zpf/.index.ksk") or die "$zpf/.index.ksk: $!\n"; |
271 open(INDEX, "<$zpf/.index.ksk") or die "$zpf/.index.ksk: $!\n"; |
273 push @keylist, <INDEX>; |
272 push @keylist, <INDEX>; |
274 |
273 |
275 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie |
274 # shortened the key name from the index file on the id in order to |
276 # besser vergleichen zu koennen. |
275 # be able to compare |
277 for (@keylist) { |
276 for (@keylist) { |
278 chomp; |
277 chomp; |
279 s#K.*\+.*\+(.*)#$1#; |
278 s#K.*\+.*\+(.*)#$1#; |
280 } |
279 } |
281 |
280 |
282 # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen |
281 # reviewed every key file (KSK, ZSK), whether they are described in |
283 # indexdatei beschrieben sind. wenn nicht werden sie geloescht. |
282 # the respective index file. if not they will be deleted. |
284 for (`ls $master_dir/$zone/K*[key,private]`) { |
283 for ( glob("$master_dir/$zone/K*") { |
285 chomp; |
284 chomp; |
286 my $file = $_; |
285 my $file = $_; |
287 my $rm_count = 1; |
286 my $rm_count = 1; |
288 my $keyname; |
287 my $keyname; |
289 for (@keylist) { |
288 for (@keylist) { |
326 } |
325 } |
327 |
326 |
328 &read_conf; |
327 &read_conf; |
329 |
328 |
330 our %config; |
329 our %config; |
331 our $do; # arbeitsschritte aus argv |
330 our $do; # statements from argv |
332 our @zones; # liste der zonen in argv |
331 our @zones; # list of zones from argv |
333 our $master_dir = $config{master_dir}; |
332 our $master_dir = $config{master_dir}; |
334 our $bind_dir = $config{bind_dir}; |
333 our $bind_dir = $config{bind_dir}; |
335 our $conf_dir = $config{zone_conf_dir}; |
334 our $conf_dir = $config{zone_conf_dir}; |
336 our $sign_alert_time = $config{sign_alert_time}; |
335 our $sign_alert_time = $config{sign_alert_time}; |
337 our $indexzone = $config{indexzone}; |
336 our $indexzone = $config{indexzone}; |
338 our $key_counter_end = $config{key_counter_end}; |
337 our $key_counter_end = $config{key_counter_end}; |
339 our $ablauf_zeit = $config{abl_zeit}; |
338 our $ablauf_zeit = $config{abl_zeit}; |
340 |
339 |
341 &read_argv; |
340 &read_argv; |
342 |
341 |
343 unless (@zones) { exit; } # beendet das programm, wurden keine |
342 # completed the program, if not a valid zones was handed over |
344 # gueltigen zonen uebergeben |
343 unless (@zones) { exit; } |
345 |
344 |
346 if ($do eq "rm") { &rm_keys; exit; } |
345 if ($do eq "rm") { &rm_keys; exit; } |
347 if ($do eq "ck") { &ck_zone; } |
346 if ($do eq "ck") { &ck_zone; } |
348 if ($do eq "ksk") { &creat_ksk; } |
347 if ($do eq "ksk") { &creat_ksk; } |
349 |
348 |
350 &creat_zsk; |
349 &creat_zsk; |
351 &post_creat; |
350 &post_creat; |
352 |
351 |
|
352 __END__ |
|
353 |
|
354 =pod |
|
355 |
|
356 =head1 NAME |
|
357 |
|
358 dnssec-keytool |
|
359 |
|
360 =head1 SYNOPSIS |
|
361 |
|
362 dnssec-keytool <option> zone |
|
363 |
|
364 =head1 DESCRIPTION |