Skip to content

Commit ec17e57

Browse files
author
daerSeebaer
committed
add ipv6 servers to all zones
1 parent 326e8fa commit ec17e57

File tree

1 file changed

+57
-58
lines changed

1 file changed

+57
-58
lines changed

lib/NP/Model/DnsRoot.pm

+57-58
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)