178 # die zone-datei |
178 # die zone-datei |
179 for ( @change, @manu ) { |
179 for ( @change, @manu ) { |
180 $zone = $_; |
180 $zone = $_; |
181 my @old_zone_content = (); |
181 my @old_zone_content = (); |
182 my @new_zone_content = (); |
182 my @new_zone_content = (); |
183 my @keylist = (); |
183 my @kkeylist = (); |
|
184 my @zkeylist = (); |
184 my $file = (); |
185 my $file = (); |
185 |
186 |
186 open( INDEX, "<$master_dir/$zone/.index.zsk" ) |
187 open( INDEX, "<$master_dir/$zone/.index.zsk" ) |
187 or die "$master_dir/$zone/.index.zsk: $!\n"; |
188 or die "$master_dir/$zone/.index.zsk: $!\n"; |
188 @keylist = <INDEX>; |
189 @zkeylist = <INDEX>; |
189 close(INDEX); |
190 close(INDEX); |
190 |
191 |
191 open( INDEX, "<$master_dir/$zone/.index.ksk" ) |
192 open( INDEX, "<$master_dir/$zone/.index.ksk" ) |
192 or die "$master_dir/$zone/.index.ksk: $!\n"; |
193 or die "$master_dir/$zone/.index.ksk: $!\n"; |
193 push @keylist, <INDEX>; |
194 @kkeylist = <INDEX>; |
194 close(INDEX); |
195 close(INDEX); |
195 |
196 |
196 open( ZONE, "<$master_dir/$zone/$zone" ) |
197 open( ZONE, "<$master_dir/$zone/$zone" ) |
197 or die "$master_dir/$zone/$zone: $!\n"; |
198 or die "$master_dir/$zone/$zone: $!\n"; |
198 @old_zone_content = <ZONE>; |
199 @old_zone_content = <ZONE>; |
199 close(ZONE); |
200 close(ZONE); |
200 |
201 |
201 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie |
202 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die id um sie |
202 # besser vergleichen zu koennen. |
203 # besser vergleichen zu koennen. |
203 for (@keylist) { |
204 for (@kkeylist, @zkeylist) { |
204 chomp; |
205 chomp; |
205 s#K.*\+.*\+(.*)#$1#; |
206 s#K.*\+.*\+(.*)#$1#; |
206 } |
207 } |
207 |
208 |
208 # filtert alle schluessel aus der zonedatei |
209 # filtert alle schluessel aus der zonedatei |
209 # old_zone_content ==> new_zone_content |
210 # old_zone_content ==> new_zone_content |
210 for (@old_zone_content) { |
211 for (@old_zone_content) { |
211 unless (/IN\sDNSKEY/) { |
212 unless (/dnssec-(zsk|ksk)/) { |
212 push @new_zone_content, $_; |
213 push @new_zone_content, $_; |
213 } |
214 } |
214 } |
215 } |
215 |
216 |
216 # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen |
217 # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen |
218 for (`ls $master_dir/$zone/K*[key,private]`) { |
219 for (`ls $master_dir/$zone/K*[key,private]`) { |
219 chomp; |
220 chomp; |
220 $file = $_; |
221 $file = $_; |
221 my $rm_count = 1; |
222 my $rm_count = 1; |
222 |
223 |
223 for (@keylist) { |
224 for (@zkeylist) { |
224 |
225 |
225 if ( $file =~ /$_/ ) { |
226 if ( $file =~ /$_/ ) { |
226 $rm_count = 0; |
227 $rm_count = 0; |
227 |
228 |
228 # schluessel die in der indexdatei standen, werden an die |
229 # schluessel die in der indexdatei standen, werden an die |
229 # zonedatei angehangen. |
230 # zonedatei angehangen. |
230 if ( $file =~ /.*key/ ) { |
231 if ( $file =~ /.*key/ ) { |
231 open( KEYFILE, "<$file" ) or next "$file: $!\n"; |
232 |
232 push @new_zone_content, <KEYFILE>; |
233 $file =~ s#/.*/(K.*)#$1#; |
233 close(KEYFILE); |
234 push @new_zone_content, "\$include $file\t\t; dnssec-zsk\n" ; |
|
235 |
|
236 last; |
|
237 } |
|
238 } |
|
239 } |
|
240 for (@kkeylist) { |
|
241 |
|
242 if ( $file =~ /$_/ ) { |
|
243 $rm_count = 0; |
|
244 |
|
245 # schluessel die in der indexdatei standen, werden an die |
|
246 # zonedatei angehangen. |
|
247 if ( $file =~ /.*key/ ) { |
|
248 |
|
249 $file =~ s#/.*/(K.*)#$1#; |
|
250 push @new_zone_content, "\$include $file\t\t; dnssec-ksk\n" ; |
234 |
251 |
235 last; |
252 last; |
236 } |
253 } |
237 } |
254 } |
238 } |
255 } |