Use a and a4 records from zonefile setting #2806

This commit is contained in:
Martin Lensment 2015-08-04 13:47:37 +03:00
parent 303e3150cd
commit 73b23c1efa
2 changed files with 20 additions and 65 deletions

View file

@ -478,7 +478,7 @@ namespace :import do
start = Time.zone.now.to_f
puts '-----> Importing zones...'
ns_records, a_records, a4_records = parse_zone_ns_data(1)
ns_records, a_records, a4_records = parse_zone_ns_data('ee', 1)
ZonefileSetting.create!({
origin: 'ee',
@ -495,7 +495,7 @@ namespace :import do
})
# edu.ee
ns_records, a_records, a4_records = parse_zone_ns_data(6)
ns_records, a_records, a4_records = parse_zone_ns_data('edu.ee', 6)
ZonefileSetting.create!({
origin: 'edu.ee',
@ -512,7 +512,7 @@ namespace :import do
})
# aip.ee
ns_records, a_records, a4_records = parse_zone_ns_data(9)
ns_records, a_records, a4_records = parse_zone_ns_data('aip.ee', 9)
ZonefileSetting.create!({
origin: 'aip.ee',
@ -529,7 +529,7 @@ namespace :import do
})
# org.ee
ns_records, a_records, a4_records = parse_zone_ns_data(10)
ns_records, a_records, a4_records = parse_zone_ns_data('org.ee', 10)
ZonefileSetting.create!({
origin: 'org.ee',
@ -546,7 +546,7 @@ namespace :import do
})
# pri.ee
ns_records, a_records, a4_records = parse_zone_ns_data(2)
ns_records, a_records, a4_records = parse_zone_ns_data('pri.ee', 2)
ZonefileSetting.create!({
origin: 'pri.ee',
@ -563,7 +563,7 @@ namespace :import do
})
# med.ee
ns_records, a_records, a4_records = parse_zone_ns_data(3)
ns_records, a_records, a4_records = parse_zone_ns_data('med.ee', 3)
ZonefileSetting.create!({
origin: 'med.ee',
@ -580,7 +580,7 @@ namespace :import do
})
# fie.ee
ns_records, a_records, a4_records = parse_zone_ns_data(4)
ns_records, a_records, a4_records = parse_zone_ns_data('fie.ee', 4)
ZonefileSetting.create!({
origin: 'fie.ee',
@ -597,7 +597,7 @@ namespace :import do
})
# com.ee
ns_records, a_records, a4_records = parse_zone_ns_data(5)
ns_records, a_records, a4_records = parse_zone_ns_data('com.ee', 5)
ZonefileSetting.create!({
origin: 'com.ee',
@ -614,7 +614,7 @@ namespace :import do
})
# gov.ee
ns_records, a_records, a4_records = parse_zone_ns_data(7)
ns_records, a_records, a4_records = parse_zone_ns_data('gov.ee', 7)
ZonefileSetting.create!({
origin: 'gov.ee',
@ -631,7 +631,7 @@ namespace :import do
})
# riik.ee
ns_records, a_records, a4_records = parse_zone_ns_data(8)
ns_records, a_records, a4_records = parse_zone_ns_data('riik.ee', 8)
ZonefileSetting.create!({
origin: 'riik.ee',
@ -651,7 +651,7 @@ namespace :import do
end
end
def parse_zone_ns_data(zone)
def parse_zone_ns_data(domain, zone)
ns_records = ''
a_records = ''
a4_records = ''
@ -659,7 +659,7 @@ def parse_zone_ns_data(zone)
ipv4 = x.addrs.select { |addr| addr.ipv4? }.first
ipv6 = x.addrs.select { |addr| addr.ipv6? }.first
ns_records += "ee. IN NS #{x.fqdn}.\n"
ns_records += "#{domain}. IN NS #{x.fqdn}.\n"
a_records += "#{x.fqdn}. IN A #{ipv4}\n" if ipv4.present?
a4_records += "#{x.fqdn}. IN AAAA #{ipv6}\n" if ipv6.present?
end

View file

@ -58,19 +58,9 @@ namespace :zonefile do
ret := concat(ret, tmp_var, chr(10), chr(10));
-- a glue records for origin nameservers
SELECT array_to_string(
array(
SELECT concat(ns.hostname, '. IN A ', ns.ipv4)
FROM nameservers ns
JOIN domains d ON d.id = ns.domain_id
WHERE d.name = i_origin
AND ns.hostname LIKE '%.' || d.name
AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> ''
), chr(10)
) INTO tmp_var;
ret := concat(ret, '; Zone A Records', chr(10), tmp_var);
-- origin a glue records
SELECT a_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var;
ret := concat(ret, '; Zone A Records', chr(10), tmp_var, chr(10));
-- a glue records for other nameservers
SELECT array_to_string(
@ -82,43 +72,14 @@ namespace :zonefile do
AND ns.hostname LIKE '%.' || d.name
AND d.name <> i_origin
AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> ''
AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods
SELECT 1 FROM nameservers nsi
JOIN domains di ON nsi.domain_id = di.id
WHERE di.name = i_origin
AND nsi.hostname = ns.hostname
)
), chr(10)
) INTO tmp_var;
-- TODO This is a possible subtitition to the previous query, stress testing is needed to see which is faster
ret := concat(ret, tmp_var, chr(10), chr(10));
-- SELECT ns.*
-- FROM nameservers ns
-- JOIN domains d ON d.id = ns.domain_id
-- WHERE d.name LIKE '%ee' AND d.name NOT LIKE '%pri.ee'
-- AND ns.hostname LIKE '%.' || d.name
-- AND d.name <> 'ee'
-- AND ns.ipv4 IS NOT NULL AND ns.ipv4 <> ''
-- AND ns.hostname NOT IN (
-- SELECT ns.hostname FROM domains d JOIN nameservers ns ON d.id = ns.domain_id WHERE d.name = 'ee'
-- )
ret := concat(ret, chr(10), tmp_var, chr(10), chr(10));
-- aaaa glue records for origin nameservers
SELECT array_to_string(
array(
SELECT concat(ns.hostname, '. IN AAAA ', ns.ipv6)
FROM nameservers ns
JOIN domains d ON d.id = ns.domain_id
WHERE d.name = i_origin
AND ns.hostname LIKE '%.' || d.name
AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> ''
), chr(10)
) INTO tmp_var;
ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var);
-- origin aaaa glue records
SELECT a4_records FROM zonefile_settings zf WHERE i_origin = zf.origin INTO tmp_var;
ret := concat(ret, '; Zone AAAA Records', chr(10), tmp_var, chr(10));
-- aaaa glue records for other nameservers
SELECT array_to_string(
@ -130,16 +91,10 @@ namespace :zonefile do
AND ns.hostname LIKE '%.' || d.name
AND d.name <> i_origin
AND ns.ipv6 IS NOT NULL AND ns.ipv6 <> ''
AND NOT EXISTS ( -- filter out glue records that already appeared in origin glue recrods
SELECT 1 FROM nameservers nsi
JOIN domains di ON nsi.domain_id = di.id
WHERE di.name = i_origin
AND nsi.hostname = ns.hostname
)
), chr(10)
) INTO tmp_var;
ret := concat(ret, chr(10), tmp_var, chr(10), chr(10));
ret := concat(ret, tmp_var, chr(10), chr(10));
-- ds records
SELECT array_to_string(