49 } |
54 } |
50 |
55 |
51 # prueft ob zonen mit schluesselmaterial ueber index- und keycounterdatei |
56 # prueft ob zonen mit schluesselmaterial ueber index- und keycounterdatei |
52 # verfuegen. |
57 # verfuegen. |
53 # legt .index.ksk an falls nicht und gibt die entsprechende zone in die |
58 # legt .index.ksk an falls nicht und gibt die entsprechende zone in die |
54 # liste @change |
59 # liste @change |
55 while (<$master_dir/*>) { |
60 while (<$master_dir/*>) { |
56 chomp( $zone = $_ ); |
61 chomp( $zone = $_ ); |
57 |
62 |
58 if (-f "$zone/.index.zsk" and |
63 if ( -f "$zone/.index.zsk" |
59 -f "$zone/.index.ksk" and |
64 and -f "$zone/.index.ksk" |
60 -f "$zone/.keycounter") { |
65 and -f "$zone/.keycounter" ) |
|
66 { |
61 next; |
67 next; |
62 } |
68 } |
63 |
69 |
64 while (<$zone/*>) { |
70 while (<$zone/*>) { |
65 if (m#^K#) { |
71 if (m#^K#) { |
66 my $file_in_zone = $_; |
72 my $file_in_zone = $_; |
67 |
73 |
68 open (KEY,$_) or die "$_: $!\n"; |
74 open( KEY, $_ ) or die "$_: $!\n"; |
69 for (<KEY>) { |
75 for (<KEY>) { |
70 if (m#DNSKEY.257#) { |
76 if (m#DNSKEY.257#) { |
71 $file_in_zone =~ s#(/.*/)(.*).key#$2#; |
77 $file_in_zone =~ s#(/.*/)(.*).key#$2#; |
72 |
78 |
73 open (INDEX, ">$zone/.index.ksk") or die; |
79 open( INDEX, ">$zone/.index.ksk" ) or die; |
74 print INDEX "$file_in_zone\n"; |
80 print INDEX "$file_in_zone\n"; |
75 close (INDEX); |
81 close(INDEX); |
76 |
82 |
77 $zone =~ s#($master_dir/)(.*)#$2#; |
83 $zone =~ s#($master_dir/)(.*)#$2#; |
78 push( @change, $zone ); |
84 push( @change, $zone ); |
79 |
85 |
80 } |
86 } |
81 } |
87 } |
82 close (KEY); |
88 close(KEY); |
83 } |
89 } |
84 } |
90 } |
85 } |
91 } |
86 |
|
87 |
92 |
88 # gibt alle zonen mit abgelaufenen keycounter in die liste @change |
93 # gibt alle zonen mit abgelaufenen keycounter in die liste @change |
89 while (<$master_dir/*>) { |
94 while (<$master_dir/*>) { |
90 chomp( $zone = $_ ); |
95 chomp( $zone = $_ ); |
91 my $key; |
96 my $key; |
103 push( @change, $zone ); |
108 push( @change, $zone ); |
104 } |
109 } |
105 } |
110 } |
106 |
111 |
107 #erzeugt zsks |
112 #erzeugt zsks |
108 for ( @change, @manu ) { |
113 for ( &del_double( @change, @manu ) ) { |
109 $zone = $_; |
114 $zone = $_; |
110 |
115 |
111 chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; |
116 chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; |
112 $keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`; |
117 $keyname = `dnssec-keygen -a RSASHA1 -b 512 -n ZONE $zone`; |
113 |
118 |
137 print KC "0"; |
142 print KC "0"; |
138 close(KC); |
143 close(KC); |
139 } |
144 } |
140 |
145 |
141 #erzeugt ksks |
146 #erzeugt ksks |
142 for (@manu) { |
147 for ( &del_double(@manu) ) { |
143 $zone = $_; |
148 $zone = $_; |
144 |
149 |
145 chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; |
150 chdir "$master_dir/$zone" or die "$master_dir/$zone: $!\n"; |
146 $keyname = `dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $zone`; |
151 $keyname = `dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE $zone`; |
147 |
152 |
148 print "creat new KSK for $zone? (no): "; |
153 print "creat new KSK for $zone? (no): "; |
149 unless (<STDIN> =~ m/^yes/) { |
154 unless ( <STDIN> =~ m/^yes/ ) { |
150 next; |
155 next; |
151 } |
156 } |
152 |
157 |
153 unless ( -f ".index.ksk" ) { |
158 unless ( -f ".index.ksk" ) { |
154 @index = (); |
159 @index = (); |
174 print "$keyname (KSK) creat for $zone \n"; |
179 print "$keyname (KSK) creat for $zone \n"; |
175 } |
180 } |
176 |
181 |
177 # loescht alle unbenoetigten schluessel, fuegt die schluessel in |
182 # loescht alle unbenoetigten schluessel, fuegt die schluessel in |
178 # die zone-datei |
183 # die zone-datei |
179 for ( @change, @manu ) { |
184 for ( &del_double( @change, @manu ) ) { |
180 $zone = $_; |
185 $zone = $_; |
181 my @old_zone_content = (); |
186 my @old_zone_content = (); |
182 my @new_zone_content = (); |
187 my @new_zone_content = (); |
183 my @kkeylist = (); |
188 my @kkeylist = (); |
184 my @zkeylist = (); |
189 my @zkeylist = (); |
199 @old_zone_content = <ZONE>; |
204 @old_zone_content = <ZONE>; |
200 close(ZONE); |
205 close(ZONE); |
201 |
206 |
202 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie |
207 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie |
203 # besser vergleichen zu koennen. |
208 # besser vergleichen zu koennen. |
204 for (@kkeylist, @zkeylist) { |
209 for ( @kkeylist, @zkeylist ) { |
205 chomp; |
210 chomp; |
206 s#K.*\+.*\+(.*)#$1#; |
211 s#K.*\+.*\+(.*)#$1#; |
207 } |
212 } |
208 |
213 |
209 # filtert alle schluessel aus der zonedatei |
214 # filtert alle schluessel aus der zonedatei |
229 # schluessel die in der indexdatei standen, werden an die |
234 # schluessel die in der indexdatei standen, werden an die |
230 # zonedatei angehangen. |
235 # zonedatei angehangen. |
231 if ( $file =~ /.*key/ ) { |
236 if ( $file =~ /.*key/ ) { |
232 |
237 |
233 $file =~ s#/.*/(K.*)#$1#; |
238 $file =~ s#/.*/(K.*)#$1#; |
234 push @new_zone_content, "\$INCLUDE \"$file\"\t\t; dnssec-zsk\n" ; |
239 push @new_zone_content, |
|
240 "\$INCLUDE \"$file\"\t\t; dnssec-zsk\n"; |
235 |
241 |
236 last; |
242 last; |
237 } |
243 } |
238 } |
244 } |
239 } |
245 } |
245 # schluessel die in der indexdatei standen, werden an die |
251 # schluessel die in der indexdatei standen, werden an die |
246 # zonedatei angehangen. |
252 # zonedatei angehangen. |
247 if ( $file =~ /.*key/ ) { |
253 if ( $file =~ /.*key/ ) { |
248 |
254 |
249 $file =~ s#/.*/(K.*)#$1#; |
255 $file =~ s#/.*/(K.*)#$1#; |
250 push @new_zone_content, "\$INCLUDE \"$file\"\t\t; dnssec-ksk\n" ; |
256 push @new_zone_content, |
|
257 "\$INCLUDE \"$file\"\t\t; dnssec-ksk\n"; |
251 |
258 |
252 last; |
259 last; |
253 } |
260 } |
254 } |
261 } |
255 } |
262 } |