@@ -116,77 +116,76 @@ sub populate_country_zones {
116
116
$name = ' ' if $name eq ' @' ;
117
117
$name = " $name ." if $name ;
118
118
119
- if (my $entries = $zone -> active_servers(' v4' )) {
120
-
121
- my $min_non_duplicate_size = 2;
122
- my $response_records = 3;
123
- my @zones = (" 0." , " 1." , " 2." , " 3." );
124
- my $zone_count = scalar @zones ;
125
-
126
- # add all servers to the non-numbered "NTP" zone
127
- (my $pgeodns_group = " ${name} " ) =~ s /\. $// ;
128
- push @{$data -> {$pgeodns_group }-> {a }}, $_ for @$entries ;
129
- if ($ttl ) {
130
- $data -> {$pgeodns_group }-> {ttl } = $ttl ;
131
- }
132
- $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
119
+ my @ip_versions = (' v4' , ' v6' );
120
+ my %record_types = (v4 => ' a' ,
121
+ v6 => ' aaaa' );
133
122
134
- $min_non_duplicate_size = int (@$entries / $zone_count )
135
- if (@$entries / $zone_count > $min_non_duplicate_size );
123
+ foreach my $ip_version (@ip_versions ) {
136
124
137
- # print $fh "# " . scalar @$entries . " active servers in ", $zone->name, "\n" ;
125
+ my $record_type = $record_types { $ip_version } ;
138
126
139
- if ($# $ entries < ( $min_non_duplicate_size * $zone_count - 1 )) {
127
+ if (my $ entries = $zone -> active_servers( $ip_version )) {
140
128
141
- # possible duplicates, not enough servers
142
- foreach my $z (@zones ) {
143
- (my $pgeodns_group = " $z${name} " ) =~ s /\. $// ;
129
+ my $min_non_duplicate_size = 2;
130
+ my $response_records = 3;
131
+ my @zones = (" 0." , " 1." , " 2." , " 3." );
132
+ my $zone_count = scalar @zones ;
144
133
145
- # already has an alias, so don't add more data
146
- if ($data -> {$pgeodns_group }-> {alias }) {
147
- next ;
148
- }
134
+ # add all servers to the non-numbered "NTP" zone
135
+ (my $pgeodns_group = " ${name} " ) =~ s /\. $// ;
136
+ push @{$data -> {$pgeodns_group }-> {$record_type }}, $_ for @$entries ;
137
+ if ($ttl ) {
138
+ $data -> {$pgeodns_group }-> {ttl } = $ttl ;
139
+ }
140
+ $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
149
141
150
- $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
142
+ $min_non_duplicate_size = int (@$entries / $zone_count )
143
+ if (@$entries / $zone_count > $min_non_duplicate_size );
151
144
152
- $data -> {$pgeodns_group }-> {a } = [];
153
- if ($ttl ) {
154
- $data -> {$pgeodns_group }-> {ttl } = $ttl ;
155
- }
156
- @$entries = shuffle(@$entries );
157
- foreach my $e (@$entries ) {
158
- push @{$data -> {$pgeodns_group }-> {a }}, $e ;
145
+ # print $fh "# " . scalar @$entries . " active servers in ", $zone->name, "\n";
146
+
147
+ if ($# $entries < ($min_non_duplicate_size * $zone_count - 1)) {
148
+
149
+ # possible duplicates, not enough servers
150
+ foreach my $z (@zones ) {
151
+ (my $pgeodns_group = " $z${name} " ) =~ s /\. $// ;
152
+
153
+ # already has an alias, so don't add more data
154
+ if ($data -> {$pgeodns_group }-> {alias }) {
155
+ next ;
156
+ }
157
+
158
+ $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
159
+
160
+ $data -> {$pgeodns_group }-> {$record_type } = [];
161
+ if ($ttl ) {
162
+ $data -> {$pgeodns_group }-> {ttl } = $ttl ;
163
+ }
164
+ @$entries = shuffle(@$entries );
165
+ foreach my $e (@$entries ) {
166
+ push @{$data -> {$pgeodns_group }-> {$record_type }}, $e ;
167
+ }
159
168
}
160
169
}
161
- }
162
- else {
163
-
164
- # 'big' zone without duplicates
165
- @$entries = shuffle(@$entries );
166
- foreach my $z (@zones ) {
167
- (my $pgeodns_group = " $z${name} " ) =~ s /\. $// ;
168
- if ($ttl ) {
169
- $data -> {$pgeodns_group }-> {ttl } = $ttl ;
170
- }
171
- $data -> {$pgeodns_group }-> {a } = [];
172
- for (my $i = 0; $i < $min_non_duplicate_size ; $i ++) {
173
- my $e = shift @$entries ;
174
- push @{$data -> {$pgeodns_group }-> {a }}, $e ;
175
- }
170
+ else {
176
171
177
- $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
172
+ # 'big' zone without duplicates
173
+ @$entries = shuffle(@$entries );
174
+ foreach my $z (@zones ) {
175
+ (my $pgeodns_group = " $z${name} " ) =~ s /\. $// ;
176
+ if ($ttl ) {
177
+ $data -> {$pgeodns_group }-> {ttl } = $ttl ;
178
+ }
179
+ $data -> {$pgeodns_group }-> {$record_type } = [];
180
+ for (my $i = 0; $i < $min_non_duplicate_size ; $i ++) {
181
+ my $e = shift @$entries ;
182
+ push @{$data -> {$pgeodns_group }-> {$record_type }}, $e ;
183
+ }
184
+ $data -> {$pgeodns_group }-> {mx } = [{mx => " ." , preference => 0}];
185
+ }
178
186
}
179
187
}
180
188
}
181
-
182
- if (my $entries = $zone -> active_servers(' v6' )) {
183
- @$entries = shuffle(@$entries );
184
-
185
- # for now just put all IPv6 servers in the '2' zone
186
- (my $pgeodns_group = " 2.${name} " ) =~ s /\. $// ;
187
- push @{$data -> {$pgeodns_group }-> {aaaa }}, $_ for @$entries ;
188
- }
189
-
190
189
}
191
190
}
192
191
0 commit comments