From: Tom Hughes Date: Sat, 26 Jul 2025 16:06:55 +0000 (+0100) Subject: Add orm to DNS X-Git-Url: https://git.openstreetmap.org/dns.git/commitdiff_plain/HEAD?ds=sidebyside;hp=776cc38b7646cbe6a6177cd0da7dd5d33d955e05 Add orm to DNS --- diff --git a/README.md b/README.md index 95cbcb8..7081017 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This repository contains the DNS zone templates and related code for managing Op ## Standard DNS Zone Files -We use [dnscontrol](https://stackexchange.github.io/dnscontrol/) to manage OpenStreetMap DNS. A set of wrapper scripts are used, which are called from the [Makefile](Makefile) +We use [dnscontrol](https://dnscontrol.org/) to manage OpenStreetMap DNS. A set of wrapper scripts are used, which are called from the [Makefile](Makefile) Merges to the master branch trigger a git [post-receive](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/files/default/post-receive) which runs `make update` via a [script](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/templates/default/dns-update.erb), the DNS is then updated by dnscontrol. diff --git a/dnsconfig.js b/dnsconfig.js index 88b4218..06d230a 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -14,17 +14,124 @@ function loadTemplate(template) { return function (domain, registrar) { DOMAIN = domain; REGISTRAR = registrar; - DYNAMIC_RECORDS = []; - - for (var i = 2; i < arguments.length; i++) { - DYNAMIC_RECORDS = DYNAMIC_RECORDS.concat(arguments[i]); - } require("src/" + template + ".js"); }; } -require("src/hosts.js"); +/** + * Create A, optional AAAA, and optional HTTPS (SVCB) records for an OSM web service, + * with optional Cloudflare proxy support. + * + * @param {string} name - Hostname (e.g. "www"). + * @param {string[]} servers - Required array of servers. + * @param {Object} [options] - Optional settings for HTTPS and Cloudflare. + * @param {boolean} [options.h1=false] - If true, sets HTTPS apn=http1.1 + * @param {boolean} [options.h2=true] - If true, sets HTTPS apn=h2 + * @param {boolean} [options.h3=false] - If true, sets HTTPS apn=h3 + * @param {boolean} [options.cfproxy=false] - If true, enables Cloudflare proxy on A/AAAA. + * + */ +function osm_web_service( + name, + servers, + options +) { + + // If servers is a string, convert to a single-element array + if (typeof servers === "string") { + servers = [servers]; + } + + if (options === undefined) { + options = {}; + } + + // Set default values for options.h1, options.h2, and options.h3 + options.h1 = options.h1 !== undefined ? options.h1 : false; + options.h2 = options.h2 !== undefined ? options.h2 : true; + options.h3 = options.h3 !== undefined ? options.h3 : false; + + var records = []; + var ipv4s = []; + var ipv6s = []; + + servers.forEach(function(serverName) { + if (IPV4[serverName]) { + ipv4s.push(IPV4[serverName]); + if (!options.cfproxy) { + records.push(A(name, IPV4[serverName])); + } else { + records.push(A(name, IPV4[serverName], CF_PROXY_ON)); + } + } + if (IPV6[serverName]) { + ipv6s.push(IPV6[serverName]); + if (!options.cfproxy) { + records.push(AAAA(name, IPV6[serverName])); + } else { + records.push(AAAA(name, IPV6[serverName], CF_PROXY_ON)); + } + } + }); + + if (ipv4s.length === 0 && ipv6s.length === 0) { + throw new Error("An IPv4 or IPv6 address is required for " + name + " service"); + } + + // + // Build a parameter string for DNSControl HTTPS() syntax. + // Example: "ipv4hint=1.2.3.4,1.2.3.5 ipv6hint=2001:db8::1,2001:db8::2 alpn=h2" + // + var paramParts = []; + if (ipv4s.length > 0) { + // Join IPv4 addresses with comma+space + paramParts.push("ipv4hint=" + ipv4s.join(",")); + } + if (ipv6s.length > 0) { + // Join IPv6 addresses with comma+space + paramParts.push("ipv6hint=" + ipv6s.join(",")); + } + + if (options.h1 || options.h2 || options.h3) { + var paramPartsALPN = []; + if (options.h3) { + paramPartsALPN.push("h3"); + } + if (options.h2) { + paramPartsALPN.push("h2"); + } + if (options.h1) { + paramPartsALPN.push("http/1.1"); + } + paramParts.push("alpn=" + paramPartsALPN.join(",")); + } + + // Join the parts with a space + var paramString = paramParts.join(" "); + + // Create the HTTPS record with 4 arguments + records.push(HTTPS(name, 1, ".", paramString)); + + + return records; +} + +// Ensure that the reverse DNS records are in RFC 4183 notation +REVCOMPAT("rfc4183"); + +var IPV4 = require("src/ipv4.json"); +var IPV6 = require("src/ipv6.json"); + +var HOST_RECORDS = []; + +for (var name in IPV4) { + HOST_RECORDS.push(A(name, IPV4[name])); +} + +for (var name in IPV6) { + HOST_RECORDS.push(AAAA(name, IPV6[name])); +} var OPENSTREETMAP = loadTemplate("openstreetmap"); @@ -37,15 +144,7 @@ try { var GEO_NS_RECORDS = []; } -OPENSTREETMAP_ORG_RECORDS = [ - CNAME("_acme-challenge.tile", "bxve5ryiwwv7woiraq.fastly-validations.com.", TTL("10m")) -] - -OSM_ORG_RECORDS = [ - CNAME("_acme-challenge.tile", "21gvdfyyxjoc4lmsem.fastly-validations.com.", TTL("10m")) -] - -OPENSTREETMAP("openstreetmap.org", REG_GANDI, OPENSTREETMAP_ORG_RECORDS, SSHFP_RECORDS, GEO_NS_RECORDS, NOMINATIM_RECORDS); +OPENSTREETMAP("openstreetmap.org", REG_GANDI); OPENSTREETMAP("openstreetmap.com", REG_GANDI); OPENSTREETMAP("openstreetmap.net", REG_GANDI); OPENSTREETMAP("openstreetmap.ca", REG_GANDI); @@ -53,7 +152,7 @@ OPENSTREETMAP("openstreetmap.eu", REG_NONE); OPENSTREETMAP("openstreetmap.pro", REG_GANDI); OPENSTREETMAP("openstreetmap.gay", REG_GANDI); OPENSTREETMAP("openstreetmaps.org", REG_GANDI); -OPENSTREETMAP("osm.org", REG_GANDI, OSM_ORG_RECORDS, SSHFP_RECORDS); +OPENSTREETMAP("osm.org", REG_GANDI); OPENSTREETMAP("openmaps.org", REG_GANDI); OPENSTREETMAP("openstreetmap.io", REG_GANDI); OPENSTREETMAP("osm.io", REG_GANDI); @@ -69,7 +168,6 @@ OPENSTREETMAP("openstreetmap.fi", REG_GANDI); OPENSTREETMAP("openstreetmap.gr", REG_GANDI); OPENSTREETMAP("openstreetmap.me", REG_GANDI); OPENSTREETMAP("openstreetmap.mx", REG_GANDI); -OPENSTREETMAP("openstreetmap.nz", REG_GANDI); OPENSTREETMAP("openstreetmap.pe", REG_GANDI); OPENSTREETMAP("openstreetmap.ph", REG_GANDI); OPENSTREETMAP("openstreetmap.sg", REG_GANDI); @@ -80,6 +178,25 @@ OPENSTREETMAP("openstreetmapdata.org", REG_GANDI); // Disable due to registration issue // OPENSTREETMAP("openstreetmap.al", REG_NONE); +D_EXTEND("openstreetmap.org", + CNAME("_acme-challenge.tile", "bxve5ryiwwv7woiraq.fastly-validations.com.", TTL("10m")), + + // Uptime site at StatusCake + CNAME("uptime", "uptimessl-new.statuscake.com."), + + HOST_RECORDS, + SSHFP_RECORDS, + GEO_NS_RECORDS, + NOMINATIM_RECORDS +); + +D_EXTEND("osm.org", + CNAME("_acme-challenge.tile", "21gvdfyyxjoc4lmsem.fastly-validations.com.", TTL("10m")), + + HOST_RECORDS, + SSHFP_RECORDS +); + // Mastodon redirects to en.osm.town var OPENSTREETMAP_TOWN = loadTemplate("openstreetmap-town"); OPENSTREETMAP_TOWN("openstreetmap.town", REG_GANDI); @@ -95,6 +212,11 @@ var OSM_LI = loadTemplate("osm-li"); OSM_LI("osm.li", REG_GANDI); +var OPENSTREETMAP_NZ = loadTemplate("openstreetmap-nz"); + +OPENSTREETMAP_NZ("openstreetmap.nz", REG_GANDI); +OPENSTREETMAP_NZ("openstreetmap.org.nz", REG_GANDI); + var OPENSTREETMAP_UK = loadTemplate("openstreetmap-uk"); OPENSTREETMAP_UK("openstreetmap.uk", REG_GANDI); @@ -144,21 +266,37 @@ IDEDITOR("ideditor.com", REG_GANDI); var OSMWIKI = loadTemplate("osm-wiki"); OSMWIKI("osm.wiki", REG_GANDI); +var PTR_HE_AMS_IPV4 = loadTemplate("ptr_he_ams_ipv4"); + +PTR_HE_AMS_IPV4(REV("184.104.179.128/27"), REG_NONE); + +var PTR_HE_AMS_IPV6 = loadTemplate("ptr_he_ams_ipv6"); + +PTR_HE_AMS_IPV6(REV("2001:470:1:fa1::/64"), REG_NONE); + +var PTR_HE_DUB_IPV4 = loadTemplate("ptr_he_dub_ipv4"); + +PTR_HE_DUB_IPV4(REV("184.104.226.96/27"), REG_NONE); + +var PTR_HE_DUB_IPV6 = loadTemplate("ptr_he_dub_ipv6"); + +PTR_HE_DUB_IPV6(REV("2001:470:1:b3b::/64"), REG_NONE); + var PTR_EQUINIX_AMS_IPV4 = loadTemplate("ptr_equinix_ams_ipv4"); -PTR_EQUINIX_AMS_IPV4("128-27.179.104.184.in-addr.arpa", REG_NONE); +PTR_EQUINIX_AMS_IPV4(REV("82.199.86.96/27"), REG_NONE); var PTR_EQUINIX_AMS_IPV6 = loadTemplate("ptr_equinix_ams_ipv6"); -PTR_EQUINIX_AMS_IPV6(REV("2001:470:1:fa1::/64"), REG_NONE); +PTR_EQUINIX_AMS_IPV6(REV("2001:4d78:500:5e3::/64"), REG_NONE); var PTR_EQUINIX_DUB_IPV4 = loadTemplate("ptr_equinix_dub_ipv4"); -PTR_EQUINIX_DUB_IPV4("96-27.226.104.184.in-addr.arpa", REG_NONE); +PTR_EQUINIX_DUB_IPV4(REV("87.252.214.96/27"), REG_NONE); var PTR_EQUINIX_DUB_IPV6 = loadTemplate("ptr_equinix_dub_ipv6"); -PTR_EQUINIX_DUB_IPV6(REV("2001:470:1:b3b::/64"), REG_NONE); +PTR_EQUINIX_DUB_IPV6(REV("2001:4d78:fe03:1c::/64"), REG_NONE); // No immediate plans // External DNS and hosting still up diff --git a/src/hosts.js b/src/hosts.js deleted file mode 100644 index 2f7397a..0000000 --- a/src/hosts.js +++ /dev/null @@ -1,228 +0,0 @@ -var ALBI_IPV4 = "51.159.53.238"; -var ALBI_IPV6 = "2001:0bc8:1200:0004:dac4:97ff:fe8a:9cfc"; - -var ANGOR_IPV4 = "196.10.54.165"; -var ANGOR_IPV6 = "2001:43f8:1f4:b00:b283:feff:fed8:dd45"; - -var BALERION_IPV4 = "138.44.68.134"; - -var BOWSER_IPV4 = "138.44.68.106"; - -var CMOK_IPV4 = "64.225.143.127"; - -var CULEBRE_IPV4 = "184.104.226.105"; -var CULEBRE_IPV6 = "2001:470:1:b3b::9"; -var CULEBRE_INTERNAL = "10.0.64.9"; -var CULEBRE_OOB = "10.0.65.9"; - -var DRIBBLE_IPV4 = "184.104.179.132"; -var DRIBBLE_IPV6 = "2001:470:1:fa1::4"; -var DRIBBLE_INTERNAL = "10.0.48.4"; -var DRIBBLE_OOB = "10.0.49.4"; - -var DULCY_IPV4 = "184.104.179.137"; -var DULCY_IPV6 = "2001:470:1:fa1::9"; -var DULCY_INTERNAL = "10.0.48.9"; -var DULCY_OOB = "10.0.49.9"; - -var EDDIE_INTERNAL = "10.0.0.10"; -var EDDIE_OOB = "10.0.1.10"; - -var FAFFY_IPV4 = "184.104.179.131"; -var FAFFY_IPV6 = "2001:470:1:fa1::3"; -var FAFFY_INTERNAL = "10.0.48.3"; -var FAFFY_OOB = "10.0.49.3"; - -var FAFNIR_IPV4 = "184.104.226.98"; -var FAFNIR_IPV6 = "2001:470:1:b3b::2"; -var FAFNIR_INTERNAL = "10.0.64.2"; -var FAFNIR_OOB = "10.0.65.2"; - -var FUME_IPV4 = "184.104.226.112"; -var FUME_IPV6 = "2001:470:1:b3b::10"; -var FUME_INTERNAL = "10.0.64.16"; -var FUME_OOB = "10.0.65.16"; - -var GRISU_IPV4 = "184.104.226.113"; -var GRISU_IPV6 = "2001:470:1:b3b::11"; -var GRISU_INTERNAL = "10.0.64.17"; -var GRISU_OOB = "10.0.65.17"; - -var HORNTAIL_IPV4 = "184.104.226.106"; -var HORNTAIL_IPV6 = "2001:470:1:b3b::a"; -var HORNTAIL_INTERNAL = "10.0.64.10"; -var HORNTAIL_OOB = "10.0.65.10"; - -var IDRIS_IPV4 = "184.104.226.102"; -var IDRIS_IPV6 = "2001:470:1:b3b::6"; -var IDRIS_INTERNAL = "10.0.64.6"; -var IDRIS_OOB = "10.0.65.6"; - -var IRONBELLY_IPV4 = "184.104.179.138"; -var IRONBELLY_IPV6 = "2001:470:1:fa1::a"; -var IRONBELLY_INTERNAL = "10.0.48.10"; -var IRONBELLY_OOB = "10.0.49.10"; - -var KARM_INTERNAL = "10.0.48.50"; -var KARM_OOB = "10.0.49.50"; - -var KESSIE_IPV4 = "178.250.74.36"; -var KESSIE_IPV6 = "2a02:1658:4:0:dad3:85ff:fe5d:875e"; -var KESSIE_OOB = "178.250.74.37"; - -var KONQI_IPV4 = "184.104.226.103"; -var KONQI_IPV6 = "2001:470:1:b3b::7"; -var KONQI_INTERNAL = "10.0.64.7"; -var KONQI_OOB = "10.0.65.7"; - -var KVM1_INTERNAL = "10.0.0.21"; - -var LADON_IPV4 = "83.212.2.116"; -var LADON_IPV6 = "2001:648:2ffe:4::116"; - -var LOCKHEED_IPV4 = "184.104.179.144"; -var LOCKHEED_IPV6 = "2001:470:1:fa1::10"; -var LOCKHEED_INTERNAL = "10.0.48.16"; -var LOCKHEED_OOB = "10.0.49.16"; - -var LONGMA_IPV4 = "184.104.226.109"; -var LONGMA_IPV6 = "2001:470:1:b3b::d"; -var LONGMA_INTERNAL = "10.0.64.13"; -var LONGMA_OOB = "10.0.65.13"; - -var MERAXES_IPV4 = "51.15.185.90"; -var MERAXES_IPV6 = "2001:bc8:2d57:100:aa1e:84ff:fe72:e660"; - -var MUIRDRIS_IPV4 = "184.104.226.111"; -var MUIRDRIS_IPV6 = "2001:470:1:b3b::f"; -var MUIRDRIS_INTERNAL = "10.0.64.15"; -var MUIRDRIS_OOB = "10.0.65.15"; - -var NAGA_IPV4 = "184.104.226.104"; -var NAGA_IPV6 = "2001:470:1:b3b::8"; -var NAGA_INTERNAL = "10.0.64.8"; -var NAGA_OOB = "10.0.65.8"; - -var NEAK_IPV4 = "89.234.177.142"; - -var NIDHOGG_IPV4 = "194.71.11.111"; -var NIDHOGG_IPV6 = "2001:6b0:19:2::111"; -var NIDHOGG_OOB = "130.239.18.115"; - -var NORBERT_IPV4 = "184.104.179.145"; -var NORBERT_IPV6 = "2001:470:1:fa1::11"; -var NORBERT_INTERNAL = "10.0.48.17"; -var NORBERT_OOB = "10.0.49.17"; - -var ODIN_IPV4 = "184.104.179.143"; -var ODIN_IPV6 = "2001:470:1:fa1::f"; -var ODIN_INTERNAL = "10.0.48.15"; -var ODIN_OOB = "10.0.49.15"; - -var OOB1AMS_INTERNAL = "10.0.48.102"; - -var OOB1DUB_INTERNAL = "10.0.64.102"; - -var PALULUKON_IPV4 = "3.144.0.72"; - -var PIASA_IPV4 = "140.211.167.101"; -var PIASA_IPV6 = "2605:bc80:3010:700::8cd3:a765"; -var PIASA_OOB = "10.0.0.198"; - -var PDU1AMS_INTERNAL = "10.0.48.100"; - -var PDU2AMS_INTERNAL = "10.0.48.101"; - -var PDU1DUB_INTERNAL = "10.0.64.100"; - -var PDU2DUB_INTERNAL = "10.0.64.101"; - -var RHAEGAL_IPV4 = "193.198.233.218"; -var RHAEGAL_IPV6 = "2001:b68:40ff:3::2"; - -var RIDGEBACK_IPV4 = "31.169.50.10"; -var RIDGEBACK_OOB = "31.169.50.14"; - -var RIDLEY_IPV4 = "193.60.236.19"; -var RIDLEY_INTERNAL = "10.0.0.3"; -var RIDLEY_OOB = "10.0.1.3"; - -var SCORCH_IPV4 = "176.31.235.79"; -var SCORCH_IPV6 = "2001:41d0:2:fc4f::1"; - -var SHENRON_IPV4 = "212.110.172.32"; -var SHENRON_IPV6 = "2001:41c9:1:400::32"; - -var SMAUG_IPV4 = "184.104.226.110"; -var SMAUG_IPV6 = "2001:470:1:b3b::e"; -var SMAUG_INTERNAL = "10.0.64.14"; -var SMAUG_OOB = "10.0.65.14"; - -var SNAP01_INTERNAL = "10.0.48.49"; -var SNAP01_OOB = "10.0.49.49"; - -var SNAP02_INTERNAL = "10.0.0.4"; -var SNAP02_OOB = "10.0.1.4"; - -var SNAP03_INTERNAL = "10.0.64.50"; -var SNAP03_OOB = "10.0.65.50"; - -var SPIKE01_IPV4 = "184.104.226.99"; -var SPIKE01_IPV6 = "2001:470:1:b3b::3"; -var SPIKE01_INTERNAL = "10.0.64.3"; -var SPIKE01_OOB = "10.0.65.3"; - -var SPIKE02_IPV4 = "184.104.226.100"; -var SPIKE02_IPV6 = "2001:470:1:b3b::4"; -var SPIKE02_INTERNAL = "10.0.64.4"; -var SPIKE02_OOB = "10.0.65.4"; - -var SPIKE03_IPV4 = "184.104.226.101"; -var SPIKE03_IPV6 = "2001:470:1:b3b::5"; -var SPIKE03_INTERNAL = "10.0.64.5"; -var SPIKE03_OOB = "10.0.65.5"; - -var SPIKE06_IPV4 = "184.104.179.134"; -var SPIKE06_IPV6 = "2001:470:1:fa1::6"; -var SPIKE06_INTERNAL = "10.0.48.6"; -var SPIKE06_OOB = "10.0.49.6"; - -var SPIKE07_IPV4 = "184.104.179.135"; -var SPIKE07_IPV6 = "2001:470:1:fa1::7"; -var SPIKE07_INTERNAL = "10.0.48.7"; -var SPIKE07_OOB = "10.0.49.7"; - -var SPIKE08_IPV4 = "184.104.179.136"; -var SPIKE08_IPV6 = "2001:470:1:fa1::8"; -var SPIKE08_INTERNAL = "10.0.48.8"; -var SPIKE08_OOB = "10.0.49.8"; - -var STORMFLY03_IPV4 = "140.211.167.99"; -var STORMFLY03_IPV6 = "2605:bc80:3010:700::8cd3:a763"; -var STORMFLY03_OOB = "10.0.0.2"; - -var STORMFLY04_IPV4 = "140.211.167.100"; -var STORMFLY04_IPV6 = "2605:bc80:3010:700::8cd3:a764"; -var STORMFLY04_OOB = "10.0.0.3"; - -var SWITCH1AMS_IPV4 = "184.104.179.129"; -var SWITCH1AMS_IPV6 = "2001:470:1:fa1::1"; - -var SWITCH1DUB_IPV4 = "184.104.226.97"; -var SWITCH1DUB_IPV6 = "2001:470:1:b3b::1"; - -var TABALUGA_IPV4 = "184.104.179.142"; -var TABALUGA_IPV6 = "2001:470:1:fa1::e"; -var TABALUGA_INTERNAL = "10.0.48.14"; -var TABALUGA_OOB = "10.0.49.14"; - -var VHAGAR_IPV4 = "184.104.179.133"; -var VHAGAR_IPV6 = "2001:470:1:fa1::5"; -var VHAGAR_INTERNAL = "10.0.48.5"; -var VHAGAR_OOB = "10.0.49.5"; - -var WAWEL_IPV4 = "64.225.136.96"; - -var YSERA_IPV4 = "193.60.236.22"; -var YSERA_INTERNAL = "10.0.0.15"; -var YSERA_OOB = "10.0.1.15"; diff --git a/src/ideditor.js b/src/ideditor.js index 8706619..2f3ff72 100644 --- a/src/ideditor.js +++ b/src/ideditor.js @@ -28,7 +28,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), ALIAS("@", "openstreetmap.github.io."), CNAME("www", "openstreetmap.github.io."), - A("preview", NAGA_IPV4), - AAAA("preview", NAGA_IPV6) + A("preview", IPV4["naga"]), + AAAA("preview", IPV6["naga"]) ); diff --git a/src/ipv4.json b/src/ipv4.json new file mode 100644 index 0000000..6be960e --- /dev/null +++ b/src/ipv4.json @@ -0,0 +1,158 @@ +{ + "albi": "51.159.53.238", + "angor": "196.10.54.165", + "ats1.ams": "10.0.48.103", + "cmok": "64.225.143.127", + "culebre": "87.252.214.105", + "culebre.he": "184.104.226.105", + "culebre.dub": "10.0.64.9", + "culebre.oob": "10.0.65.9", + "dribble": "82.199.86.100", + "dribble.he": "184.104.179.132", + "dribble.ams": "10.0.48.4", + "dribble.oob": "10.0.49.4", + "dulcy": "82.199.86.105", + "dulcy.he": "184.104.179.137", + "dulcy.ams": "10.0.48.9", + "dulcy.oob": "10.0.49.9", + "eddie.ucl": "10.0.0.10", + "eddie.oob": "10.0.1.10", + "equinix-gw.ams": "82.199.86.73", + "equinix-gw-1.ams": "82.199.86.74", + "equinix-gw-2.ams": "82.199.86.75", + "equinix-osm.ams": "82.199.86.76", + "equinix-gw.dub": "87.252.218.105", + "equinix-gw-1.dub": "87.252.218.106", + "equinix-gw-2.dub": "87.252.218.107", + "equinix-osm.dub": "87.252.218.108", + "faffy": "82.199.86.99", + "faffy.he": "184.104.179.131", + "faffy.ams": "10.0.48.3", + "faffy.oob": "10.0.49.3", + "fafnir": "87.252.214.98", + "fafnir.he": "184.104.226.98", + "fafnir.dub": "10.0.64.2", + "fafnir.oob": "10.0.65.2", + "fume": "87.252.214.112", + "fume.he": "184.104.226.112", + "fume.dub": "10.0.64.16", + "fume.oob": "10.0.65.16", + "grisu": "87.252.214.113", + "grisu.he": "184.104.226.113", + "grisu.dub": "10.0.64.17", + "grisu.oob": "10.0.65.17", + "horntail": "87.252.214.106", + "horntail.he": "184.104.226.106", + "horntail.dub": "10.0.64.10", + "horntail.oob": "10.0.65.10", + "idris": "87.252.214.102", + "idris.he": "184.104.226.102", + "idris.dub": "10.0.64.6", + "idris.oob": "10.0.65.6", + "karm.ams": "10.0.48.50", + "karm.oob": "10.0.49.50", + "konqi": "87.252.214.103", + "konqi.he": "184.104.226.103", + "konqi.dub": "10.0.64.7", + "konqi.oob": "10.0.65.7", + "ladon": "83.212.2.116", + "lockheed": "82.199.86.112", + "lockheed.he": "184.104.179.144", + "lockheed.ams": "10.0.48.16", + "lockheed.oob": "10.0.49.16", + "longma": "87.252.214.109", + "longma.he": "184.104.226.109", + "longma.dub": "10.0.64.13", + "longma.oob": "10.0.65.13", + "meraxes": "51.15.185.90", + "muirdris": "87.252.214.111", + "muirdris.he": "184.104.226.111", + "muirdris.dub": "10.0.64.15", + "muirdris.oob": "10.0.65.15", + "naga": "87.252.214.104", + "naga.he": "184.104.226.104", + "naga.dub": "10.0.64.8", + "naga.oob": "10.0.65.8", + "neak": "89.234.177.142", + "nidhogg": "194.71.11.111", + "nidhogg.oob": "130.239.18.115", + "norbert": "82.199.86.113", + "norbert.he": "184.104.179.145", + "norbert.ams": "10.0.48.17", + "norbert.oob": "10.0.49.17", + "odin": "82.199.86.111", + "odin.he": "184.104.179.143", + "odin.ams": "10.0.48.15", + "odin.oob": "10.0.49.15", + "oob1.ams": "10.0.48.102", + "oob1.dub": "10.0.64.102", + "orm": "23.139.196.5", + "palulukon": "3.144.0.72", + "piasa": "140.211.167.101", + "piasa.oob": "10.0.0.198", + "pdu1.ams": "10.0.48.100", + "pdu2.ams": "10.0.48.101", + "pdu1.dub": "10.0.64.100", + "pdu2.dub": "10.0.64.101", + "rhaegal": "193.198.233.218", + "ridgeback": "31.169.50.10", + "ridgeback.oob": "31.169.50.14", + "ridley": "193.60.236.19", + "ridley.ucl": "10.0.0.3", + "ridley.oob": "10.0.1.3", + "shenron": "212.110.172.32", + "smaug": "87.252.214.110", + "smaug.he": "184.104.226.110", + "smaug.dub": "10.0.64.14", + "smaug.oob": "10.0.65.14", + "snap-01.ams": "10.0.48.49", + "snap-01.oob": "10.0.49.49", + "snap-02.ucl": "10.0.0.4", + "snap-02.oob": "10.0.1.4", + "snap-03.dub": "10.0.64.50", + "snap-03.oob": "10.0.65.50", + "spike-01": "87.252.214.99", + "spike-01.he": "184.104.226.99", + "spike-01.dub": "10.0.64.3", + "spike-01.oob": "10.0.65.3", + "spike-02": "87.252.214.100", + "spike-02.he": "184.104.226.100", + "spike-02.dub": "10.0.64.4", + "spike-02.oob": "10.0.65.4", + "spike-03": "87.252.214.101", + "spike-03.he": "184.104.226.101", + "spike-03.dub": "10.0.64.5", + "spike-03.oob": "10.0.65.5", + "spike-06": "82.199.86.102", + "spike-06.he": "184.104.179.134", + "spike-06.ams": "10.0.48.6", + "spike-06.oob": "10.0.49.6", + "spike-07": "82.199.86.103", + "spike-07.he": "184.104.179.135", + "spike-07.ams": "10.0.48.7", + "spike-07.oob": "10.0.49.7", + "spike-08": "82.199.86.104", + "spike-08.he": "184.104.179.136", + "spike-08.ams": "10.0.48.8", + "spike-08.oob": "10.0.49.8", + "stormfly-03": "140.211.167.99", + "stormfly-03.oob": "10.0.0.2", + "stormfly-04": "140.211.167.100", + "stormfly-04.oob": "10.0.0.3", + "switch1.ams": "82.199.86.97", + "switch1.he.ams": "184.104.179.129", + "switch1.dub": "87.252.214.97", + "switch1.he.dub": "184.104.226.97", + "tabaluga": "82.199.86.110", + "tabaluga.he": "184.104.179.142", + "tabaluga.ams": "10.0.48.14", + "tabaluga.oob": "10.0.49.14", + "vhagar": "82.199.86.101", + "vhagar.he": "184.104.179.133", + "vhagar.ams": "10.0.48.5", + "vhagar.oob": "10.0.49.5", + "wawel": "64.225.136.96", + "ysera": "193.60.236.22", + "ysera.ucl": "10.0.0.15", + "ysera.oob": "10.0.1.15" +} diff --git a/src/ipv6.json b/src/ipv6.json new file mode 100644 index 0000000..f673927 --- /dev/null +++ b/src/ipv6.json @@ -0,0 +1,75 @@ +{ + "albi": "2001:0bc8:1200:0004:dac4:97ff:fe8a:9cfc", + "angor": "2001:43f8:1f4:b00:b283:feff:fed8:dd45", + "culebre": "2001:4d78:fe03:1c::9", + "culebre.he": "2001:470:1:b3b::9", + "dribble": "2001:4d78:500:5e3::4", + "dribble.he": "2001:470:1:fa1::4", + "dulcy": "2001:4d78:500:5e3::9", + "dulcy.he": "2001:470:1:fa1::9", + "equinix-gw.ams": "2001:4d78:500:5e2::1", + "equinix-gw-1.ams": "2001:4d78:500:5e2::2", + "equinix-gw-2.ams": "2001:4d78:500:5e2::3", + "equinix-osm.ams": "2001:4d78:500:5e2::4", + "equinix-gw.dub": "2001:4d78:fe03:1b::1", + "equinix-gw-1.dub": "2001:4d78:fe03:1b::2", + "equinix-gw-2.dub": "2001:4d78:fe03:1b::3", + "equinix-osm.dub": "2001:4d78:fe03:1b::4", + "faffy": "2001:4d78:500:5e3::3", + "faffy.he": "2001:470:1:fa1::3", + "fafnir": "2001:4d78:fe03:1c::2", + "fafnir.he": "2001:470:1:b3b::2", + "fume": "2001:4d78:fe03:1c::10", + "fume.he": "2001:470:1:b3b::10", + "grisu": "2001:4d78:fe03:1c::11", + "grisu.he": "2001:470:1:b3b::11", + "horntail": "2001:4d78:fe03:1c::a", + "horntail.he": "2001:470:1:b3b::a", + "idris": "2001:4d78:fe03:1c::6", + "idris.he": "2001:470:1:b3b::6", + "konqi": "2001:4d78:fe03:1c::7", + "konqi.he": "2001:470:1:b3b::7", + "ladon": "2001:648:2ffe:4::116", + "lockheed": "2001:4d78:500:5e3::10", + "lockheed.he": "2001:470:1:fa1::10", + "longma": "2001:4d78:fe03:1c::d", + "longma.he": "2001:470:1:b3b::d", + "meraxes": "2001:bc8:2d57:100:aa1e:84ff:fe72:e660", + "muirdris": "2001:4d78:fe03:1c::f", + "muirdris.he": "2001:470:1:b3b::f", + "naga": "2001:4d78:fe03:1c::8", + "naga.he": "2001:470:1:b3b::8", + "nidhogg": "2001:6b0:19:2::111", + "norbert": "2001:4d78:500:5e3::11", + "norbert.he": "2001:470:1:fa1::11", + "odin": "2001:4d78:500:5e3::f", + "odin.he": "2001:470:1:fa1::f", + "orm": "2602:f629:0:bc::2", + "piasa": "2605:bc80:3010:700::8cd3:a765", + "rhaegal": "2001:b68:40ff:3::2", + "shenron": "2001:41c9:1:400::32", + "smaug": "2001:4d78:fe03:1c::e", + "smaug.he": "2001:470:1:b3b::e", + "spike-01": "2001:4d78:fe03:1c::3", + "spike-01.he": "2001:470:1:b3b::3", + "spike-02": "2001:4d78:fe03:1c::4", + "spike-02.he": "2001:470:1:b3b::4", + "spike-03": "2001:4d78:fe03:1c::5", + "spike-03.he": "2001:470:1:b3b::5", + "spike-06": "2001:4d78:500:5e3::6", + "spike-06.he": "2001:470:1:fa1::6", + "spike-07": "2001:4d78:500:5e3::7", + "spike-07.he": "2001:470:1:fa1::7", + "spike-08": "2001:4d78:500:5e3::8", + "spike-08.he": "2001:470:1:fa1::8", + "stormfly-03": "2605:bc80:3010:700::8cd3:a763", + "stormfly-04": "2605:bc80:3010:700::8cd3:a764", + "switch1.he.ams": "2001:470:1:fa1::1", + "switch1.ams": "2001:4d78:500:5e3::1", + "switch1.dub": "2001:4d78:fe03:1c::1", + "switch1.he.dub": "2001:470:1:b3b::1", + "tabaluga": "2001:4d78:500:5e3::e", + "tabaluga.he": "2001:470:1:fa1::e", + "vhagar": "2001:4d78:500:5e3::5", + "vhagar.he": "2001:470:1:fa1::5" +} diff --git a/src/nominatim.openstreetmap.yml b/src/nominatim.openstreetmap.yml index bb40872..a8e45c8 100644 --- a/src/nominatim.openstreetmap.yml +++ b/src/nominatim.openstreetmap.yml @@ -8,8 +8,8 @@ europe: - 2217360 requests: 300 name: dulcy - ipv4: 184.104.179.137 - ipv6: 2001:470:1:fa1::9 + ipv4: 82.199.86.105 + ipv6: 2001:4d78:500:5e3::9 - statuscake: - 6224536 - 6224537 @@ -22,8 +22,8 @@ europe: - 6726827 requests: 500 name: vhagar - ipv4: 184.104.179.133 - ipv6: 2001:470:1:fa1::5 + ipv4: 82.199.86.101 + ipv6: 2001:4d78:500:5e3::5 default: "xx" stormfly-04: diff --git a/src/opengeodata.js b/src/opengeodata.js index f7824f2..8d84a80 100644 --- a/src/opengeodata.js +++ b/src/opengeodata.js @@ -26,8 +26,8 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Main web server and it's aliases - A("@", RIDLEY_IPV4), - A("old", RIDLEY_IPV4), // Legacy URL support https://blog.openstreetmap.org/2010/02/25/old-opengeodata-posts-now-up-at-old-opengeodata-org/ - A("www", RIDLEY_IPV4) + osm_web_service("@", "ridley"), + osm_web_service("old", "ridley"), // Legacy URL support https://blog.openstreetmap.org/2010/02/25/old-opengeodata-posts-now-up-at-old-opengeodata-org/ + osm_web_service("www", "ridley"), -); \ No newline at end of file +); diff --git a/src/openstreetmap-mg.js b/src/openstreetmap-mg.js index 80ae23c..3481492 100644 --- a/src/openstreetmap-mg.js +++ b/src/openstreetmap-mg.js @@ -24,6 +24,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), ALIAS("@", "openstreetmap-madagascar.github.io."), CNAME("www", "openstreetmap-madagascar.github.io."), - CNAME("sotm2024", "openstreetmap-madagascar.github.io.") + CNAME("sotm2024", "openstreetmap-madagascar.github.io."), ); \ No newline at end of file diff --git a/src/openstreetmap-nz.js b/src/openstreetmap-nz.js new file mode 100644 index 0000000..3f69477 --- /dev/null +++ b/src/openstreetmap-nz.js @@ -0,0 +1,41 @@ +D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), + + // Publish CAA records indicating that only letsencrypt should issue certificates + + CAA_BUILDER({ + label: "@", + iodef: "mailto:hostmaster@openstreetmap.org", + issue: [ + "letsencrypt.org", + ], + issuewild: [ + "letsencrypt.org", + ], + }), + + // Let the main domain handle the email + + MX("@", 10, "a.mx.openstreetmap.org."), + + // Delegate SPF policy to the main domain + + SPF_BUILDER({ + label: "@", + parts: [ + "v=spf1", + "include:openstreetmap.org", // main openstreetmap.org spf record + "-all" + ] + }), + + // Delegate MTA-STS policy to the main domain + + CNAME("_mta-sts", "_mta-sts.openstreetmap.org."), + + // Main web site + + ALIAS("@", "www.openstreetmap.org."), + CNAME("www", "www.openstreetmap.org."), + CNAME("api", "api.openstreetmap.org."), + +); diff --git a/src/openstreetmap-town.js b/src/openstreetmap-town.js index 0d56540..1390487 100644 --- a/src/openstreetmap-town.js +++ b/src/openstreetmap-town.js @@ -34,7 +34,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Redirect en.openstreetmap.town to en.osm.town - A("en", NAGA_IPV4), - AAAA("en", NAGA_IPV6) + osm_web_service("en", "naga"), -); \ No newline at end of file +); diff --git a/src/openstreetmap-uk.js b/src/openstreetmap-uk.js index f1f3d32..a0c4d51 100644 --- a/src/openstreetmap-uk.js +++ b/src/openstreetmap-uk.js @@ -44,40 +44,24 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Aerial imagery sites - A("hampshire.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("hampshire.aerial", KESSIE_IPV6, TTL("1h")), - A("a.hampshire.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("a.hampshire.aerial", KESSIE_IPV6, TTL("1h")), - A("b.hampshire.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("b.hampshire.aerial", KESSIE_IPV6, TTL("1h")), - A("c.hampshire.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("c.hampshire.aerial", KESSIE_IPV6, TTL("1h")), - - A("surrey.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("surrey.aerial", KESSIE_IPV6, TTL("1h")), - A("a.surrey.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("a.surrey.aerial", KESSIE_IPV6, TTL("1h")), - A("b.surrey.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("b.surrey.aerial", KESSIE_IPV6, TTL("1h")), - A("c.surrey.aerial", KESSIE_IPV4, TTL("1h")), - AAAA("c.surrey.aerial", KESSIE_IPV6, TTL("1h")), - - A("os", KESSIE_IPV4, TTL("1h")), - AAAA("os", KESSIE_IPV6, TTL("1h")), - A("a.os", KESSIE_IPV4, TTL("1h")), - AAAA("a.os", KESSIE_IPV6, TTL("1h")), - A("b.os", KESSIE_IPV4, TTL("1h")), - AAAA("b.os", KESSIE_IPV6, TTL("1h")), - A("c.os", KESSIE_IPV4, TTL("1h")), - AAAA("c.os", KESSIE_IPV6, TTL("1h")), - - A("ea", KESSIE_IPV4, TTL("1h")), - AAAA("ea", KESSIE_IPV6, TTL("1h")), - A("a.ea", KESSIE_IPV4, TTL("1h")), - AAAA("a.ea", KESSIE_IPV6, TTL("1h")), - A("b.ea", KESSIE_IPV4, TTL("1h")), - AAAA("b.ea", KESSIE_IPV6, TTL("1h")), - A("c.ea", KESSIE_IPV4, TTL("1h")), - AAAA("c.ea", KESSIE_IPV6, TTL("1h")) + osm_web_service("hampshire.aerial", "lockheed"), + osm_web_service("a.hampshire.aerial", "lockheed"), + osm_web_service("b.hampshire.aerial", "lockheed"), + osm_web_service("c.hampshire.aerial", "lockheed"), + + osm_web_service("surrey.aerial", "lockheed"), + osm_web_service("a.surrey.aerial", "lockheed"), + osm_web_service("b.surrey.aerial", "lockheed"), + osm_web_service("c.surrey.aerial", "lockheed"), + + osm_web_service("os", "lockheed"), + osm_web_service("a.os", "lockheed"), + osm_web_service("b.os", "lockheed"), + osm_web_service("c.os", "lockheed"), + + osm_web_service("ea", "lockheed"), + osm_web_service("a.ea", "lockheed"), + osm_web_service("b.ea", "lockheed"), + osm_web_service("c.ea", "lockheed"), ); diff --git a/src/openstreetmap-za.js b/src/openstreetmap-za.js index 2c68ea8..5f8e5c1 100644 --- a/src/openstreetmap-za.js +++ b/src/openstreetmap-za.js @@ -38,68 +38,26 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), CNAME("www", "www.openstreetmap.org."), CNAME("api", "api.openstreetmap.org."), - // Aerial imagery sites on ironbelly - - A("aerial", LOCKHEED_IPV4), - AAAA("aerial", LOCKHEED_IPV6), - A("a.aerial", LOCKHEED_IPV4), - AAAA("a.aerial", LOCKHEED_IPV6), - A("b.aerial", LOCKHEED_IPV4), - AAAA("b.aerial", LOCKHEED_IPV6), - A("c.aerial", LOCKHEED_IPV4), - AAAA("c.aerial", LOCKHEED_IPV6), - - // HTTPS / SVCB records - HTTPS("aerial", 1, ".", "alpn=h2"), - HTTPS("a.aerial", 1, ".", "alpn=h2"), - HTTPS("b.aerial", 1, ".", "alpn=h2"), - HTTPS("c.aerial", 1, ".", "alpn=h2"), - - // Aerial imagery sites on kessie - - A("coct.aerial", KESSIE_IPV4), - AAAA("coct.aerial", KESSIE_IPV6), - A("a.coct.aerial", KESSIE_IPV4), - AAAA("a.coct.aerial", KESSIE_IPV6), - A("b.coct.aerial", KESSIE_IPV4), - AAAA("b.coct.aerial", KESSIE_IPV6), - A("c.coct.aerial", KESSIE_IPV4), - AAAA("c.coct.aerial", KESSIE_IPV6), - - // HTTPS / SVCB records - HTTPS("coct.aerial", 1, ".", "alpn=h2"), - HTTPS("a.coct.aerial", 1, ".", "alpn=h2"), - HTTPS("b.coct.aerial", 1, ".", "alpn=h2"), - HTTPS("c.coct.aerial", 1, ".", "alpn=h2"), - - A("topo", KESSIE_IPV4), - AAAA("topo", KESSIE_IPV6), - A("a.topo", KESSIE_IPV4), - AAAA("a.topo", KESSIE_IPV6), - A("b.topo", KESSIE_IPV4), - AAAA("b.topo", KESSIE_IPV6), - A("c.topo", KESSIE_IPV4), - AAAA("c.topo", KESSIE_IPV6), - - // HTTPS / SVCB records - HTTPS("topo", 1, ".", "alpn=h2"), - HTTPS("a.topo", 1, ".", "alpn=h2"), - HTTPS("b.topo", 1, ".", "alpn=h2"), - HTTPS("c.topo", 1, ".", "alpn=h2"), - - A("namibia-topo", KESSIE_IPV4), - AAAA("namibia-topo", KESSIE_IPV6), - A("a.namibia-topo", KESSIE_IPV4), - AAAA("a.namibia-topo", KESSIE_IPV6), - A("b.namibia-topo", KESSIE_IPV4), - AAAA("b.namibia-topo", KESSIE_IPV6), - A("c.namibia-topo", KESSIE_IPV4), - AAAA("c.namibia-topo", KESSIE_IPV6), - - // HTTPS / SVCB records - HTTPS("namibia-topo", 1, ".", "alpn=h2"), - HTTPS("a.namibia-topo", 1, ".", "alpn=h2"), - HTTPS("b.namibia-topo", 1, ".", "alpn=h2"), - HTTPS("c.namibia-topo", 1, ".", "alpn=h2") + // Aerial imagery sites + + osm_web_service("aerial", "lockheed"), + osm_web_service("a.aerial", "lockheed"), + osm_web_service("b.aerial", "lockheed"), + osm_web_service("c.aerial", "lockheed"), + + osm_web_service("coct.aerial", "lockheed"), + osm_web_service("a.coct.aerial", "lockheed"), + osm_web_service("b.coct.aerial", "lockheed"), + osm_web_service("c.coct.aerial", "lockheed"), + + osm_web_service("topo", "lockheed"), + osm_web_service("a.topo", "lockheed"), + osm_web_service("b.topo", "lockheed"), + osm_web_service("c.topo", "lockheed"), + + osm_web_service("namibia-topo", "lockheed"), + osm_web_service("a.namibia-topo", "lockheed"), + osm_web_service("b.namibia-topo", "lockheed"), + osm_web_service("c.namibia-topo", "lockheed"), ); diff --git a/src/openstreetmap.js b/src/openstreetmap.js index 9269372..cfea421 100644 --- a/src/openstreetmap.js +++ b/src/openstreetmap.js @@ -25,12 +25,12 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), MX("community", 10, QUALIFY("a.mx")), MX("supporting", 10, QUALIFY("a.mx")), - A("a.mx", FAFNIR_IPV4), - AAAA("a.mx", FAFNIR_IPV6), - A("mail", FAFNIR_IPV4), - AAAA("mail", FAFNIR_IPV6), - A("mta-sts", FAFNIR_IPV4), - AAAA("mta-sts", FAFNIR_IPV6), + A("a.mx", IPV4["fafnir"]), + AAAA("a.mx", IPV6["fafnir"]), + A("mail", IPV4["fafnir"]), + AAAA("mail", IPV6["fafnir"]), + A("mta-sts", IPV4["fafnir"]), + AAAA("mta-sts", IPV6["fafnir"]), // Publish SPF records indicating that only shenron sends mail @@ -38,14 +38,20 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "@", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "ip4:184.104.226.98", // fafnir ipv4 (he.net) + "ip6:2001:470:1:b3b::2", // fafnir ipv6 (he.net) + "ip4:87.252.214.98", // fafnir ipv4 (equinix) + "ip6:2001:4d78:fe03:1c::2", // fafnir ipv6 (equinix) + "ip4:193.60.236.0/24", // ucl external + "ip4:82.199.86.96/27", // amsterdam external (equinix) + "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix) + "ip4:87.252.214.96/27", // dublin external (equinix) + "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix) + "ip4:184.104.179.128/27", // amsterdam external (he.net) + "ip6:2001:470:1:fa1::/64", // amsterdam external (he.net) + "ip4:184.104.226.96/27", // dublin external (he.net) + "ip6:2001:470:1:b3b::/64", // dublin external (he.net) + "mx", // safety net if we change mx "-all" ] }), @@ -54,14 +60,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "messages", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -70,14 +69,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "noreply", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -86,14 +78,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "otrs", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -102,14 +87,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "community", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -118,14 +96,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "supporting", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external - "mx", // safety net if we change mx + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -177,122 +148,32 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Main web servers and their aliases - A("spike-01", SPIKE01_IPV4), - AAAA("spike-01", SPIKE01_IPV6), - // A("@", SPIKE01_IPV4), - // AAAA("@", SPIKE01_IPV6), - // A("www", SPIKE01_IPV4), - // AAAA("www", SPIKE01_IPV6), - // A("api", SPIKE01_IPV4), - // AAAA("api", SPIKE01_IPV6), - // A("maps", SPIKE01_IPV4), - // AAAA("maps", SPIKE01_IPV6), - // A("mapz", SPIKE01_IPV4), - // AAAA("mapz", SPIKE01_IPV6), - A("spike-01.dub", SPIKE01_INTERNAL), - A("spike-01.oob", SPIKE01_OOB), - - A("spike-02", SPIKE02_IPV4), - AAAA("spike-02", SPIKE02_IPV6), - // A("@", SPIKE02_IPV4), - // AAAA("@", SPIKE02_IPV6), - // A("www", SPIKE02_IPV4), - // AAAA("www", SPIKE02_IPV6), - // A("api", SPIKE02_IPV4), - // AAAA("api", SPIKE02_IPV6), - // A("maps", SPIKE02_IPV4), - // AAAA("maps", SPIKE02_IPV6), - // A("mapz", SPIKE02_IPV4), - // AAAA("mapz", SPIKE02_IPV6), - A("spike-02.dub", SPIKE02_INTERNAL), - A("spike-02.oob", SPIKE02_OOB), - - A("spike-03", SPIKE03_IPV4), - AAAA("spike-03", SPIKE03_IPV6), - // A("@", SPIKE03_IPV4), - // AAAA("@", SPIKE03_IPV6), - // A("www", SPIKE03_IPV4), - // AAAA("www", SPIKE03_IPV6), - // A("api", SPIKE03_IPV4), - // AAAA("api", SPIKE03_IPV6), - // A("maps", SPIKE03_IPV4), - // AAAA("maps", SPIKE03_IPV6), - // A("mapz", SPIKE03_IPV4), - // AAAA("mapz", SPIKE03_IPV6), - A("spike-03.dub", SPIKE03_INTERNAL), - A("spike-03.oob", SPIKE03_OOB), - - A("spike-06", SPIKE06_IPV4), - AAAA("spike-06", SPIKE06_IPV6), - A("@", SPIKE06_IPV4, CF_PROXY_ON), - AAAA("@", SPIKE06_IPV6, CF_PROXY_ON), - A("www", SPIKE06_IPV4, CF_PROXY_ON), - AAAA("www", SPIKE06_IPV6, CF_PROXY_ON), - A("api", SPIKE06_IPV4, CF_PROXY_ON), - AAAA("api", SPIKE06_IPV6, CF_PROXY_ON), - A("maps", SPIKE06_IPV4, CF_PROXY_ON), - AAAA("maps", SPIKE06_IPV6, CF_PROXY_ON), - A("mapz", SPIKE06_IPV4, CF_PROXY_ON), - AAAA("mapz", SPIKE06_IPV6, CF_PROXY_ON), - A("spike-06.ams", SPIKE06_INTERNAL), - A("spike-06.oob", SPIKE06_OOB), - - A("spike-07", SPIKE07_IPV4), - AAAA("spike-07", SPIKE07_IPV6), - A("@", SPIKE07_IPV4, CF_PROXY_ON), - AAAA("@", SPIKE07_IPV6, CF_PROXY_ON), - A("www", SPIKE07_IPV4, CF_PROXY_ON), - AAAA("www", SPIKE07_IPV6, CF_PROXY_ON), - A("api", SPIKE07_IPV4, CF_PROXY_ON), - AAAA("api", SPIKE07_IPV6, CF_PROXY_ON), - A("maps", SPIKE07_IPV4, CF_PROXY_ON), - AAAA("maps", SPIKE07_IPV6, CF_PROXY_ON), - A("mapz", SPIKE07_IPV4, CF_PROXY_ON), - AAAA("mapz", SPIKE07_IPV6, CF_PROXY_ON), - A("spike-07.ams", SPIKE07_INTERNAL), - A("spike-07.oob", SPIKE07_OOB), - - A("spike-08", SPIKE08_IPV4), - AAAA("spike-08", SPIKE08_IPV6), - A("@", SPIKE08_IPV4, CF_PROXY_ON), - AAAA("@", SPIKE08_IPV6, CF_PROXY_ON), - A("www", SPIKE08_IPV4, CF_PROXY_ON), - AAAA("www", SPIKE08_IPV6, CF_PROXY_ON), - A("api", SPIKE08_IPV4, CF_PROXY_ON), - AAAA("api", SPIKE08_IPV6, CF_PROXY_ON), - A("maps", SPIKE08_IPV4, CF_PROXY_ON), - AAAA("maps", SPIKE08_IPV6, CF_PROXY_ON), - A("mapz", SPIKE08_IPV4, CF_PROXY_ON), - AAAA("mapz", SPIKE08_IPV6, CF_PROXY_ON), - A("spike-08.ams", SPIKE08_INTERNAL), - A("spike-08.oob", SPIKE08_OOB), - - // HTTPS / SVCB records - HTTPS("www", 1, ".", "alpn=h2"), - HTTPS("api", 1, ".", "alpn=h2"), - HTTPS("maps", 1, ".", "alpn=h2"), - HTTPS("mapz", 1, ".", "alpn=h2"), + osm_web_service("@", [ "spike-06", + "spike-07", + "spike-08" + ], { cfproxy: true }), - // Nominatim servers + osm_web_service("www", [ "spike-06", + "spike-07", + "spike-08" + ], { cfproxy: true }), - A("dulcy", DULCY_IPV4), - AAAA("dulcy", DULCY_IPV6), - A("dulcy.ams", DULCY_INTERNAL), - A("dulcy.oob", DULCY_OOB), + osm_web_service("api", [ "spike-06", + "spike-07", + "spike-08" + ], { cfproxy: true }), - A("longma", LONGMA_IPV4), - AAAA("longma", LONGMA_IPV6), - A("longma.dub", LONGMA_INTERNAL), - A("longma.oob", LONGMA_OOB), + osm_web_service("maps", [ "spike-06", + "spike-07", + "spike-08" + ], { cfproxy: true }), - A("stormfly-04", STORMFLY04_IPV4), - AAAA("stormfly-04", STORMFLY04_IPV6), - A("stormfly-04.oob", STORMFLY04_OOB), + osm_web_service("mapz", [ "spike-06", + "spike-07", + "spike-08" + ], { cfproxy: true }), - A("vhagar", VHAGAR_IPV4), - AAAA("vhagar", VHAGAR_IPV6), - A("vhagar.ams", VHAGAR_INTERNAL), - A("vhagar.oob", VHAGAR_OOB), + // Nominatim servers CNAME("nominatim", "nominatim.geo.openstreetmap.org."), CNAME("qgis.nominatim", "nominatim.geo.openstreetmap.org."), @@ -300,465 +181,159 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Tile servers - A("odin", ODIN_IPV4), - AAAA("odin", ODIN_IPV6), - A("odin.ams", ODIN_INTERNAL), - A("odin.oob", ODIN_OOB), - - A("ysera", YSERA_IPV4), - A("ysera.ucl", YSERA_INTERNAL), - A("ysera.oob", YSERA_OOB), - - A("culebre", CULEBRE_IPV4), - AAAA("culebre", CULEBRE_IPV6), - A("culebre.dub", CULEBRE_INTERNAL), - A("culebre.oob", CULEBRE_OOB), - - A("nidhogg", NIDHOGG_IPV4), - AAAA("nidhogg", NIDHOGG_IPV6), - A("nidhogg.oob", NIDHOGG_OOB), - - A("wawel", WAWEL_IPV4), - - A("scorch", SCORCH_IPV4), - AAAA("scorch", SCORCH_IPV6), - - A("rhaegal", RHAEGAL_IPV4), - AAAA("rhaegal", RHAEGAL_IPV6), - - A("palulukon", PALULUKON_IPV4), - - A("piasa", PIASA_IPV4), - AAAA("piasa", PIASA_IPV6), - A("piasa.oob", PIASA_OOB), - - A("bowser", BOWSER_IPV4), - - A("balerion", BALERION_IPV4), - - A("albi", ALBI_IPV4), - AAAA("albi", ALBI_IPV6), - CNAME("tile", "dualstack.n.sni.global.fastly.net."), CNAME("a.tile", "dualstack.n.sni.global.fastly.net."), CNAME("b.tile", "dualstack.n.sni.global.fastly.net."), CNAME("c.tile", "dualstack.n.sni.global.fastly.net."), - A("render", CULEBRE_IPV4), - A("render", NIDHOGG_IPV4), - AAAA("render", CULEBRE_IPV6), - AAAA("render", NIDHOGG_IPV6), + osm_web_service("render", [ "culebre", + "nidhogg" + ]), // Vector tile servers - A("cmok", CMOK_IPV4), - CNAME("vector", "dualstack.n.sni.global.fastly.net."), - // Site gateways - - A("ironbelly", IRONBELLY_IPV4), - AAAA("ironbelly", IRONBELLY_IPV6), - A("logstash", IRONBELLY_IPV4), - AAAA("logstash", IRONBELLY_IPV6), - A("ironbelly.ams", IRONBELLY_INTERNAL), - A("ironbelly.oob", IRONBELLY_OOB), - - A("fafnir", FAFNIR_IPV4), - AAAA("fafnir", FAFNIR_IPV6), - A("fafnir.dub", FAFNIR_INTERNAL), - A("fafnir.oob", FAFNIR_OOB), - // Planet servers - A("norbert", NORBERT_IPV4), - AAAA("norbert", NORBERT_IPV6), - A("backup", NORBERT_IPV4), - AAAA("backup", NORBERT_IPV6), - A("planet", NORBERT_IPV4), - AAAA("planet", NORBERT_IPV6), - A("norbert.ams", NORBERT_INTERNAL), - A("norbert.oob", NORBERT_OOB), - - // HTTPS / SVCB records - HTTPS("planet", 1, ".", "alpn=h2"), - - A("horntail", HORNTAIL_IPV4), - AAAA("horntail", HORNTAIL_IPV6), - // A("backup", HORNTAIL_IPV4), - // AAAA("backup", HORNTAIL_IPV6), - // A("planet", HORNTAIL_IPV4), - // AAAA("planet", HORNTAIL_IPV6), - A("horntail.dub", HORNTAIL_INTERNAL), - A("horntail.oob", HORNTAIL_OOB), - - // Database servers + A("backup", IPV4["norbert"]), + AAAA("backup", IPV6["norbert"]), + // A("backup", IPV4["horntail"]), + // AAAA("backup", IPV6["horntail"]), - A("snap-01.ams", SNAP01_INTERNAL), - A("snap-01.oob", SNAP01_OOB), + osm_web_service("planet", "norbert"), + // osm_web_service("planet", "horntail"), - A("snap-02.ucl", SNAP02_INTERNAL), - A("snap-02.oob", SNAP02_OOB), - - A("snap-03.dub", SNAP03_INTERNAL), - A("snap-03.oob", SNAP03_OOB), - - A("karm.ams", KARM_INTERNAL), - A("karm.oob", KARM_OOB), + // Development server with wildcard alias for user sites - A("eddie.ucl", EDDIE_INTERNAL), - A("eddie.oob", EDDIE_OOB), + osm_web_service("dev", "faffy"), + osm_web_service("*.dev", "faffy"), - // Development server with wildcard alias for user sites + osm_web_service("ooc", "faffy"), + osm_web_service("a.ooc", "faffy"), + osm_web_service("b.ooc", "faffy"), + osm_web_service("c.ooc", "faffy"), - A("faffy", FAFFY_IPV4), - AAAA("faffy", FAFFY_IPV6), - A("dev", FAFFY_IPV4), - AAAA("dev", FAFFY_IPV6), - A("*.dev", FAFFY_IPV4), - AAAA("*.dev", FAFFY_IPV6), - A("ooc", FAFFY_IPV4), - AAAA("ooc", FAFFY_IPV6), - A("a.ooc", FAFFY_IPV4), - AAAA("a.ooc", FAFFY_IPV6), - A("b.ooc", FAFFY_IPV4), - AAAA("b.ooc", FAFFY_IPV6), - A("c.ooc", FAFFY_IPV4), - AAAA("c.ooc", FAFFY_IPV6), - A("npe", FAFFY_IPV4), - AAAA("npe", FAFFY_IPV6), - A("faffy.ams", FAFFY_INTERNAL), - A("faffy.oob", FAFFY_OOB), + osm_web_service("npe", "faffy"), // Foundation server - A("ridley", RIDLEY_IPV4), - A("blog", RIDLEY_IPV4), - A("foundation", RIDLEY_IPV4), - A("ridley.ucl", RIDLEY_INTERNAL), - A("ridley.oob", RIDLEY_OOB), - - // HTTPS / SVCB records - HTTPS("blog", 1, ".", "alpn=h2"), - HTTPS("foundation", 1, ".", "alpn=h2"), + osm_web_service("blog", "ridley"), + osm_web_service("foundation", "ridley"), // Matomo server - A("smaug", SMAUG_IPV4), - AAAA("smaug", SMAUG_IPV6), - A("matomo", SMAUG_IPV4), - AAAA("matomo", SMAUG_IPV6), - A("piwik", SMAUG_IPV4), - AAAA("piwik", SMAUG_IPV6), - A("smaug.dub", SMAUG_INTERNAL), - A("smaug.oob", SMAUG_OOB), - - // HTTPS / SVCB records - HTTPS("matomo", 1, ".", "alpn=h2"), - HTTPS("piwik", 1, ".", "alpn=h2"), + osm_web_service("matomo", "smaug"), + osm_web_service("piwik", "smaug"), // Imagery servers - A("kessie", KESSIE_IPV4), - AAAA("kessie", KESSIE_IPV6), - A("agri", KESSIE_IPV4), - AAAA("agri", KESSIE_IPV6), - A("a.agri", KESSIE_IPV4), - AAAA("a.agri", KESSIE_IPV6), - A("b.agri", KESSIE_IPV4), - AAAA("b.agri", KESSIE_IPV6), - A("c.agri", KESSIE_IPV4), - AAAA("c.agri", KESSIE_IPV6), - A("os", KESSIE_IPV4), - AAAA("os", KESSIE_IPV6), - A("a.os", KESSIE_IPV4), - AAAA("a.os", KESSIE_IPV6), - A("b.os", KESSIE_IPV4), - AAAA("b.os", KESSIE_IPV6), - A("c.os", KESSIE_IPV4), - AAAA("c.os", KESSIE_IPV6), - A("kessie.oob", KESSIE_OOB), + osm_web_service("agri", "lockheed"), + osm_web_service("a.agri", "lockheed"), + osm_web_service("b.agri", "lockheed"), + osm_web_service("c.agri", "lockheed"), - // Prometheus server and munin redirect - - A("stormfly-03", STORMFLY03_IPV4), - AAAA("stormfly-03", STORMFLY03_IPV6), - A("prometheus", STORMFLY03_IPV4), - AAAA("prometheus", STORMFLY03_IPV6), - A("munin", STORMFLY03_IPV4), - AAAA("munin", STORMFLY03_IPV6), - A("stormfly-03.oob", STORMFLY03_OOB), - - // HTTPS / SVCB records - HTTPS("prometheus", 1, ".", "alpn=h2"), - HTTPS("munin", 1, ".", "alpn=h2"), - - // Management server - - A("idris", IDRIS_IPV4), - AAAA("idris", IDRIS_IPV6), - A("acme", IDRIS_IPV4), - AAAA("acme", IDRIS_IPV6), - A("apt", IDRIS_IPV4), - AAAA("apt", IDRIS_IPV6), - A("chef", IDRIS_IPV4), - AAAA("chef", IDRIS_IPV6), - A("dns", IDRIS_IPV4), - AAAA("dns", IDRIS_IPV6), - A("git", IDRIS_IPV4), - AAAA("git", IDRIS_IPV6), - A("hardware", IDRIS_IPV4), - AAAA("hardware", IDRIS_IPV6), - A("idris.dub", IDRIS_INTERNAL), - A("idris.oob", IDRIS_OOB), - - // HTTPS / SVCB records - HTTPS("acme", 1, ".", "alpn=h2"), - HTTPS("chef", 1, ".", "alpn=h2"), - HTTPS("dns", 1, ".", "alpn=h2"), - HTTPS("git", 1, ".", "alpn=h2"), - HTTPS("hardware", 1, ".", "alpn=h2"), + osm_web_service("act-imagery", "lockheed"), + osm_web_service("a.act-imagery", "lockheed"), + osm_web_service("b.act-imagery", "lockheed"), + osm_web_service("c.act-imagery", "lockheed"), - // KVMs + osm_web_service("au-vic-melbourne-imagery", "lockheed"), + osm_web_service("a.au-vic-melbourne-imagery", "lockheed"), + osm_web_service("b.au-vic-melbourne-imagery", "lockheed"), + osm_web_service("c.au-vic-melbourne-imagery", "lockheed"), - A("kvm1.ucl", KVM1_INTERNAL), + osm_web_service("os", "lockheed"), + osm_web_service("a.os", "lockheed"), + osm_web_service("b.os", "lockheed"), + osm_web_service("c.os", "lockheed"), - // Managed network switches + osm_web_service("tiler", "lockheed"), - A("switch1.ams", SWITCH1AMS_IPV4), - AAAA("switch1.ams", SWITCH1AMS_IPV6), + osm_web_service("us-imagery", "lockheed"), + osm_web_service("a.us-imagery", "lockheed"), + osm_web_service("b.us-imagery", "lockheed"), + osm_web_service("c.us-imagery", "lockheed"), - A("switch1.dub", SWITCH1DUB_IPV4), - AAAA("switch1.dub", SWITCH1DUB_IPV6), - - // Managed power strips + // Prometheus server and munin redirect - A("pdu1.ams", PDU1AMS_INTERNAL), - A("pdu2.ams", PDU2AMS_INTERNAL), + osm_web_service("prometheus", "stormfly-03"), + osm_web_service("munin", "stormfly-03"), - A("pdu1.dub", PDU1DUB_INTERNAL), - A("pdu2.dub", PDU2DUB_INTERNAL), + // Management server - // Out of band access servers + osm_web_service("acme", "idris"), + osm_web_service("apt", "idris"), + osm_web_service("chef", "idris"), + osm_web_service("dns", "idris"), + osm_web_service("git", "idris"), + osm_web_service("hardware", "idris"), - A("oob1.ams", OOB1AMS_INTERNAL), + // Bytemark machine, and the services which operate from it - A("oob1.dub", OOB1DUB_INTERNAL), + osm_web_service("lists", "shenron"), - // Bytemark machine, and the services which operate from it + // Naga services - A("shenron", SHENRON_IPV4), - AAAA("shenron", SHENRON_IPV6), - A("lists", SHENRON_IPV4), - AAAA("lists", SHENRON_IPV6), - A("help", SHENRON_IPV4), - AAAA("help", SHENRON_IPV6), - - // HTTPS / SVCB records - HTTPS("lists", 1, ".", "alpn=h2"), - HTTPS("help", 1, ".", "alpn=h2"), - - // Naga service - - A("naga", NAGA_IPV4), - AAAA("naga", NAGA_IPV6), - A("svn", NAGA_IPV4), - AAAA("svn", NAGA_IPV6), - A("trac", NAGA_IPV4), - AAAA("trac", NAGA_IPV6), - A("irc", NAGA_IPV4), - AAAA("irc", NAGA_IPV6), - A("blogs", NAGA_IPV4), - AAAA("blogs", NAGA_IPV6), - A("welcome", NAGA_IPV4), - AAAA("welcome", NAGA_IPV6), - A("operations", NAGA_IPV4), - AAAA("operations", NAGA_IPV6), - A("hot", NAGA_IPV4), - AAAA("hot", NAGA_IPV6), - A("dmca", NAGA_IPV4), - AAAA("dmca", NAGA_IPV6), - A("otrs", NAGA_IPV4), - AAAA("otrs", NAGA_IPV6), - A("birthday20", NAGA_IPV4), - AAAA("birthday20", NAGA_IPV6), - - // HTTPS / SVCB records - HTTPS("svn", 1, ".", "alpn=h2"), - HTTPS("trac", 1, ".", "alpn=h2"), - HTTPS("irc", 1, ".", "alpn=h2"), - HTTPS("blogs", 1, ".", "alpn=h2"), - HTTPS("welcome", 1, ".", "alpn=h2"), - HTTPS("operations", 1, ".", "alpn=h2"), - HTTPS("hot", 1, ".", "alpn=h2"), - HTTPS("dmca", 1, ".", "alpn=h2"), - // HTTPS("otrs", 1, ".", "alpn=h2"), - OTRS is not available using HTTPS/2 - HTTPS("birthday20", 1, ".", "alpn=h2"), - - A("naga.dub", NAGA_INTERNAL), - A("naga.oob", NAGA_OOB), + osm_web_service("svn", "naga"), + osm_web_service("trac", "naga"), + osm_web_service("irc", "naga"), + osm_web_service("blogs", "naga"), + osm_web_service("welcome", "naga"), + osm_web_service("operations", "naga"), + osm_web_service("hot", "naga"), + osm_web_service("dmca", "naga"), + osm_web_service("otrs", "naga", { h1: true, h2: false }), // OTRS is not available using HTTPS/2 + osm_web_service("birthday20", "naga"), + osm_web_service("help", "naga"), // Wiki servers - A("konqi", KONQI_IPV4), - AAAA("konqi", KONQI_IPV6), - A("wiki", KONQI_IPV4), - AAAA("wiki", KONQI_IPV6), - A("konqi.dub", KONQI_INTERNAL), - A("konqi.oob", KONQI_OOB), - - // HTTPS / SVCB records - HTTPS("wiki", 1, ".", "alpn=h2"), + osm_web_service("wiki", "konqi"), + osm_web_service("test.wiki", "muirdris"), // Overpass server - A("grisu", GRISU_IPV4), - AAAA("grisu", GRISU_IPV6), - A("query", GRISU_IPV4), - AAAA("query", GRISU_IPV6), - A("grisu.dub", GRISU_INTERNAL), - A("grisu.oob", GRISU_OOB), - - // HTTPS / SVCB records - HTTPS("query", 1, ".", "alpn=h2"), + osm_web_service("query", "grisu"), // GPS tile server - A("muirdris", MUIRDRIS_IPV4), - AAAA("muirdris", MUIRDRIS_IPV6), - A("gps-tile", MUIRDRIS_IPV4), - AAAA("gps-tile", MUIRDRIS_IPV6), - A("a.gps-tile", MUIRDRIS_IPV4), - AAAA("a.gps-tile", MUIRDRIS_IPV6), - A("b.gps-tile", MUIRDRIS_IPV4), - AAAA("b.gps-tile", MUIRDRIS_IPV6), - A("c.gps-tile", MUIRDRIS_IPV4), - AAAA("c.gps-tile", MUIRDRIS_IPV6), - A("gps.tile", MUIRDRIS_IPV4), - AAAA("gps.tile", MUIRDRIS_IPV6), - A("gps-a.tile", MUIRDRIS_IPV4), - AAAA("gps-a.tile", MUIRDRIS_IPV6), - A("gps-b.tile", MUIRDRIS_IPV4), - AAAA("gps-b.tile", MUIRDRIS_IPV6), - A("gps-c.tile", MUIRDRIS_IPV4), - AAAA("gps-c.tile", MUIRDRIS_IPV6), - A("muirdris.dub", MUIRDRIS_INTERNAL), - A("muirdris.oob", MUIRDRIS_OOB), - - // HTTPS / SVCB records - HTTPS("gps-tile", 1, ".", "alpn=h2"), - HTTPS("a.gps-tile", 1, ".", "alpn=h2"), - HTTPS("b.gps-tile", 1, ".", "alpn=h2"), - HTTPS("c.gps-tile", 1, ".", "alpn=h2"), - HTTPS("gps-a.tile", 1, ".", "alpn=h2"), - HTTPS("gps-b.tile", 1, ".", "alpn=h2"), - HTTPS("gps-c.tile", 1, ".", "alpn=h2"), - - // Tile cache servers - - A("ridgeback", RIDGEBACK_IPV4), - A("ridgeback.oob", RIDGEBACK_OOB), - A("angor", ANGOR_IPV4), - AAAA("angor", ANGOR_IPV6), - A("ladon", LADON_IPV4), - AAAA("ladon", LADON_IPV6), - A("neak", NEAK_IPV4), - A("meraxes", MERAXES_IPV4), - AAAA("meraxes", MERAXES_IPV6), + osm_web_service("gps-tile", "muirdris"), + osm_web_service("a.gps-tile", "muirdris"), + osm_web_service("b.gps-tile", "muirdris"), + osm_web_service("c.gps-tile", "muirdris"), + osm_web_service("gps.tile", "muirdris"), + osm_web_service("gps-a.tile", "muirdris"), + osm_web_service("gps-b.tile", "muirdris"), + osm_web_service("gps-c.tile", "muirdris"), // Donation site and new OSMF crm site - A("donate", RIDLEY_IPV4), - A("support", RIDLEY_IPV4), - A("supporting", RIDLEY_IPV4), - - // HTTPS / SVCB records - HTTPS("donate", 1, ".", "alpn=h2"), - HTTPS("support", 1, ".", "alpn=h2"), - HTTPS("supporting", 1, ".", "alpn=h2"), - - A("lockheed", LOCKHEED_IPV4), - AAAA("lockheed", LOCKHEED_IPV6), - A("lockheed.ams", LOCKHEED_INTERNAL), - A("lockheed.oob", LOCKHEED_OOB), - A("tiler", LOCKHEED_IPV4), - AAAA("tiler", LOCKHEED_IPV6), - A("us-imagery", LOCKHEED_IPV4), - AAAA("us-imagery", LOCKHEED_IPV6), - A("a.us-imagery", LOCKHEED_IPV4), - AAAA("a.us-imagery", LOCKHEED_IPV6), - A("b.us-imagery", LOCKHEED_IPV4), - AAAA("b.us-imagery", LOCKHEED_IPV6), - A("c.us-imagery", LOCKHEED_IPV4), - AAAA("c.us-imagery", LOCKHEED_IPV6), - - // HTTPS / SVCB records - HTTPS("tiler", 1, ".", "alpn=h2"), - HTTPS("us-imagery", 1, ".", "alpn=h2"), - HTTPS("a.us-imagery", 1, ".", "alpn=h2"), - HTTPS("b.us-imagery", 1, ".", "alpn=h2"), - HTTPS("c.us-imagery", 1, ".", "alpn=h2"), - - // Discourse server ("community") + osm_web_service("donate", "ridley"), + osm_web_service("support", "ridley"), + osm_web_service("supporting", "ridley"), - A("fume", FUME_IPV4), - AAAA("fume", FUME_IPV6), - A("fume.dub", FUME_INTERNAL), - A("fume.oob", FUME_OOB), + osm_web_service("test.civicrm", "muirdris"), - A("community", FUME_IPV4), - A("communities", FUME_IPV4), - A("c", FUME_IPV4), - AAAA("community", FUME_IPV6), - AAAA("communities", FUME_IPV6), - AAAA("c", FUME_IPV6), + // Discourse server ("community") - // HTTPS / SVCB records - HTTPS("community", 1, ".", "alpn=h2"), - HTTPS("communities", 1, ".", "alpn=h2"), - HTTPS("c", 1, ".", "alpn=h2"), + osm_web_service("community", "fume"), + osm_web_service("communities", "fume"), + osm_web_service("c", "fume"), + osm_web_service("forum", "fume"), CNAME("community-cdn", "dualstack.n.sni.global.fastly.net."), TXT("community", "google-site-verification=hQ8GZyj4KwnPqAX2oAzpbLrh6I5dfR08PSdL3icVkfg"), - A("forum", FUME_IPV4), - AAAA("forum", FUME_IPV6), - - // HTTPS / SVCB records - HTTPS("forum", 1, ".", "alpn=h2"), - // Taginfo and Staging Blog Server - A("tabaluga", TABALUGA_IPV4), - AAAA("tabaluga", TABALUGA_IPV6), - A("tabaluga.ams", TABALUGA_INTERNAL), - A("tabaluga.oob", TABALUGA_OOB), - - A("staging.blog", TABALUGA_IPV4), - AAAA("staging.blog", TABALUGA_IPV6), - - // HTTPS / SVCB records - HTTPS("staging.blog", 1, ".", "alpn=h2"), - - A("taginfo", TABALUGA_IPV4), - AAAA("taginfo", TABALUGA_IPV6), - - // HTTPS / SVCB records - HTTPS("taginfo", 1, ".", "alpn=h2"), - - // Spare servers - - A("dribble", DRIBBLE_IPV4), - AAAA("dribble", DRIBBLE_IPV6), - A("dribble.ams", DRIBBLE_INTERNAL), - A("dribble.oob", DRIBBLE_OOB), - - // Uptime site at StatusCake + osm_web_service("taginfo", "tabaluga"), - CNAME("uptime", "uptimessl-new.statuscake.com."), + // Staging Blog Server - // Dynamic DNS records + osm_web_service("staging.blog", "tabaluga"), - DYNAMIC_RECORDS + // Awards (external - Ilya Zverev) + ALIAS("awards", "awards.osmz.ee."), ); diff --git a/src/osm-li.js b/src/osm-li.js index e8f0f7b..19807db 100644 --- a/src/osm-li.js +++ b/src/osm-li.js @@ -4,6 +4,6 @@ D(DOMAIN, REGISTRAR, NAMESERVER("palpuogna.sosm.ch."), NAMESERVER("ns.poole.ch."), NAMESERVER("he.poole.ch."), - NAMESERVER("ns3.spreng.ch.") + NAMESERVER("ns3.spreng.ch."), ); diff --git a/src/osm-wiki.js b/src/osm-wiki.js index 80b1080..39f9717 100644 --- a/src/osm-wiki.js +++ b/src/osm-wiki.js @@ -20,12 +20,12 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), MX("@", 10, QUALIFY("a.mx")), - A("a.mx", FAFNIR_IPV4), - AAAA("a.mx", FAFNIR_IPV6), - A("mail", FAFNIR_IPV4), - AAAA("mail", FAFNIR_IPV6), - A("mta-sts", FAFNIR_IPV4), - AAAA("mta-sts", FAFNIR_IPV6), + A("a.mx", IPV4["fafnir"]), + AAAA("a.mx", IPV6["fafnir"]), + A("mail", IPV4["fafnir"]), + AAAA("mail", IPV6["fafnir"]), + A("mta-sts", IPV4["fafnir"]), + AAAA("mta-sts", IPV6["fafnir"]), // Delegate SPF policy to the main domain @@ -58,11 +58,8 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), TXT("@", "_globalsign-domain-verification=ps00GlW1BzY9c2_cwH_pFqRkvzZyaCVZ-3RLssRG6S"), TXT("@", "_globalsign-domain-verification=W0buKB5ZmL-VwwHw2oQyQImk3I1q3hSemf2qmB1hjP"), - A("wiki", KONQI_IPV4), - AAAA("wiki", KONQI_IPV6), - A("www", KONQI_IPV4), - AAAA("www", KONQI_IPV6), - A("@", KONQI_IPV4), - AAAA("@", KONQI_IPV6) + osm_web_service("wiki", "konqi"), + osm_web_service("www", "konqi"), + osm_web_service("@", "konqi"), -); \ No newline at end of file +); diff --git a/src/osm2pgsql.js b/src/osm2pgsql.js index e7cb962..391e827 100644 --- a/src/osm2pgsql.js +++ b/src/osm2pgsql.js @@ -21,6 +21,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), AAAA("www", "2a01:4f8:1c17:6433::2"), // Test server for osm2pgsql development - A("test", "135.181.221.216") + A("test", "135.181.221.216"), ); diff --git a/src/osmfoundation.js b/src/osmfoundation.js index d64efe0..70c1d87 100644 --- a/src/osmfoundation.js +++ b/src/osmfoundation.js @@ -31,13 +31,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), "v=spf1", "include:mailbox.org", // mailbox.org "include:_spf.google.com", // Google GSuite - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -46,13 +40,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), label: "wiki", parts: [ "v=spf1", - "ip4:184.104.226.98", // fafnir ipv4 - "ip6:2001:470:1:b3b::2", // fafnir ipv6 - "ip4:193.60.236.0/24", // ucl external - "ip4:184.104.179.128/27", // amsterdam external - "ip6:2001:470:1:fa1::/64", // amsterdam external - "ip4:184.104.226.96/27", // dublin external - "ip6:2001:470:1:b3b::/64", // dublin external + "include:openstreetmap.org", // main openstreetmap.org spf record "-all" ] }), @@ -103,49 +91,27 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Main web server and it's aliases - A("@", RIDLEY_IPV4), - A("www", RIDLEY_IPV4), - A("wiki", RIDLEY_IPV4), - A("blog", RIDLEY_IPV4), - A("crm", RIDLEY_IPV4), - A("join", RIDLEY_IPV4), - A("support", RIDLEY_IPV4), - A("supporting", RIDLEY_IPV4), - A("donate", RIDLEY_IPV4), - - A("board", RIDLEY_IPV4), - A("dwg", RIDLEY_IPV4), - A("mwg", RIDLEY_IPV4), - A("operations", NAGA_IPV4), - AAAA("operations", NAGA_IPV6), - - // HTTPS / SVCB records - HTTPS("www", 1, ".", "alpn=h2"), - HTTPS("wiki", 1, ".", "alpn=h2"), - HTTPS("blog", 1, ".", "alpn=h2"), - HTTPS("crm", 1, ".", "alpn=h2"), - HTTPS("join", 1, ".", "alpn=h2"), - HTTPS("support", 1, ".", "alpn=h2"), - HTTPS("supporting", 1, ".", "alpn=h2"), - HTTPS("donate", 1, ".", "alpn=h2"), - HTTPS("board", 1, ".", "alpn=h2"), - HTTPS("dwg", 1, ".", "alpn=h2"), - HTTPS("mwg", 1, ".", "alpn=h2"), - HTTPS("operations", 1, ".", "alpn=h2"), + osm_web_service("@", "ridley"), + osm_web_service("www", "ridley"), + osm_web_service("wiki", "ridley"), + osm_web_service("blog", "ridley"), + osm_web_service("crm", "ridley"), + osm_web_service("join", "ridley"), + osm_web_service("support", "ridley"), + osm_web_service("supporting", "ridley"), + osm_web_service("donate", "ridley"), + osm_web_service("board", "ridley"), + osm_web_service("dwg", "ridley"), + osm_web_service("mwg", "ridley"), + osm_web_service("operations", "naga"), // Nextcloud instance CNAME("files", "nextcloud-openstreetmapfoundation.cloud68.systems."), // Staging Blog - A("staging.blog", TABALUGA_IPV4), - AAAA("staging.blog", TABALUGA_IPV6), - // HTTPS / SVCB records - HTTPS("staging.blog", 1, ".", "alpn=h2"), + osm_web_service("staging.blog", "tabaluga"), - A("hardware", IDRIS_IPV4), - - // HTTPS / SVCB records - HTTPS("hardware", 1, ".", "alpn=h2") + osm_web_service("hardware", "idris"), ); diff --git a/src/ptr_equinix_ams_ipv4.js b/src/ptr_equinix_ams_ipv4.js index 46e0704..3245ec4 100644 --- a/src/ptr_equinix_ams_ipv4.js +++ b/src/ptr_equinix_ams_ipv4.js @@ -1,14 +1,14 @@ -// http://www.he.net/adm/reverse.dns.html (RFC4183 notation) D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), - PTR(DRIBBLE_IPV4.split(".").pop(), "dribble.openstreetmap.org."), - PTR(DULCY_IPV4.split(".").pop(), "dulcy.openstreetmap.org."), - PTR(FAFFY_IPV4.split(".").pop(), "faffy.openstreetmap.org."), - PTR(IRONBELLY_IPV4.split(".").pop(), "ironbelly.openstreetmap.org."), - PTR(NORBERT_IPV4.split(".").pop(), "norbert.openstreetmap.org."), - PTR(ODIN_IPV4.split(".").pop(), "odin.openstreetmap.org."), - PTR(SPIKE06_IPV4.split(".").pop(), "spike-06.openstreetmap.org."), - PTR(SPIKE07_IPV4.split(".").pop(), "spike-07.openstreetmap.org."), - PTR(SPIKE08_IPV4.split(".").pop(), "spike-08.openstreetmap.org."), - PTR(VHAGAR_IPV4.split(".").pop(), "vhagar.openstreetmap.org."), - PTR(SWITCH1AMS_IPV4.split(".").pop(), "switch1.ams.openstreetmap.org.") + PTR(IPV4["dribble"], "dribble.openstreetmap.org."), + PTR(IPV4["dulcy"], "dulcy.openstreetmap.org."), + PTR(IPV4["faffy"], "faffy.openstreetmap.org."), + PTR(IPV4["lockheed"], "lockheed.openstreetmap.org."), + PTR(IPV4["norbert"], "norbert.openstreetmap.org."), + PTR(IPV4["odin"], "odin.openstreetmap.org."), + PTR(IPV4["spike-06"], "spike-06.openstreetmap.org."), + PTR(IPV4["spike-07"], "spike-07.openstreetmap.org."), + PTR(IPV4["spike-08"], "spike-08.openstreetmap.org."), + PTR(IPV4["tabaluga"], "tabaluga.openstreetmap.org."), + PTR(IPV4["vhagar"], "vhagar.openstreetmap.org."), + PTR(IPV4["switch1.ams"], "switch1.ams.openstreetmap.org."), ); diff --git a/src/ptr_equinix_ams_ipv6.js b/src/ptr_equinix_ams_ipv6.js index c670fb0..db746c7 100644 --- a/src/ptr_equinix_ams_ipv6.js +++ b/src/ptr_equinix_ams_ipv6.js @@ -1,13 +1,14 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), - PTR(DRIBBLE_IPV6, "dribble.openstreetmap.org."), - PTR(DULCY_IPV6, "dulcy.openstreetmap.org."), - PTR(FAFFY_IPV6, "faffy.openstreetmap.org."), - PTR(IRONBELLY_IPV6, "ironbelly.openstreetmap.org."), - PTR(NORBERT_IPV6, "norbert.openstreetmap.org."), - PTR(ODIN_IPV6, "odin.openstreetmap.org."), - PTR(SPIKE06_IPV6, "spike-06.openstreetmap.org."), - PTR(SPIKE07_IPV6, "spike-07.openstreetmap.org."), - PTR(SPIKE08_IPV6, "spike-08.openstreetmap.org."), - PTR(VHAGAR_IPV6, "vhagar.openstreetmap.org."), - PTR(SWITCH1AMS_IPV6, "switch1.ams.openstreetmap.org.") + PTR(IPV6["dribble"], "dribble.openstreetmap.org."), + PTR(IPV6["dulcy"], "dulcy.openstreetmap.org."), + PTR(IPV6["faffy"], "faffy.openstreetmap.org."), + PTR(IPV6["lockheed"], "lockheed.openstreetmap.org."), + PTR(IPV6["norbert"], "norbert.openstreetmap.org."), + PTR(IPV6["odin"], "odin.openstreetmap.org."), + PTR(IPV6["spike-06"], "spike-06.openstreetmap.org."), + PTR(IPV6["spike-07"], "spike-07.openstreetmap.org."), + PTR(IPV6["spike-08"], "spike-08.openstreetmap.org."), + PTR(IPV6["tabaluga"], "tabaluga.openstreetmap.org."), + PTR(IPV6["vhagar"], "vhagar.openstreetmap.org."), + PTR(IPV6["switch1.ams"], "switch1.ams.openstreetmap.org."), ); diff --git a/src/ptr_equinix_dub_ipv4.js b/src/ptr_equinix_dub_ipv4.js index eefcdbd..0330b6d 100644 --- a/src/ptr_equinix_dub_ipv4.js +++ b/src/ptr_equinix_dub_ipv4.js @@ -1,16 +1,17 @@ -// http://www.he.net/adm/reverse.dns.html (RFC4183 notation) D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), - PTR(CULEBRE_IPV4.split(".").pop(), "culebre.openstreetmap.org."), - PTR(FAFNIR_IPV4.split(".").pop(), "fafnir.openstreetmap.org."), - PTR(HORNTAIL_IPV4.split(".").pop(), "horntail.openstreetmap.org."), - PTR(IDRIS_IPV4.split(".").pop(), "idris.openstreetmap.org."), - PTR(KONQI_IPV4.split(".").pop(), "konqi.openstreetmap.org."), - PTR(LONGMA_IPV4.split(".").pop(), "longma.openstreetmap.org."), - PTR(MUIRDRIS_IPV4.split(".").pop(), "muirdris.openstreetmap.org."), - PTR(NAGA_IPV4.split(".").pop(), "naga.openstreetmap.org."), - PTR(SMAUG_IPV4.split(".").pop(), "smaug.openstreetmap.org."), - PTR(SPIKE01_IPV4.split(".").pop(), "spike-01.openstreetmap.org."), - PTR(SPIKE02_IPV4.split(".").pop(), "spike-02.openstreetmap.org."), - PTR(SPIKE03_IPV4.split(".").pop(), "spike-03.openstreetmap.org."), - PTR(SWITCH1DUB_IPV4.split(".").pop(), "switch1.dub.openstreetmap.org.") + PTR(IPV4["culebre"], "culebre.openstreetmap.org."), + PTR(IPV4["fafnir"], "fafnir.openstreetmap.org."), + PTR(IPV4["fume"], "fume.openstreetmap.org."), + PTR(IPV4["grisu"], "grisu.openstreetmap.org."), + PTR(IPV4["horntail"], "horntail.openstreetmap.org."), + PTR(IPV4["idris"], "idris.openstreetmap.org."), + PTR(IPV4["konqi"], "konqi.openstreetmap.org."), + PTR(IPV4["longma"], "longma.openstreetmap.org."), + PTR(IPV4["muirdris"], "muirdris.openstreetmap.org."), + PTR(IPV4["naga"], "naga.openstreetmap.org."), + PTR(IPV4["smaug"], "smaug.openstreetmap.org."), + PTR(IPV4["spike-01"], "spike-01.openstreetmap.org."), + PTR(IPV4["spike-02"], "spike-02.openstreetmap.org."), + PTR(IPV4["spike-03"], "spike-03.openstreetmap.org."), + PTR(IPV4["switch1.dub"], "switch1.dub.openstreetmap.org."), ); diff --git a/src/ptr_equinix_dub_ipv6.js b/src/ptr_equinix_dub_ipv6.js index e398d8a..0e5fdae 100644 --- a/src/ptr_equinix_dub_ipv6.js +++ b/src/ptr_equinix_dub_ipv6.js @@ -1,15 +1,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), - PTR(CULEBRE_IPV6, "culebre.openstreetmap.org."), - PTR(FAFNIR_IPV6, "fafnir.openstreetmap.org."), - PTR(HORNTAIL_IPV6, "horntail.openstreetmap.org."), - PTR(IDRIS_IPV6, "idris.openstreetmap.org."), - PTR(KONQI_IPV6, "konqi.openstreetmap.org."), - PTR(LONGMA_IPV6, "longma.openstreetmap.org."), - PTR(MUIRDRIS_IPV6.split(".").pop(), "muirdris.openstreetmap.org."), - PTR(NAGA_IPV6, "naga.openstreetmap.org."), - PTR(SMAUG_IPV6.split(".").pop(), "smaug.openstreetmap.org."), - PTR(SPIKE01_IPV6, "spike-01.openstreetmap.org."), - PTR(SPIKE02_IPV6, "spike-02.openstreetmap.org."), - PTR(SPIKE03_IPV6, "spike-03.openstreetmap.org."), - PTR(SWITCH1DUB_IPV6, "switch1.dub.openstreetmap.org.") + PTR(IPV6["culebre"], "culebre.openstreetmap.org."), + PTR(IPV6["fafnir"], "fafnir.openstreetmap.org."), + PTR(IPV6["fume"], "fume.openstreetmap.org."), + PTR(IPV6["grisu"], "grisu.openstreetmap.org."), + PTR(IPV6["horntail"], "horntail.openstreetmap.org."), + PTR(IPV6["idris"], "idris.openstreetmap.org."), + PTR(IPV6["konqi"], "konqi.openstreetmap.org."), + PTR(IPV6["longma"], "longma.openstreetmap.org."), + PTR(IPV6["muirdris"], "muirdris.openstreetmap.org."), + PTR(IPV6["naga"], "naga.openstreetmap.org."), + PTR(IPV6["smaug"], "smaug.openstreetmap.org."), + PTR(IPV6["spike-01"], "spike-01.openstreetmap.org."), + PTR(IPV6["spike-02"], "spike-02.openstreetmap.org."), + PTR(IPV6["spike-03"], "spike-03.openstreetmap.org."), + PTR(IPV6["switch1.dub"], "switch1.dub.openstreetmap.org."), ); diff --git a/src/ptr_he_ams_ipv4.js b/src/ptr_he_ams_ipv4.js new file mode 100644 index 0000000..d1f2406 --- /dev/null +++ b/src/ptr_he_ams_ipv4.js @@ -0,0 +1,14 @@ +D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), + PTR(IPV4["dribble.he"], "dribble.he.openstreetmap.org."), + PTR(IPV4["dulcy.he"], "dulcy.he.openstreetmap.org."), + PTR(IPV4["faffy.he"], "faffy.he.openstreetmap.org."), + PTR(IPV4["lockheed.he"], "lockheed.he.openstreetmap.org."), + PTR(IPV4["norbert.he"], "norbert.he.openstreetmap.org."), + PTR(IPV4["odin.he"], "odin.he.openstreetmap.org."), + PTR(IPV4["spike-06.he"], "spike-06.he.openstreetmap.org."), + PTR(IPV4["spike-07.he"], "spike-07.he.openstreetmap.org."), + PTR(IPV4["spike-08.he"], "spike-08.he.openstreetmap.org."), + PTR(IPV4["tabaluga.he"], "tabaluga.he.openstreetmap.org."), + PTR(IPV4["vhagar.he"], "vhagar.he.openstreetmap.org."), + PTR(IPV4["switch1.he.ams"], "switch1.he.ams.openstreetmap.org."), +); diff --git a/src/ptr_he_ams_ipv6.js b/src/ptr_he_ams_ipv6.js new file mode 100644 index 0000000..f4a60f0 --- /dev/null +++ b/src/ptr_he_ams_ipv6.js @@ -0,0 +1,14 @@ +D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), + PTR(IPV6["dribble.he"], "dribble.he.openstreetmap.org."), + PTR(IPV6["dulcy.he"], "dulcy.he.openstreetmap.org."), + PTR(IPV6["faffy.he"], "faffy.he.openstreetmap.org."), + PTR(IPV6["lockheed.he"], "lockheed.he.openstreetmap.org."), + PTR(IPV6["norbert.he"], "norbert.he.openstreetmap.org."), + PTR(IPV6["odin.he"], "odin.he.openstreetmap.org."), + PTR(IPV6["spike-06.he"], "spike-06.he.openstreetmap.org."), + PTR(IPV6["spike-07.he"], "spike-07.he.openstreetmap.org."), + PTR(IPV6["spike-08.he"], "spike-08.he.openstreetmap.org."), + PTR(IPV6["tabaluga.he"], "tabaluga.he.openstreetmap.org."), + PTR(IPV6["vhagar.he"], "vhagar.he.openstreetmap.org."), + PTR(IPV6["switch1.he.ams"], "switch1.he.ams.openstreetmap.org."), +); diff --git a/src/ptr_he_dub_ipv4.js b/src/ptr_he_dub_ipv4.js new file mode 100644 index 0000000..0f17bb1 --- /dev/null +++ b/src/ptr_he_dub_ipv4.js @@ -0,0 +1,18 @@ +// http://www.he.net/adm/reverse.dns.html (RFC4183 notation) +D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), + PTR(IPV4["culebre.he"], "culebre.he.openstreetmap.org."), + PTR(IPV4["fafnir.he"], "fafnir.he.openstreetmap.org."), + PTR(IPV4["fume.he"], "fume.he.openstreetmap.org."), + PTR(IPV4["grisu.he"], "grisu.he.openstreetmap.org."), + PTR(IPV4["horntail.he"], "horntail.he.openstreetmap.org."), + PTR(IPV4["idris.he"], "idris.he.openstreetmap.org."), + PTR(IPV4["konqi.he"], "konqi.he.openstreetmap.org."), + PTR(IPV4["longma.he"], "longma.he.openstreetmap.org."), + PTR(IPV4["muirdris.he"], "muirdris.he.openstreetmap.org."), + PTR(IPV4["naga.he"], "naga.he.openstreetmap.org."), + PTR(IPV4["smaug.he"], "smaug.he.openstreetmap.org."), + PTR(IPV4["spike-01.he"], "spike-01.he.openstreetmap.org."), + PTR(IPV4["spike-02.he"], "spike-02.he.openstreetmap.org."), + PTR(IPV4["spike-03.he"], "spike-03.he.openstreetmap.org."), + PTR(IPV4["switch1.he.dub"], "switch1.he.dub.openstreetmap.org."), +); diff --git a/src/ptr_he_dub_ipv6.js b/src/ptr_he_dub_ipv6.js new file mode 100644 index 0000000..15e1357 --- /dev/null +++ b/src/ptr_he_dub_ipv6.js @@ -0,0 +1,17 @@ +D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), + PTR(IPV6["culebre.he"], "culebre.he.openstreetmap.org."), + PTR(IPV6["fafnir.he"], "fafnir.he.openstreetmap.org."), + PTR(IPV6["fume.he"], "fume.he.openstreetmap.org."), + PTR(IPV6["grisu.he"], "grisu.he.openstreetmap.org."), + PTR(IPV6["horntail.he"], "horntail.he.openstreetmap.org."), + PTR(IPV6["idris.he"], "idris.he.openstreetmap.org."), + PTR(IPV6["konqi.he"], "konqi.he.openstreetmap.org."), + PTR(IPV6["longma.he"], "longma.he.openstreetmap.org."), + PTR(IPV6["muirdris.he"], "muirdris.he.openstreetmap.org."), + PTR(IPV6["naga.he"], "naga.he.openstreetmap.org."), + PTR(IPV6["smaug.he"], "smaug.he.openstreetmap.org."), + PTR(IPV6["spike-01.he"], "spike-01.he.openstreetmap.org."), + PTR(IPV6["spike-02.he"], "spike-02.he.openstreetmap.org."), + PTR(IPV6["spike-03.he"], "spike-03.he.openstreetmap.org."), + PTR(IPV6["switch1.he.dub"], "switch1.he.dub.openstreetmap.org."), +); diff --git a/src/stateofthemap-eu.js b/src/stateofthemap-eu.js index 14776b1..b3cabe0 100644 --- a/src/stateofthemap-eu.js +++ b/src/stateofthemap-eu.js @@ -13,21 +13,35 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), ], }), - // Block email delivery + // Email delivery + SPF_BUILDER({ + label: "@", + parts: [ + "v=spf1", + "include:secureserver.net", + "-all" + ] + }), + + TXT("_dmarc", "v=DMARC1; p=none;"), + + CNAME("k2._domainkey", "dkim2.mcsv.net."), + CNAME("k3._domainkey", "dkim3.mcsv.net."), + A("mail", "92.205.4.228"), - TXT("_dmarc", "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s;"), - TXT("*._domainkey", "v=DKIM1; p="), - TXT("@", "v=spf1 -all"), + MX("@", 10, "mail"), - // Site hosted on github pages + // Web service for stateofthemap.eu index site + osm_web_service("@", "naga"), + osm_web_service("www", "naga"), + + // 2025 SoTM site + CNAME("2025", "osm-uk.github.io."), - ALIAS("@", "openstreetmap-polska.github.io."), - CNAME("www", "openstreetmap-polska.github.io."), - // Previous editions - + A("2014", "49.12.5.171"), CNAME("2023", "osmbe.github.io."), - CNAME("2024", "openstreetmap-polska.github.io.") - + CNAME("2024", "openstreetmap-polska.github.io."), + ); diff --git a/src/stateofthemap.js b/src/stateofthemap.js index a224ea4..f958816 100644 --- a/src/stateofthemap.js +++ b/src/stateofthemap.js @@ -46,59 +46,27 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Main web server and it's aliases - A("@", NAGA_IPV4), - AAAA("@", NAGA_IPV6), - A("www", NAGA_IPV4), - AAAA("www", NAGA_IPV6), - A("2024", NAGA_IPV4), - AAAA("2024", NAGA_IPV6), - A("2022", NAGA_IPV4), - AAAA("2022", NAGA_IPV6), - A("2021", NAGA_IPV4), - AAAA("2021", NAGA_IPV6), - A("2020", NAGA_IPV4), - AAAA("2020", NAGA_IPV6), - A("2019", NAGA_IPV4), - AAAA("2019", NAGA_IPV6), - A("2018", NAGA_IPV4), - AAAA("2018", NAGA_IPV6), - A("2017", NAGA_IPV4), - AAAA("2017", NAGA_IPV6), - A("2016", NAGA_IPV4), - AAAA("2016", NAGA_IPV6), - A("2013", NAGA_IPV4), - AAAA("2013", NAGA_IPV6), - A("2012", RIDLEY_IPV4), - A("2011", RIDLEY_IPV4), - A("2010", RIDLEY_IPV4), - A("2009", NAGA_IPV4), - AAAA("2009", NAGA_IPV6), - A("2008", NAGA_IPV4), - AAAA("2008", NAGA_IPV6), - A("2007", NAGA_IPV4), - AAAA("2007", NAGA_IPV6), - - // HTTPS / SVCB records - HTTPS("@", 1, ".", "alpn=h2"), - HTTPS("www", 1, ".", "alpn=h2"), - HTTPS("2024", 1, ".", "alpn=h2"), - HTTPS("2022", 1, ".", "alpn=h2"), - HTTPS("2021", 1, ".", "alpn=h2"), - HTTPS("2020", 1, ".", "alpn=h2"), - HTTPS("2019", 1, ".", "alpn=h2"), - HTTPS("2018", 1, ".", "alpn=h2"), - HTTPS("2017", 1, ".", "alpn=h2"), - HTTPS("2016", 1, ".", "alpn=h2"), - HTTPS("2013", 1, ".", "alpn=h2"), - HTTPS("2012", 1, ".", "alpn=h2"), - HTTPS("2011", 1, ".", "alpn=h2"), - HTTPS("2010", 1, ".", "alpn=h2"), - HTTPS("2009", 1, ".", "alpn=h2"), - HTTPS("2008", 1, ".", "alpn=h2"), - HTTPS("2007", 1, ".", "alpn=h2"), + osm_web_service("@", "naga"), + osm_web_service("www", "naga"), + osm_web_service("2025", "naga"), + osm_web_service("2024", "naga"), + osm_web_service("2022", "naga"), + osm_web_service("2021", "naga"), + osm_web_service("2020", "naga"), + osm_web_service("2019", "naga"), + osm_web_service("2018", "naga"), + osm_web_service("2017", "naga"), + osm_web_service("2016", "naga"), + osm_web_service("2013", "naga"), + osm_web_service("2012", "ridley"), + osm_web_service("2011", "ridley"), + osm_web_service("2010", "ridley"), + osm_web_service("2009", "naga"), + osm_web_service("2008", "naga"), + osm_web_service("2007", "naga"), // Google Site Verification - Grant TXT("2022", "google-site-verification=wT1dJzSYM_2By372lJ_v9IU1crF21qOySEAPABxUcyo"), - TXT("@", "google-site-verification=pqJHZHtrC4UhevQdPlR_2gVDPml6UCwmyHq75bfWLRQ") + TXT("@", "google-site-verification=pqJHZHtrC4UhevQdPlR_2gVDPml6UCwmyHq75bfWLRQ"), ); diff --git a/src/switch2osm.js b/src/switch2osm.js index 26097f2..cf4b9ce 100644 --- a/src/switch2osm.js +++ b/src/switch2osm.js @@ -26,13 +26,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER), // Main web server and it's aliases - A("@", NAGA_IPV4), - AAAA("@", NAGA_IPV6), - A("www", NAGA_IPV4), - AAAA("www", NAGA_IPV6), - - // HTTPS / SVCB records - HTTPS("@", 1, ".", "alpn=h2"), - HTTPS("www", 1, ".", "alpn=h2") + osm_web_service("@", "naga"), + osm_web_service("www", "naga"), );