48 if ( -e "$zdir/.index.zsk" ) { unlink "$zdir/.index.zsk" } |
48 if ( -e "$zdir/.index.zsk" ) { unlink "$zdir/.index.zsk" } |
49 if ( -e "$zdir/dsset-$zone." ) { unlink "$zdir/dsset-$zone." } |
49 if ( -e "$zdir/dsset-$zone." ) { unlink "$zdir/dsset-$zone." } |
50 if ( -e "$zdir/keyset-$zone." ) { unlink "$zdir/keyset-$zone." } |
50 if ( -e "$zdir/keyset-$zone." ) { unlink "$zdir/keyset-$zone." } |
51 for (`ls $master_dir/$zone/K*[key,private]`) { unlink $_ } |
51 for (`ls $master_dir/$zone/K*[key,private]`) { unlink $_ } |
52 } |
52 } |
|
53 |
|
54 open( ZONE, "$master_dir/$zone/$zone" ) |
|
55 or die "$master_dir/$zone/$zone: $!\n"; |
|
56 @old_zone_content = <ZONE>; |
|
57 close(ZONE); |
|
58 |
|
59 for (@old_zone_content) { |
|
60 unless (/dnssec-(ksk|zsk)/) { |
|
61 push @new_zone_content, $_; |
|
62 } |
|
63 } |
|
64 |
|
65 open( ZONE, ">$master_dir/$zone/$zone" ) |
|
66 or die "$master_dir/$zone/$zone: $!\n"; |
|
67 print ZONE @new_zone_content; |
|
68 close(ZONE); |
|
69 |
53 } |
70 } |
54 |
71 |
55 # beendet den key-rollover |
72 # beendet den key-rollover |
56 for (<$master_dir/*>) { |
73 for (<$master_dir/*>) { |
57 $zone = $_; |
74 $zone = $_; |
112 # zonedatei geschrieben. |
129 # zonedatei geschrieben. |
113 for (@auto) { |
130 for (@auto) { |
114 my $zone = $_; |
131 my $zone = $_; |
115 my @old_zone_content = (); |
132 my @old_zone_content = (); |
116 my @new_zone_content = (); |
133 my @new_zone_content = (); |
117 my @keylist = (); |
134 my @kkeylist = (); |
|
135 my @zkeylist = (); |
118 my $file; |
136 my $file; |
119 |
137 |
120 open( INDEX, "$master_dir/$zone/.index.zsk" ) |
138 open( INDEX, "$master_dir/$zone/.index.zsk" ) |
121 or die "$master_dir/$zone/.index.zsk: $!\n"; |
139 or die "$master_dir/$zone/.index.zsk: $!\n"; |
122 @keylist = <INDEX>; |
140 @zkeylist = <INDEX>; |
123 close(INDEX); |
141 close(INDEX); |
124 |
142 |
125 open( INDEX, "$master_dir/$zone/.index.ksk" ) |
143 open( INDEX, "$master_dir/$zone/.index.ksk" ) |
126 or die "$master_dir/$zone/.index.ksk: $!\n"; |
144 or die "$master_dir/$zone/.index.ksk: $!\n"; |
127 push @keylist, <INDEX>; |
145 @kkeylist = <INDEX>; |
128 close(INDEX); |
146 close(INDEX); |
129 |
147 |
130 open( ZONE, "$master_dir/$zone/$zone" ) |
148 open( ZONE, "$master_dir/$zone/$zone" ) |
131 or die "$master_dir/$zone/$zone: $!\n"; |
149 or die "$master_dir/$zone/$zone: $!\n"; |
132 @old_zone_content = <ZONE>; |
150 @old_zone_content = <ZONE>; |
133 close(ZONE); |
151 close(ZONE); |
134 |
152 |
135 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die |
153 # kuerzt die schluessel-bezeichnung aus der indexdatei auf die |
136 # id um sie besser vergleichen zu koennen. |
154 # id um sie besser vergleichen zu koennen. |
137 for (@keylist) { |
155 for (@kkeylist, @zkeylist) { |
138 chomp; |
156 chomp; |
139 s#K.*\+.*\+(.*)#$1#; |
157 s#K.*\+.*\+(.*)#$1#; |
140 } |
158 } |
141 |
159 |
142 # filtert alle schluessel aus der zonedatei |
160 # filtert alle schluessel aus der zonedatei |
143 # old_zone_content ==> new_zone_content |
161 # old_zone_content ==> new_zone_content |
144 for (@old_zone_content) { |
162 for (@old_zone_content) { |
145 unless (/IN\sDNSKEY/) { |
163 unless (/dnssec-(ksk|zsk)/) { |
146 push @new_zone_content, $_; |
164 push @new_zone_content, $_; |
147 } |
165 } |
148 } |
166 } |
149 |
167 |
150 # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen |
168 # prueft alle schluesseldateien (ksk, zsk) ob sie in der jeweiligen |
152 for (`ls $master_dir/$zone/K*[key,private]`) { |
170 for (`ls $master_dir/$zone/K*[key,private]`) { |
153 chomp; |
171 chomp; |
154 $file = $_; |
172 $file = $_; |
155 my $rm_count = 1; |
173 my $rm_count = 1; |
156 |
174 |
157 for (@keylist) { |
175 for (@zkeylist) { |
158 |
176 |
159 if ( $file =~ /$_/ ) { |
177 if ( $file =~ /$_/ ) { |
160 $rm_count = 0; |
178 $rm_count = 0; |
161 |
179 |
162 # schluessel die in der indexdatei standen, werden an die |
180 # schluessel die in der indexdatei standen, werden an die |
163 # zonedatei angehangen. |
181 # zonedatei angehangen. |
164 if ( $file =~ /.*key/ ) { |
182 if ( $file =~ /.*key/ ) { |
165 open( KEYFILE, "$file" ) or die "$file: $!\n"; |
183 |
166 push @new_zone_content, <KEYFILE>; |
184 $file =~ s#/.*/(K.*)#$1#; |
167 close(KEYFILE); |
185 push @new_zone_content, "\$include $file\t\t; dnssec-zsk\n" ; |
168 |
186 |
169 last; |
187 last; |
170 } |
188 } |
171 } |
189 } |
172 } |
190 } |
|
191 for (@kkeylist) { |
|
192 |
|
193 if ( $file =~ /$_/ ) { |
|
194 $rm_count = 0; |
|
195 |
|
196 # schluessel die in der indexdatei standen, werden an die |
|
197 # zonedatei angehangen. |
|
198 if ( $file =~ /.*key/ ) { |
|
199 |
|
200 $file =~ s#/.*/(K.*)#$1#; |
|
201 push @new_zone_content, "\$include $file\t\t; dnssec-ksk\n" ; |
|
202 |
|
203 last; |
|
204 } |
|
205 } |
|
206 } |
173 |
207 |
174 #loescht alle unbenoetigten schluessel |
208 #loescht alle unbenoetigten schluessel |
175 if ( $rm_count == 1 ) { |
209 if ( $rm_count == 1 ) { |
176 print `rm -f $file`; |
210 print `rm -f $file`; |
177 } |
211 } |