2 |
2 |
3 use strict; |
3 use strict; |
4 |
4 |
5 my $master_dir="/etc/bind/master"; # verzeichnis fuer bind |
5 my $master_dir="/etc/bind/master"; # verzeichnis fuer bind |
6 my $key_counter_end="10"; # ablauf des schluessels |
6 my $key_counter_end="10"; # ablauf des schluessels |
7 my @zones = `ls $master_dir`; # alle verwalteten zonen |
|
8 my @change; # liste abgelaufener zonen |
7 my @change; # liste abgelaufener zonen |
9 my @manu; # liste manuell eingegebener zonen aus ARGV |
8 my @manu; # liste manuell eingegebener zonen aus ARGV |
10 my @index; |
9 my @index; |
11 my $zone; |
10 my $zone; |
12 my $keyname; |
11 my $keyname; |
13 |
12 |
14 # prueft ob eingaben in ARGV domains sind und gibt sie in die liste @manu |
13 # prueft ob eingaben in ARGV domains sind und gibt sie in die liste @manu |
15 foreach (@ARGV) { |
14 for (@ARGV) { |
16 chomp ($zone = `idn --quiet "$_"`); |
15 chomp ($zone = `idn --quiet "$_"`); |
17 |
16 |
18 if (-e "$master_dir/$zone") { |
17 if (-e "$master_dir/$zone") { |
19 push (@manu, $zone); |
18 push (@manu, $zone); |
20 } else { |
19 } else { |
21 print " $zone ist keine verwaltete zone \n "; |
20 print " $zone ist keine verwaltete zone \n "; |
22 } |
21 } |
23 } |
22 } |
24 |
23 |
25 # gibt alle zonen mit abgelaufenen keycounter in die liste @change |
24 # gibt alle zonen mit abgelaufenen keycounter in die liste @change |
26 foreach (@zones) { |
25 for (<$master_dir/*>) { |
27 chomp ($zone = $_); |
26 chomp ($zone = $_); |
28 my $key; |
27 my $key; |
29 |
28 |
30 if (-e "$master_dir/$zone/.keycounter") { |
29 if (-e "$zone/.keycounter") { |
31 |
30 |
32 open (KEY, "$master_dir/$zone/.keycounter"); |
31 open (KEY, "$zone/.keycounter"); |
33 $key = <KEY>; |
32 $key = <KEY>; |
34 close (KEY); |
33 close (KEY); |
35 |
34 |
36 if ($key_counter_end < $key) { |
35 if ($key_counter_end < $key) { |
|
36 $zone =~ s#($master_dir/)(.*)#$2#; |
37 push (@change, $zone); |
37 push (@change, $zone); |
38 } |
38 } |
39 } |
39 } |
40 } |
40 } |
41 |
41 |
42 #erzeugt zsks |
42 #erzeugt zsks |
43 foreach (@change, @manu) { |
43 for (@change, @manu) { |
44 $zone = $_; |
44 $zone = $_; |
45 |
45 |
46 chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1"; |
46 chdir "$master_dir/$zone" or die "chdir nach / nicht moeglich: $1"; |
47 $keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`; |
47 $keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`; |
48 |
48 |
100 } |
100 } |
101 |
101 |
102 |
102 |
103 # loescht alle unbenoetigten schluessel, fuegt die schluessel in |
103 # loescht alle unbenoetigten schluessel, fuegt die schluessel in |
104 # die zone-datei |
104 # die zone-datei |
105 foreach (@change, @manu) { |
105 for (@change, @manu) { |
106 $zone = $_; |
106 $zone = $_; |
107 my @old_zone_content = (); |
107 my @old_zone_content = (); |
108 my @new_zone_content = (); |
108 my @new_zone_content = (); |
109 my @keylist = (); |
109 my @keylist = (); |
110 my $file = (); |
110 my $file = (); |