@@ -116,77 +116,76 @@ sub populate_country_zones {
116116 $name = ' ' if $name eq ' @' ;
117117 $name = " $name ." if $name ;
118118
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' );
133122
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 ) {
136124
137- # print $fh "# " . scalar @$entries . " active servers in ", $zone->name, "\n" ;
125+ my $record_type = $record_types { $ip_version } ;
138126
139- if ($# $ entries < ( $min_non_duplicate_size * $zone_count - 1 )) {
127+ if (my $ entries = $zone -> active_servers( $ip_version )) {
140128
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 ;
144133
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}];
149141
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 );
151144
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+ }
159168 }
160169 }
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 {
176171
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+ }
178186 }
179187 }
180188 }
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-
190189 }
191190}
192191
0 commit comments