]> git.openstreetmap.org Git - dns.git/commitdiff
Merge remote-tracking branch 'github/pull/14'
authorTom Hughes <tom@compton.nu>
Tue, 21 Jun 2022 15:58:29 +0000 (16:58 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 21 Jun 2022 15:58:29 +0000 (16:58 +0100)
25 files changed:
.editorconfig [new file with mode: 0644]
Dockerfile
Makefile
README.md
bandwidth/nominatim.openstreetmap.yml [deleted file]
bandwidth/tile.openstreetmap.yml [deleted file]
bin/mkcountries
bin/mkgeo
bin/mksshfp
dnsconfig.js
requests/nominatim.openstreetmap.yml [new file with mode: 0644]
src/hosts.js
src/nominatim.openstreetmap.yml
src/opengeodata.js
src/openstreetmap-uk.js
src/openstreetmap-za.js
src/openstreetmap.js
src/osm-li.js
src/osm2pgsql.js
src/osmfoundation.js
src/render.openstreetmap.yml [deleted file]
src/stateofthemap-eu.js
src/stateofthemap.js
src/switch2osm.js
src/tile.openstreetmap.yml [deleted file]

diff --git a/.editorconfig b/.editorconfig
new file mode 100644 (file)
index 0000000..2731998
--- /dev/null
@@ -0,0 +1,10 @@
+# editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_trailing_newline = true
index 8799bfb9c3d42871f81b55ffef9c75c506639612..2993781cdc7a01e70c8e1973ae4b47ae1b1ae1a5 100644 (file)
@@ -8,14 +8,14 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
       libjson-xs-perl \
       jq \
       less \
-      curl
+      curl \
+      ca-certificates
 
-RUN curl -fsSL https://github.com/StackExchange/dnscontrol/releases/download/v3.3.0/dnscontrol-Linux -o /usr/local/bin/dnscontrol \
-    && chmod +x /usr/local/bin/dnscontrol \
-    && /usr/local/bin/dnscontrol version
+RUN curl -fsSL https://github.com/StackExchange/dnscontrol/releases/download/v3.13.0/dnscontrol_3.13.0_amd64.deb -o /tmp/dnscontrol.deb \
+    && apt install /tmp/dnscontrol.deb -y
 
 WORKDIR /dns
 ADD . .
-RUN make
+RUN make preview
 
 VOLUME ["/dns/data"]
index 063dfb8f8318071731eec224132797ffd248dddd..ee2fd7b6ac1c451ef363f514ac1a1fa6be164a56 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -19,13 +19,7 @@ update_geodns: gdns
 sshfp:
        bin/mksshfp
 
-gdns: gdns_tile gdns_render gdns_nominatim
-
-gdns_tile: lib/countries.xml origins/tile.openstreetmap.yml
-       bin/mkgeo origins/tile.openstreetmap.yml src/tile.openstreetmap.yml tile origins/render.openstreetmap.yml tile
-
-gdns_render: lib/countries.xml origins/render.openstreetmap.yml
-       bin/mkgeo origins/render.openstreetmap.yml src/render.openstreetmap.yml render origins/tile-total.openstreetmap.yml
+gdns: gdns_nominatim
 
 gdns_nominatim: lib/countries.xml origins/nominatim.openstreetmap.yml
        bin/mkgeo origins/nominatim.openstreetmap.yml src/nominatim.openstreetmap.yml nominatim origins/nominatim-total.openstreetmap.yml nominatim
@@ -36,10 +30,5 @@ clean:
 lib/countries.xml:
        curl -s -o $@ http://api.geonames.org/countryInfo?username=demo
 
-origins/tile.openstreetmap.yml: bin/mkcountries lib/countries.xml bandwidth/tile.openstreetmap.yml
-       bin/mkcountries bandwidth/tile.openstreetmap.yml origins/tile.openstreetmap.yml
-
-origins/render.openstreetmap.yml: gdns_tile
-
-origins/nominatim.openstreetmap.yml: bin/mkcountries lib/countries.xml bandwidth/nominatim.openstreetmap.yml
-       bin/mkcountries bandwidth/nominatim.openstreetmap.yml origins/nominatim.openstreetmap.yml
+origins/nominatim.openstreetmap.yml: bin/mkcountries lib/countries.xml requests/nominatim.openstreetmap.yml
+       bin/mkcountries requests/nominatim.openstreetmap.yml origins/nominatim.openstreetmap.yml
index 052c8f34b8c6d8010860ce7ac9aa913fec198cbe..95cbcb836a87f00cecbeb5939e87c6e42832f663 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,74 +1,14 @@
 OpenStreetMap DNS
 ======================================
 
-This repository contains the DNS zone file templates and related code for managing OpenStreetMap.org and other domain names DNS. The full list of domains are in the [Makefile](Makefile).
+This repository contains the DNS zone templates and related code for managing OpenStreetMap.org and other domain names. The full list of domains managed by this repo are in the [dnsconfig.js](dnsconfig.js) file.
 
 ## Standard DNS Zone Files
 
-The [zone files templates](src/) are in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax and are written out by the [Makefile](Makefile).
+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)
 
-On a repo commit, a git [post-receive](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/files/default/post-receive) runs `make update` via a [script](https://github.com/openstreetmap/chef/blob/master/cookbooks/dns/templates/default/dns-update.erb) which then pushes the updated zone files to the authoritative DNS nameservers.
+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.
 
 ## GeoDNS Zones
 
-The GeoDNS zones are handled differently.
-
-### tile.openstreetmap.org (mkgeo Generated)
-
-The `tile.openstreetmap.org` and `[a|b|c].tile.openstreetmap.org` are CNAME'ed to the `tile.geo.openstreetmap.org` zone.
-
-The `tile.openstreetmap.org` zone file is written by [mkgeo](bin/mkgeo) which attempts to match the [estimated country bandwidth requirements](bandwidth/tile.openstreetmap.yml) to the nearest [running](https://uptime.openstreetmap.org/) [tile cache server](src/tile.openstreetmap) with available capacity.
-
-Example `tile.openstreetmap.org` zone file snippet in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax as generated by [mkgeo](bin/mkgeo):
-
-```
-# Afghanistan
-Caf.tile.openstreetmap.org:baku.tile.openstreetmap.org:600
-# Albania
-Cal.tile.openstreetmap.org:osijek.tile.openstreetmap.org:600
-# Algeria
-Cdz.tile.openstreetmap.org:zaragoza.tile.openstreetmap.org:600
-# American Samoa
-Cas.tile.openstreetmap.org:sanfrancisco.tile.openstreetmap.org:600
-...
-# Servers
-+aalborg.tile.openstreetmap.org:130.225.254.123:600
-+amsterdam.tile.openstreetmap.org:134.90.146.26:600
-+baku.tile.openstreetmap.org:94.20.20.55:600
-```
-
-The current tile.openstreetmap.org matching is here: https://dns.openstreetmap.org/tile.openstreetmap.org.html
-
-### tile.geo.openstreetmap.org (GeoIP)
-
-The `tile.geo.openstreetmap.org` zone uses authoritative [gdnsd](https://gdnsd.org/) DNS nameservers (`a.ns.openstreetmap.org`, `b.ns.openstreetmap.org`, etc ).
-
-The gdnsd config is managed using a [chef cookbook](https://github.com/openstreetmap/chef/tree/master/cookbooks/geodns).
-
-The DNS responses from `tile.geo.openstreetmap.org` are CNAMEs to XX.tile.openstreetmap.org, where XX is the ISO 3166-1 alpha-2 country code from the [client subnet if supplied by EDNS0](https://tools.ietf.org/html/rfc7871) or the IP address of the resolving DNS if the client subnet is not supplied by EDNS0.
-
-A typical DNS query flow example: `a.tile.openstreetmap.org -> CNAME tile.geo.openstreetmap.org -> CNAME gb.tile.openstreetmap.org. -> CNAME aalborg.tile.openstreetmap.org. -> A aaa.bbb.ccc.ddd`
-
-### render.openstreetmap.org (mkgeo Generated)
-
-The `render.openstreetmap.org` zone is a DNS zone used internally by the tile.openstreetmap.org cache servers and ***SHOULD NOT BE BE USED BY OTHERS***.
-
-The `render.openstreetmap.org` zone file is written by [mkgeo](bin/mkgeo) which attempts to match the estimated caches' bandwidth requirement (dynamically generated above tile.openstreetmap.org mkgeo) to the nearest [running](https://uptime.openstreetmap.org/) [render server](src/render.openstreetmap) with available capacity.
-
-Example `tile.openstreetmap.org` zone file snippet in [tinydns-data](http://cr.yp.to/djbdns/tinydns-data.html) syntax as generated by [mkgeo](bin/mkgeo):
-
-```
-# aalborg
-Caalborg.render.openstreetmap.org:vial.render.openstreetmap.org:600
-# amsterdam
-Camsterdam.render.openstreetmap.org:yevaud.render.openstreetmap.org:600
-# baku
-Cbaku.render.openstreetmap.org:vial.render.openstreetmap.org:600
-...
-# Servers
-+orm.render.openstreetmap.org:193.63.75.98:600
-+vial.render.openstreetmap.org:138.201.195.31:600
-+yevaud.render.openstreetmap.org:128.40.45.208:600
-```
-
-The current render.openstreetmap.org matching is here: https://dns.openstreetmap.org/render.openstreetmap.org.html
+For GeoDNS zones we use [gdnsd](https://gdnsd.org/) with gdnsd config files generated by scripts called from the [Makefile](Makefile) file.
diff --git a/bandwidth/nominatim.openstreetmap.yml b/bandwidth/nominatim.openstreetmap.yml
deleted file mode 100644 (file)
index 32beae0..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
----
-AD: 2.86888888889
-AE: 23.3488888889
-AF: 1.31777777778
-AG: 2.78
-AI: 0.0733333333333
-AL: 7.23777777778
-AM: 11.0422222222
-AO: 6.88888888889
-AQ: 0.0311111111111
-AR: 528.111111111
-AS: 4.29333333333
-AT: 312.84
-AU: 216.437777778
-AW: 2.46444444444
-AX: 0.0377777777778
-AZ: 5.50888888889
-BA: 6.07333333333
-BB: 2.85333333333
-BD: 36.64
-BE: 235.76
-BF: 5.08
-BG: 23.8266666667
-BH: 4.57555555556
-BI: 0.84
-BJ: 0.391111111111
-BL: 0.135555555556
-BM: 0.368888888889
-BN: 1.78888888889
-BO: 24.3533333333
-BQ: 0.0488888888889
-BR: 808.902222222
-BS: 0.446666666667
-BT: 9.26888888889
-BW: 19.9311111111
-BY: 73.8688888889
-BZ: 0.817777777778
-CA: 500.788888889
-CC: 0.104444444444
-CD: 0.78
-CF: 0.0777777777778
-CG: 0.811111111111
-CH: 180.373333333
-CI: 35.5088888889
-CK: 0.0533333333333
-CL: 167.984444444
-CM: 11.9977777778
-CN: 134.986666667
-CO: 369.002222222
-CR: 4.63555555556
-CU: 2.92666666667
-CV: 0.137777777778
-CW: 0.32
-CX: 0.00444444444444
-CY: 24.6577777778
-CZ: 87.84
-DE: 2324.72222222
-DJ: 0.464444444444
-DK: 43.8622222222
-DM: 0.0555555555556
-DO: 19.7577777778
-DZ: 16.6888888889
-EC: 92.8555555556
-EE: 43.9266666667
-EG: 86.5244444444
-EH: 0.00444444444444
-ER: 0.00888888888889
-ES: 279.497777778
-ET: 3
-FI: 49.3488888889
-FJ: 0.506666666667
-FK: 2.38444444444
-FM: 0.0377777777778
-FO: 25.5711111111
-FR: 784.886666667
-GA: 0.526666666667
-GB: 504.966666667
-GD: 0.0977777777778
-GE: 14.6311111111
-GF: 0.322222222222
-GG: 0.491111111111
-GH: 9.01555555556
-GI: 0.215555555556
-GL: 3.12
-GM: 0.537777777778
-GN: 1.00444444444
-GP: 0.895555555556
-GQ: 0.117777777778
-GR: 163.475555556
-GT: 5.70222222222
-GU: 0.326666666667
-GW: 0.0422222222222
-GY: 1.5
-HK: 59.1088888889
-HN: 22.2111111111
-HR: 133.737777778
-HT: 0.686666666667
-HU: 111.706666667
-ID: 381.413333333
-IE: 3421.39333333
-IL: 215.791111111
-IM: 0.342222222222
-IN: 484.255555556
-IO: 0.0288888888889
-IQ: 18.8822222222
-IR: 295.331111111
-IS: 22.9177777778
-IT: 362.433333333
-JE: 0.551111111111
-JM: 1.8
-JO: 3.26
-JP: 48.7711111111
-KE: 47.2155555556
-KG: 9.83333333333
-KH: 12.4244444444
-KI: 0.0266666666667
-KM: 0.0466666666667
-KN: 0.275555555556
-KR: 64.56
-KW: 13.0622222222
-KY: 2.92222222222
-KZ: 806.228888889
-LA: 8.74888888889
-LB: 1.72222222222
-LC: 0.142222222222
-LI: 0.124444444444
-LK: 35.6422222222
-LR: 0.697777777778
-LS: 0.126666666667
-LT: 64.9866666667
-LU: 19.9866666667
-LV: 14.3955555556
-LY: 1.91333333333
-MA: 109.646666667
-MC: 0.504444444444
-MD: 29.9288888889
-ME: 0.575555555556
-MF: 0.0644444444444
-MG: 2.29111111111
-MH: 0.0288888888889
-MK: 2.22444444444
-ML: 2.43777777778
-MM: 6.92888888889
-MN: 18.56
-MO: 0.748888888889
-MP: 0.08
-MQ: 4.79555555556
-MR: 0.526666666667
-MS: 0.0111111111111
-MT: 13.6088888889
-MU: 6.8
-MV: 0.982222222222
-MW: 0.902222222222
-MX: 256.54
-MY: 80.1244444444
-MZ: 15.3066666667
-NA: 8.03555555556
-NC: 0.924444444444
-NE: 0.451111111111
-NF: 0.00222222222222
-NG: 37.3733333333
-NI: 6.52444444444
-NL: 396.193333333
-NO: 27.7666666667
-NP: 2.64666666667
-NR: 3.38666666667
-NZ: 20.3733333333
-OM: 3.52888888889
-PA: 5.06888888889
-PE: 58.9888888889
-PF: 0.208888888889
-PG: 0.222222222222
-PH: 121.284444444
-PK: 32.86
-PL: 743.211111111
-PM: 0.0133333333333
-PR: 5.56
-PS: 13.9244444444
-PT: 57.5111111111
-PW: 0.02
-PY: 400.531111111
-QA: 7.32666666667
-RE: 20.6755555556
-RO: 76.48
-RS: 57.4933333333
-RU: 1054.97777778
-RW: 0.673333333333
-SA: 70.8666666667
-SB: 0.115555555556
-SC: 1.24444444444
-SD: 58.4177777778
-SE: 98.8555555556
-SG: 221.015555556
-SH: 0.0155555555556
-SI: 106.275555556
-SK: 27.84
-SL: 9.67555555556
-SM: 8.70444444444
-SN: 5.27777777778
-SO: 1.10444444444
-SR: 3.95111111111
-SS: 0.351111111111
-ST: 0.0377777777778
-SV: 3.54888888889
-SX: 0.135555555556
-SY: 40.98
-SZ: 0.64
-TC: 0.04
-TD: 0.0777777777778
-TG: 1.98666666667
-TH: 407.406666667
-TJ: 5.63333333333
-TK: 0.00444444444444
-TL: 0.142222222222
-TM: 1.22222222222
-TN: 11.4555555556
-TO: 0.02
-TR: 216.353333333
-TT: 10.3533333333
-TV: 2.75555555556
-TW: 58.3933333333
-TZ: 12.3488888889
-UA: 141.504444444
-UG: 5.98666666667
-US: 3539.80666667
-UY: 19.1933333333
-UZ: 63.5244444444
-VA: 0.02
-VC: 0.0444444444444
-VE: 55.3066666667
-VG: 0.0711111111111
-VI: 0.173333333333
-VN: 125.317777778
-VU: 0.104444444444
-WF: 0.00888888888889
-WS: 0.06
-XK: 0.113333333333
-YE: 2.95111111111
-YT: 1.34
-ZA: 249.057777778
-ZM: 3.03111111111
-ZW: 6
diff --git a/bandwidth/tile.openstreetmap.yml b/bandwidth/tile.openstreetmap.yml
deleted file mode 100644 (file)
index cb3dba2..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
----
-AD: 147607.008889
-AE: 1980282.98889
-AF: 202257.473333
-AG: 30940.2377778
-AI: 3555.73333333
-AL: 1456264.04667
-AM: 1720294.78889
-AO: 245780.142222
-AQ: 1237.71111111
-AR: 24028705.0622
-AS: 26602.3066667
-AT: 27525216.7444
-AU: 17740199.6244
-AW: 181238.857778
-AX: 81417.5666667
-AZ: 1644721.66667
-BA: 5360357.34222
-BB: 113795.402222
-BD: 2637835.48667
-BE: 31379699.3333
-BF: 171339.873333
-BG: 16462872.4089
-BH: 178017.288889
-BI: 39235.9111111
-BJ: 144971.944444
-BL: 26516.7333333
-BM: 68879.2688889
-BN: 101534.3
-BO: 6598657.62444
-BQ: 33092.2377778
-BR: 67895824.1933
-BS: 80005.3155556
-BT: 73882.6844444
-BW: 177755.48
-BY: 28140174.3933
-BZ: 244055.38
-CA: 39801926.6378
-CC: 239.693333333
-CD: 210700.564444
-CF: 1863.07111111
-CG: 70769.4266667
-CH: 25966555.3289
-CI: 991001.822222
-CK: 10671.6288889
-CL: 16922485.0578
-CM: 461239.615556
-CN: 3798976.38889
-CO: 17048273.6867
-CR: 2311707.40667
-CU: 261635.568889
-CV: 88190.0733333
-CW: 255916.342222
-CX: 93.2311111111
-CY: 1502580.43111
-CZ: 22924934.3844
-DE: 279437893.16
-DJ: 33447.0022222
-DK: 42115588.14
-DM: 62577.2711111
-DO: 1529532.88667
-DZ: 1634276.29556
-EC: 12126472.5289
-EE: 3663255.88667
-EG: 1931109.31333
-ER: 2352.07777778
-ES: 55510741.8511
-ET: 298329.402222
-FI: 11534177.54
-FJ: 52474.5955556
-FK: 10019.4333333
-FM: 9121.48888889
-FO: 161446.755556
-FR: 221971649.922
-GA: 56198.3333333
-GB: 123336985.522
-GD: 11526.4644444
-GE: 3335886.76222
-GF: 127130.957778
-GG: 169221.824444
-GH: 655150.575556
-GI: 89231.48
-GL: 100099.573333
-GM: 51320.2911111
-GN: 94694.3466667
-GP: 459603.5
-GQ: 12567.7688889
-GR: 19410573.1422
-GT: 3371719.58444
-GU: 65648.3622222
-GW: 9547.81777778
-GY: 38880.6866667
-HK: 6253019.34444
-HN: 696195.986667
-HR: 9634731.65556
-HT: 89951.7466667
-HU: 27508528.3956
-ID: 19977120.5311
-IE: 8530559.23333
-IL: 6125523.57556
-IM: 144767.664444
-IN: 27692918.0956
-IO: 21.4266666667
-IQ: 844265.502222
-IR: 20045732.9222
-IS: 1593090.64
-IT: 83703072.8356
-JE: 140256.78
-JM: 375833.804444
-JO: 993150.335556
-JP: 27988334.2422
-KE: 1647671.42667
-KG: 2415359.04889
-KH: 711643.406667
-KI: 3892.54222222
-KM: 3859.51555556
-KN: 20678.1266667
-KP: 2463.49777778
-KR: 9611982.10222
-KW: 402377.588889
-KY: 91610.1333333
-KZ: 11179783.5533
-LA: 248326.228889
-LB: 568474.653333
-LC: 67230.4666667
-LI: 217418.026667
-LK: 830831.877778
-LR: 109338.006667
-LS: 22995.7488889
-LT: 10506640.4822
-LU: 2332984.10889
-LV: 10154900.8356
-LY: 150966.048889
-MA: 2381142.94889
-MC: 190155.5
-MD: 5369052.67111
-ME: 663404.133333
-MF: 15766.7111111
-MG: 413607.266667
-MH: 5420.73555556
-MK: 832677.937778
-ML: 165364.922222
-MM: 1574103.97111
-MN: 195058.542222
-MO: 226535.004444
-MP: 11891.1377778
-MQ: 361034.924444
-MR: 74424.8177778
-MS: 4853.69777778
-MT: 586558.177778
-MU: 327995.093333
-MV: 122568.173333
-MW: 90975.1466667
-MX: 37727070.8733
-MY: 3114449.34444
-MZ: 368243.097778
-NA: 157454.515556
-NC: 240829.58
-NE: 67342.48
-NF: 253.222222222
-NG: 566236.137778
-NI: 877344.76
-NL: 95809248.2356
-NO: 7864988.36222
-NP: 798218.357778
-NR: 1346.68888889
-NU: 307.917777778
-NZ: 3786275.34222
-OM: 313158.306667
-PA: 915175.135556
-PE: 11577958.7778
-PF: 161560.595556
-PG: 47218.0222222
-PH: 6965070.46
-PK: 2669556.02889
-PL: 188700107.164
-PM: 51462.8177778
-PR: 925986.406667
-PS: 350296.895556
-PT: 11851530.2422
-PW: 18346.9177778
-PY: 1779073.26889
-QA: 345872.877778
-RE: 888326.597778
-RO: 30365147.2511
-RS: 9551556.56889
-RU: 155014855.847
-RW: 196213.697778
-SA: 1861605.02667
-SB: 9961.35333333
-SC: 50707.7577778
-SD: 143548.24
-SE: 15608222.4422
-SG: 3762772.32889
-SH: 1960.12666667
-SI: 3977915.10889
-SK: 18991595.6333
-SL: 37188.2888889
-SM: 134091.466667
-SN: 441923.386667
-SO: 346586.811111
-SR: 148975.248889
-SS: 20085.78
-ST: 4658.13111111
-SV: 1096400.23556
-SX: 29970.1955556
-SY: 184978.342222
-SZ: 18843.2466667
-TC: 93588.1177778
-TD: 10838.6422222
-TG: 109304.388889
-TH: 8181045.00667
-TJ: 303382.026667
-TL: 41618.4422222
-TM: 33138.0888889
-TN: 2539957.73111
-TO: 6872.98888889
-TR: 36320266.9556
-TT: 595362.062222
-TV: 6377.35777778
-TW: 24895659.9
-TZ: 592716.151111
-UA: 71935436.2489
-UG: 371570.777778
-UM: 417.811111111
-US: 168068359.904
-UY: 3862789.72444
-UZ: 1576052.12444
-VA: 24871.3177778
-VC: 16695.1177778
-VE: 2429953.49556
-VG: 19105.4711111
-VI: 40648.4066667
-VN: 1585975.8
-VU: 30389.8666667
-WF: 3540.82888889
-WS: 18399.8555556
-XK: 40469.0288889
-YE: 117418.873333
-YT: 78763.2866667
-ZA: 6015791.69778
-ZM: 119848.686667
-ZW: 284603.042222
index 42863a7d3c2af5669744d099851f5311095e9ee0..ca8427a916f8d7eaaf2216bec27f032cf4e4093b 100755 (executable)
@@ -7,7 +7,7 @@ use XML::TreeBuilder;
 use YAML;
 
 # Get arguments
-my $bandwidthfile = shift @ARGV;
+my $requestsfile = shift @ARGV;
 my $originsfile = shift @ARGV;
 
 # Initialise origins
@@ -19,8 +19,8 @@ my $countries = XML::TreeBuilder->new;
 # Parse the country database
 $countries->parsefile("lib/countries.xml");
 
-# Load the per-country bandwidth details
-my $bandwidth = YAML::LoadFile($bandwidthfile);
+# Load the per-country requests details
+my $requests = YAML::LoadFile($requestsfile);
 
 # Fill in country table and work out which clusters each can use
 foreach my $country ($countries->look_down("_tag" => "country"))
@@ -28,7 +28,7 @@ foreach my $country ($countries->look_down("_tag" => "country"))
     my $code = $country->look_down("_tag" => "countryCode")->as_text;
     my $name = $country->look_down("_tag" => "countryName")->as_text;
     my $population = $country->look_down("_tag" => "population")->as_text;
-    my $bandwidth = $bandwidth->{$code} || 0;
+    my $requests = $requests->{$code} || 0;
     my $continent = $country->look_down("_tag" => "continent")->as_text;
     my $west = $country->look_down("_tag" => "west")->as_text;
     my $north = $country->look_down("_tag" => "north")->as_text;
@@ -40,7 +40,7 @@ foreach my $country ($countries->look_down("_tag" => "country"))
     $origins->{$code} = {
         code => $code, name => $name,
         country => $code, continent => $continent,
-        bandwidth => $bandwidth, lat => $lat, lon => $lon
+        requests => $requests, lat => $lat, lon => $lon
     };
 }
 
index 7373c2db866f3be44f97812ee29f628f27dc7a4e..94c600a8e6fc7253515416e8a6628cbb8305ed10 100755 (executable)
--- a/bin/mkgeo
+++ b/bin/mkgeo
@@ -25,12 +25,12 @@ while (my($name,$cluster) = each %$clusters)
 {
     if ($cluster->{servers})
     {
-        $cluster->{bandwidth} = 0;
+        $cluster->{requests} = 0;
 
         foreach my $server (@{$cluster->{servers}})
         {
             $server->{cluster} = $cluster;
-            $cluster->{bandwidth} = $cluster->{bandwidth} + $server->{bandwidth};
+            $cluster->{requests} = $cluster->{requests} + $server->{requests};
 
             push @servers, $server;
         }
@@ -40,7 +40,7 @@ while (my($name,$cluster) = each %$clusters)
         my $server = {
             cluster => $cluster,
             statuscake => $cluster->{statuscake},
-            bandwidth => $cluster->{bandwidth},
+            requests => $cluster->{requests},
             cname => $cluster->{cname},
             ipv4 => $cluster->{ipv4},
             ipv6 => $cluster->{ipv6}
@@ -133,7 +133,7 @@ foreach my $server (@servers)
     }
     else
     {
-        $server->{cluster}->{bandwidth} = $server->{cluster}->{bandwidth} - $server->{bandwidth};
+        $server->{cluster}->{requests} = $server->{cluster}->{requests} - $server->{requests};
     }
 }
 
@@ -143,8 +143,8 @@ my $targetorigins = {};
 # Initialise cluster details
 while (my($name,$cluster) = each %$clusters)
 {
-    $cluster->{bandwidth_limit} = $cluster->{bandwidth} * 1024 * 1024;
-    $cluster->{bandwidth_used} = 0;
+    $cluster->{requests_limit} = $cluster->{requests};
+    $cluster->{requests_used} = 0;
 
     next if $cluster->{global};
 
@@ -153,7 +153,7 @@ while (my($name,$cluster) = each %$clusters)
         name => $cluster->{name},
         lat => $cluster->{lat},
         lon => $cluster->{lon},
-        bandwidth => 0
+        requests => 0
     };
 }
 
@@ -192,7 +192,7 @@ foreach my $origin (values %$origins)
 allocate_clusters(@mappings);
 
 # If we failed to allocate every origin then loop, increasing
-# the bandwidth for each cluster by a little and retrying until
+# the requests for each cluster by a little and retrying until
 # we manage to allocate everything
 while (grep { !exists($_->{cluster}) } values %$origins)
 {
@@ -202,11 +202,11 @@ while (grep { !exists($_->{cluster}) } values %$origins)
         delete $origin->{cluster};
     }
 
-    # Reset bandwidth usage for clusters and increase limits by 10%
+    # Reset requests usage for clusters and increase limits by 10%
     foreach my $cluster (values %$clusters)
     {
-        $cluster->{bandwidth_used} = 0;
-        $cluster->{bandwidth_limit} = $cluster->{bandwidth_limit} * 1.1;
+        $cluster->{requests_used} = 0;
+        $cluster->{requests_limit} = $cluster->{requests_limit} * 1.1;
     }
 
     # Try the allocate again
@@ -265,7 +265,7 @@ foreach my $origin (sort { $a->{name} cmp $b->{name} } values %$origins)
 
     next if $cluster->{global};
 
-    $targetorigins->{$cluster->{name}}->{bandwidth} += $origin->{bandwidth};
+    $targetorigins->{$cluster->{name}}->{requests} += $origin->{requests};
 }
 
 # Skip default records if we don't need them
@@ -367,15 +367,15 @@ if (defined($gdnsname))
                 if ($server->{status} eq "up")
                 {
                     my $number = sprintf("%02d", $index + 1);
-                    my $bandwidth = $server->{bandwidth};
+                    my $requests = $server->{requests};
 
                     if (my $cname = $server->{cname})
                     {
-                        $gdnsweightedfile->print("  ${name}-${number} = [ ${cname}., ${bandwidth} ]\n");
+                        $gdnsweightedfile->print("  ${name}-${number} = [ ${cname}., ${requests} ]\n");
                     }
                     else
                     {
-                        $gdnsweightedfile->print("  ${name}-${number} = [ ${name}-${number}.${zone}.openstreetmap.org., ${bandwidth} ]\n");
+                        $gdnsweightedfile->print("  ${name}-${number} = [ ${name}-${number}.${zone}.openstreetmap.org., ${requests} ]\n");
                     }
                 }
             }
@@ -497,7 +497,7 @@ sub allocate_clusters
     my @mappings = sort { compare_mappings($a, $b) } @_;
 
     # Loop over the mappings, trying to assign each origin to the
-    # nearest cluster, but subject to the bandwidth limits
+    # nearest cluster, but subject to the request limits
     while (my $mapping = shift @mappings)
     {
         my @group;
@@ -509,16 +509,16 @@ sub allocate_clusters
             push @group, shift @mappings;
         }
 
-        for my $mapping (sort compare_bandwidth @group)
+        for my $mapping (sort compare_requests @group)
         {
             my $origin = $mapping->{origin};
             my $cluster = $mapping->{cluster};
 
             if (!exists($origin->{cluster}) &&
-                $cluster->{bandwidth_used} + $origin->{bandwidth} <= $cluster->{bandwidth_limit})
+                $cluster->{requests_used} + $origin->{requests} <= $cluster->{requests_limit})
             {
                 $origin->{cluster} = $cluster;
-                $cluster->{bandwidth_used} = $cluster->{bandwidth_used} + $origin->{bandwidth};
+                $cluster->{requests_used} = $cluster->{requests_used} + $origin->{requests};
             }
         }
     }
@@ -541,10 +541,10 @@ sub compare_mappings
 #
 # Compare two mappings to decide which to try first
 #
-sub compare_bandwidth
+sub compare_requests
 {
-    my $a_used = ( $a->{cluster}->{bandwidth_used} * 100.0 ) / ( $a->{cluster}->{bandwidth_limit} * 1.0 );
-    my $b_used = ( $b->{cluster}->{bandwidth_used} * 100.0 ) / ( $b->{cluster}->{bandwidth_limit} * 1.0 );
+    my $a_used = ( $a->{cluster}->{requests_used} * 100.0 ) / ( $a->{cluster}->{requests_limit} * 1.0 );
+    my $b_used = ( $b->{cluster}->{requests_used} * 100.0 ) / ( $b->{cluster}->{requests_limit} * 1.0 );
 
     return $a_used <=> $b_used;
 }
index 0e0027c3a20c388a05f2373c54a8c11a002a28c2..f3b6d1a904469b9d9d1224c352c895fa66de8960 100755 (executable)
@@ -6,13 +6,6 @@ use warnings;
 use Digest::SHA qw(sha256_hex);
 use MIME::Base64;
 
-my %algorithms = (
-    "ssh-rsa" => "1",
-    "ssh-dss" => "2",
-    "ecdsa-sha2-nistp256" => "3",
-    "ssh-ed25519" => "4"
-);
-
 my %hosts;
 
 if (-f "/etc/ssh/ssh_known_hosts")
@@ -21,42 +14,21 @@ if (-f "/etc/ssh/ssh_known_hosts")
 
     while (my $line = <HOSTS>)
     {
+        last if $line =~ /^# Manually maintained records$/;
+
         if ($line =~ /^([^, ]+)\S* (\S+) (\S+)$/)
         {
             my $host = $1;
-            my $algorithm = $algorithms{$2};
+            my $algorithm = $2;
             my $value = uc(sha256_hex(decode_base64($3)));
 
             $host =~ s/\.openstreetmap\.org$//;
-        
+
             if ($algorithm ne "2")
             {
-                my $wanted = 0;
-
-                if (exists($hosts{$host}))
-                {
-                    if ($algorithm eq "3")
-                    {
-                        $wanted = 1;
-                    }
-                    elsif ($algorithm eq "4" && $hosts{$host}->{algorithm} ne "3")
-                    {
-                        $wanted = 1;
-                    }
-                }
-                else
-                {
-                    $wanted = 1;
-                }
-
-                if ($wanted)
-                {
-                    $hosts{$host} = {
-                        algorithm => $algorithm,
-                        type => "2",
-                        value => $value
-                    };
-                }
+                $hosts{$host} ||= {};
+
+                $hosts{$host}->{$algorithm} = $value;
             }
         }
     }
@@ -70,11 +42,22 @@ print SSHFP_JS qq|var SSHFP_RECORDS = [\n|;
 
 foreach my $host (sort keys %hosts)
 {
-    my $algorithm = $hosts{$host}->{algorithm};
-    my $type = $hosts{$host}->{type};
-    my $value = $hosts{$host}->{value};
+    if ($hosts{$host}->{"ecdsa-sha2-nistp256"} || $hosts{$host}->{"ssh-ed25519"})
+    {
+        if ($hosts{$host}->{"ecdsa-sha2-nistp256"})
+        {
+            print SSHFP_JS sshfp_record($host, "3", $hosts{$host}->{"ecdsa-sha2-nistp256"});
+        }
 
-    print SSHFP_JS qq|  SSHFP("${host}", ${algorithm}, ${type}, "${value}"),\n|;
+        if ($hosts{$host}->{"ssh-ed25519"})
+        {
+            print SSHFP_JS sshfp_record($host, "4", $hosts{$host}->{"ssh-ed25519"});
+        }
+    }
+    elsif ($hosts{$host}->{"ssh-rsa"})
+    {
+        print SSHFP_JS sshfp_record($host, "1", $hosts{$host}->{"ssh-rsa"});
+    }
 }
 
 print SSHFP_JS qq|];\n|;
@@ -82,3 +65,12 @@ print SSHFP_JS qq|];\n|;
 close(SSHFP_JS);
 
 exit 0;
+
+sub sshfp_record
+{
+    my $host = shift;
+    my $algorithm = shift;
+    my $value = shift;
+
+    return qq|  SSHFP("${host}", ${algorithm}, 2, "${value}"),\n|;
+}
index 08396a2cd5c7cc3f6b1d5846811a9242fcefcadf..3f395c69a5c8e48d4b623eb35010f9d2e77fae62 100644 (file)
@@ -2,10 +2,6 @@ var REG_NONE = NewRegistrar("none", "NONE");
 var REG_GANDI = NewRegistrar("gandi_v5", "GANDI_V5");
 var PROVIDER = NewDnsProvider("cloudflare", "CLOUDFLAREAPI");
 
-var CF_TTL_ANY = TTL(1);
-
-DEFAULTS(DefaultTTL("24h"));
-
 var DOMAIN;
 var REGISTRAR;
 var DYNAMIC_RECORDS;
@@ -55,6 +51,21 @@ OPENSTREETMAP("freeosm.org", REG_GANDI);
 OPENSTREETMAP("open-maps.org", REG_GANDI);
 OPENSTREETMAP("open-maps.com", REG_GANDI);
 OPENSTREETMAP("osmbugs.org", REG_GANDI);
+OPENSTREETMAP("openstreetmap.ai", REG_GANDI);
+OPENSTREETMAP("openstreetmap.am", REG_GANDI);
+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);
+OPENSTREETMAP("openstreetmap.tv", REG_GANDI);
+OPENSTREETMAP("openstreetmap.wales", REG_GANDI);
+OPENSTREETMAP("openstreetmapdata.org", REG_GANDI);
+// Disable due to registration issue
+// OPENSTREETMAP("openstreetmap.al", REG_NONE);
 
 var OSM_LI = loadTemplate("osm-li");
 
@@ -81,12 +92,12 @@ STATEOFTHEMAP("stateofthemap.org", REG_GANDI);
 STATEOFTHEMAP("stateofthemap.com", REG_GANDI);
 STATEOFTHEMAP("sotm.org", REG_GANDI);
 
-var STATEOFTHEMAP_EU = loadTemplate("stateofthemap-eu");
 
-STATEOFTHEMAP_EU("stateofthemap.eu", REG_GANDI);
+// Domain Owner Issue / Registration Issues - Disable for the moment. 31 May 2021
+// var STATEOFTHEMAP_EU = loadTemplate("stateofthemap-eu");
+// STATEOFTHEMAP_EU("stateofthemap.eu", REG_GANDI);
 
 var OPENGEODATA = loadTemplate("opengeodata");
-
 OPENGEODATA("opengeodata.org", REG_GANDI);
 
 var SWITCH2OSM = loadTemplate("switch2osm");
diff --git a/requests/nominatim.openstreetmap.yml b/requests/nominatim.openstreetmap.yml
new file mode 100644 (file)
index 0000000..931a653
--- /dev/null
@@ -0,0 +1,236 @@
+---
+AD: 0.0302777777778
+AE: 1.98777777778
+AF: 0.0408333333333
+AG: 0.00222222222222
+AI: 0.249166666667
+AL: 2.22527777778
+AM: 1.59555555556
+AO: 0.583055555556
+AQ: 0.0025
+AR: 10.4358333333
+AS: 0.000555555555556
+AT: 15.6136111111
+AU: 18.2058333333
+AW: 0.0358333333333
+AX: 0.0152777777778
+AZ: 1.45888888889
+BA: 0.412222222222
+BB: 0.0313888888889
+BD: 2.07638888889
+BE: 5.54
+BF: 0.0527777777778
+BG: 2.63083333333
+BH: 0.121944444444
+BI: 0.0691666666667
+BJ: 0.257777777778
+BL: 0.00666666666667
+BM: 0.0594444444444
+BN: 0.106388888889
+BO: 2.04444444444
+BQ: 0.00416666666667
+BR: 64.7872222222
+BS: 0.0113888888889
+BT: 0.0211111111111
+BW: 0.0675
+BY: 3.45055555556
+BZ: 0.015
+CA: 18.0144444444
+CD: 0.364722222222
+CF: 0.005
+CG: 0.0661111111111
+CH: 11.8022222222
+CI: 0.66
+CK: 0.000555555555556
+CL: 5.82055555556
+CM: 1.11805555556
+CN: 24.0813888889
+CO: 29.0861111111
+CR: 0.450555555556
+CU: 0.0975
+CV: 0.0138888888889
+CW: 0.0155555555556
+CY: 0.251944444444
+CZ: 6.90222222222
+DE: 229.34
+DJ: 0.0125
+DK: 3.63361111111
+DM: 0.00194444444444
+DO: 3.98111111111
+DZ: 0.991666666667
+EC: 3.18333333333
+EE: 3.37527777778
+EG: 4.04583333333
+ES: 23.5105555556
+ET: 0.326666666667
+FI: 4.62611111111
+FJ: 0.0161111111111
+FK: 0.000833333333333
+FM: 0.000833333333333
+FO: 0.613333333333
+FR: 49.7969444444
+GA: 0.0636111111111
+GB: 30.8966666667
+GD: 0.00138888888889
+GE: 0.204166666667
+GF: 0.0297222222222
+GG: 0.00527777777778
+GH: 1.145
+GI: 0.00888888888889
+GL: 0.0880555555556
+GM: 0.0172222222222
+GN: 0.0661111111111
+GP: 0.0627777777778
+GQ: 0.000833333333333
+GR: 21.7488888889
+GT: 15.895
+GU: 0.0144444444444
+GW: 0.000833333333333
+GY: 0.0122222222222
+HK: 1.82722222222
+HN: 0.228333333333
+HR: 8.52138888889
+HT: 0.00666666666667
+HU: 4.32694444444
+ID: 38.6758333333
+IE: 30.0491666667
+IL: 6.955
+IM: 0.142777777778
+IN: 45.3866666667
+IO: 0.000555555555556
+IQ: 0.7525
+IR: 4.71722222222
+IS: 0.1725
+IT: 31.4088888889
+JE: 0.0513888888889
+JM: 0.130833333333
+JO: 0.599166666667
+JP: 11.1275
+KE: 4.11861111111
+KG: 0.218055555556
+KH: 0.379722222222
+KI: 0.000277777777778
+KM: 0.00388888888889
+KN: 0.000555555555556
+KR: 3.85888888889
+KW: 0.819166666667
+KY: 0.00416666666667
+KZ: 2.39666666667
+LA: 0.366944444444
+LB: 0.231944444444
+LC: 0.01
+LI: 0.0236111111111
+LK: 1.51722222222
+LR: 0.0355555555556
+LS: 0.00305555555556
+LT: 6.14444444444
+LU: 2.09
+LV: 2.19222222222
+LY: 0.0883333333333
+MA: 5.09111111111
+MC: 0.0163888888889
+MD: 3.43583333333
+ME: 0.145833333333
+MF: 0.00361111111111
+MG: 0.525277777778
+MH: 0.00305555555556
+MK: 0.112222222222
+ML: 0.0725
+MM: 0.0772222222222
+MN: 1.35861111111
+MO: 0.0475
+MP: 0.00194444444444
+MQ: 0.0322222222222
+MR: 0.0458333333333
+MS: 0.0025
+MT: 0.314166666667
+MU: 0.234166666667
+MV: 0.0244444444444
+MW: 0.0447222222222
+MX: 30.385
+MY: 6.13722222222
+MZ: 0.246666666667
+NA: 0.486666666667
+NC: 0.0458333333333
+NE: 0.173611111111
+NF: 0.000277777777778
+NG: 6.42138888889
+NI: 0.0344444444444
+NL: 30.8016666667
+NO: 4.5425
+NP: 1.77666666667
+NZ: 2.23888888889
+OM: 0.176388888889
+PA: 0.261111111111
+PE: 1.65388888889
+PF: 0.285555555556
+PG: 0.055
+PH: 4.54111111111
+PK: 1.99972222222
+PL: 53.8841666667
+PM: 0.000833333333333
+PR: 0.4075
+PS: 1.21805555556
+PT: 2.37777777778
+PW: 0.000277777777778
+PY: 4.65277777778
+QA: 0.277777777778
+RE: 0.497222222222
+RO: 4.84888888889
+RS: 1.51027777778
+RU: 79.0533333333
+RW: 0.0455555555556
+SA: 3.76305555556
+SB: 0.194444444444
+SC: 1.6425
+SD: 0.899722222222
+SE: 6.68861111111
+SG: 13.1025
+SI: 0.849166666667
+SK: 2.11944444444
+SL: 0.163333333333
+SM: 0.0205555555556
+SN: 0.185277777778
+SO: 0.146944444444
+SR: 0.0136111111111
+SS: 0.00777777777778
+ST: 0.00138888888889
+SV: 0.171666666667
+SX: 0.00444444444444
+SY: 0.728888888889
+SZ: 0.0116666666667
+TC: 0.0025
+TD: 0.00388888888889
+TG: 0.0719444444444
+TH: 5.42694444444
+TJ: 0.534444444444
+TL: 0.0172222222222
+TM: 0.0577777777778
+TN: 1.01861111111
+TO: 0.000277777777778
+TR: 14.9716666667
+TT: 1.00166666667
+TV: 0.00583333333333
+TW: 5.9775
+TZ: 0.296944444444
+UA: 37.3986111111
+UG: 0.272222222222
+UM: 0.000833333333333
+US: 324.626944444
+UY: 0.799166666667
+UZ: 7.335
+VA: 0.00555555555556
+VC: 0.000833333333333
+VE: 4.03694444444
+VG: 0.00111111111111
+VI: 0.00944444444444
+VN: 15.1244444444
+VU: 0.00277777777778
+WF: 0.0183333333333
+WS: 0.00111111111111
+XK: 0.00166666666667
+YE: 0.0991666666667
+YT: 0.00527777777778
+ZA: 8.20611111111
+ZM: 0.110277777778
+ZW: 0.420277777778
index a7f9b477fad4d0714c5eb4b9462acb4a0ce2bd52..aa2933afbb2c1fc0da36de2a9bfd8298f2721480 100644 (file)
@@ -8,20 +8,17 @@ var ASCALON_IPV4 = "184.107.48.228";
 
 var BALERION_IPV4 = "138.44.68.134";
 
-var BOITATA_IPV4 = "200.236.31.207";
-var BOITATA_IPV6 = "2801:82:80ff:8002:216:ccff:feaa:21";
-
 var BOWSER_IPV4 = "138.44.68.106";
 
-var CHERUFE_IPV4 = "200.91.44.37";
-
-var CHRYSOPHYLAX_IPV4 = "217.71.244.22";
-var CHRYSOPHYLAX_IPV6 = "2001:8e0:40:2039::10";
-
 var CLIFFORD_IPV4 = "193.60.236.11";
 var CLIFFORD_INTERNAL = "10.0.0.17";
 var CLIFFORD_OOB = "10.0.1.17";
 
+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 DRACO_IPV4 = "193.60.236.12";
 var DRACO_INTERNAL = "10.0.0.11";
 var DRACO_OOB = "10.0.1.11";
@@ -45,12 +42,17 @@ var EUSTACE_IPV4 = "193.60.236.14";
 var EUSTACE_INTERNAL = "10.0.0.9";
 var EUSTACE_OOB = "10.0.1.9";
 
-var FAFNIR_IPV4 = "130.239.18.114";
-var FAFNIR_IPV6 = "2001:6b0:e:2a18::114";
+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 FIRNEN_IPV4 = "188.241.28.82";
 
-var FUME_IPV4 = "147.228.60.16";
+var GORWEN_IPV4 = "184.104.226.107";
+var GORWEN_IPV6 = "2001:470:1:b3b::b";
+var GORWEN_INTERNAL = "10.0.64.11";
+var GORWEN_OOB = "10.0.65.11";
 
 var GORYNYCH_IPV4 = "5.45.248.21";
 var GORYNYCH_IPV6 = "2a02:6b8:b010:5065::a001";
@@ -64,13 +66,25 @@ var GRISU_IPV6 = "2001:41c9:2:d6::20";
 var GRISU_INTERNAL = "10.0.32.20";
 var GRISU_OOB = "10.0.33.20";
 
+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 = "130.117.76.10";
 var IRONBELLY_IPV6 = "2001:978:2:2c::172:a";
 var IRONBELLY_INTERNAL = "10.0.48.10";
 var IRONBELLY_OOB = "10.0.49.10";
 
-var KALESSIN_IPV4 = "185.66.195.245";
-var KALESSIN_IPV6 = "2a03:2260:2000:1::5";
+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 JAKELONG_IPV4 = "184.104.226.108";
+var JAKELONG_IPV6 = "2001:470:1:b3b::c";
+var JAKELONG_INTERNAL = "10.0.64.12";
+var JAKELONG_OOB = "10.0.65.12";
 
 var KARM_INTERNAL = "10.0.48.50";
 var KARM_OOB = "10.0.49.50";
@@ -78,26 +92,33 @@ var KARM_OOB = "10.0.49.50";
 var KATLA_INTERNAL = "10.0.32.40";
 var KATLA_OOB = "10.0.33.40";
 
-var KEIZER_IPV4 = "195.201.226.63";
-var KEIZER_IPV6 = "2a01:4f8:1c1c:bc54::1";
-
 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 KOKOSNUSS_IPV4 = "85.214.255.86";
+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 LONGMA_IPV4 = "140.110.240.7";
-var LONGMA_IPV6 = "2001:e10:2000:240::7";
+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 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 NECROSAN_IPV4 = "45.85.134.91";
@@ -106,26 +127,35 @@ var NECROSAN_IPV6 = "2a05:46c0:100:1004:ffff:ffff:ffff:ffff";
 var NEPOMUK_IPV4 = "77.95.65.39";
 var NEPOMUK_IPV6 = "2a03:9180:0:100::7";
 
-var NIDHOGG_IPV4 = "130.236.254.221";
-var NIDHOGG_IPV6 = "2001:6b0:17:f0a0::dd";
+var NIDHOGG_IPV4 = "194.71.11.111";
+var NIDHOGG_IPV6 = "2001:6b0:19:2::111";
+var NIDHOGG_OOB = "130.239.18.115";
 
 var NOQUIKLOS_IPV4 = "193.60.236.16";
 var NOQUIKLOS_INTERNAL = "10.0.0.13";
 var NOQUIKLOS_OOB = "10.0.1.13";
 
+var NORBERT_IPV4 = "130.117.76.17";
+var NORBERT_IPV6 = "2001:978:2:2c::172:11";
+var NORBERT_INTERNAL = "10.0.48.17";
+var NORBERT_OOB = "10.0.49.17";
+
 var ODIN_IPV4 = "130.117.76.15";
 var ODIN_IPV6 = "2001:978:2:2c::172:f";
 var ODIN_INTERNAL = "10.0.48.15";
 var ODIN_OOB = "10.0.49.15";
 
-var ORM_IPV4 = "130.117.76.3";
-var ORM_IPV6 = "2001:978:2:2c::172:3";
-var ORM_INTERNAL = "10.0.48.3";
-var ORM_OOB = "10.0.49.3";
+var OOB1AMS_INTERNAL = "10.0.48.102";
+
+var OOB1DUB_INTERNAL = "10.0.64.102";
+
+var PDU1AMS_INTERNAL = "10.0.48.100";
 
-var PDU1_INTERNAL = "10.0.48.100";
+var PDU2AMS_INTERNAL = "10.0.48.101";
 
-var PDU2_INTERNAL = "10.0.48.101";
+var PDU1DUB_INTERNAL = "10.0.64.100";
+
+var PDU2DUB_INTERNAL = "10.0.64.101";
 
 var PUMMELZACKEN_IPV4 = "193.60.236.18";
 var PUMMELZACKEN_INTERNAL = "10.0.0.20";
@@ -134,9 +164,6 @@ var PUMMELZACKEN_OOB = "10.0.1.20";
 var PYRENE_IPV4 = "140.211.167.98";
 var PYRENE_IPV6 = "2605:bc80:3010:700::8cd3:a762";
 
-var RAMOTH_INTERNAL = "10.0.48.5";
-var RAMOTH_OOB = "10.0.49.5";
-
 var RHAEGAL_IPV4 = "161.53.248.77";
 
 var RIDGEBACK_IPV4 = "31.169.50.10";
@@ -153,9 +180,6 @@ var SAREL_IPV4 = "193.60.236.20";
 var SAREL_INTERNAL = "10.0.0.12";
 var SAREL_OOB = "10.0.1.12";
 
-var SARKANY_IPV4 = "37.17.173.8";
-var SARKANY_IPV6 = "2001:4c48:2:bf04:250:56ff:fe8f:5c81";
-
 var SCORCH_IPV4 = "176.31.235.79";
 var SCORCH_IPV6 = "2001:41d0:2:fc4f::1";
 
@@ -163,15 +187,30 @@ var SHENRON_IPV4 = "212.110.172.32";
 var SHENRON_IPV6 = "2001:41c9:1:400::32";
 var SHENRON_INTERNAL = "10.0.16.3";
 
-var SHRUIKAN_IPV4 = "45.148.169.51";
-var SHRUIKAN_IPV6 = "2a0a:aa42:56:1000::1";
-
 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 SPIKE04_IPV4 = "89.16.162.21";
 var SPIKE04_IPV6 = "2001:41c9:2:d6::21";
 var SPIKE04_INTERNAL = "10.0.32.21";
@@ -205,8 +244,11 @@ var STORMFLY04_IPV4 = "140.211.167.100";
 var STORMFLY04_IPV6 = "2605:bc80:3010:700::8cd3:a764";
 var STORMFLY04_OOB = "10.0.0.3";
 
-var SWITCH1_IPV4 = "130.117.76.2";
-var SWITCH1_IPV6 = "2001:978:2:2c::172:2";
+var SWITCH1AMS_IPV4 = "130.117.76.2";
+var SWITCH1AMS_IPV6 = "2001:978:2:2c::172:2";
+
+var SWITCH1DUB_IPV4 = "184.104.226.97";
+var SWITCH1DUB_IPV6 = "2001:470:1:b3b::1";
 
 var TABALUGA_IPV4 = "130.117.76.14";
 var TABALUGA_IPV6 = "2001:978:2:2c::172:e";
@@ -291,9 +333,6 @@ var URMEL_IPV4 = "193.60.236.21";
 var URMEL_INTERNAL = "10.0.0.6";
 var URMEL_OOB = "10.0.1.6";
 
-var VIPERTOOTH_IPV4 = "176.122.99.101";
-var VIPERTOOTH_IPV6 = "2001:67c:2d40::65";
-
 var VISERION_IPV4 = "193.198.233.211";
 var VISERION_IPV6 = "2001:b68:4cff:3::3";
 
index ec96d85619155e492d729e9be08417c09852bac3..efdf65082d212e61a4f0534a1c776465e837e27b 100644 (file)
@@ -5,11 +5,23 @@ amsterdam:
     - 2217359
     - 2217360
   colour: "#8dd3c7"
-  bandwidth: 1
+  requests: 400
   ipv4: 130.117.76.9
   ipv6: 2001:978:2:2c::172:9
   default: "xx"
 
+dublin:
+  lat: 53.41208595
+  lon: -6.351453620255233
+  statuscake:
+    - 6224536
+    - 6224537
+  colour: "#b15928"
+  requests: 1500
+  ipv4: 184.104.226.109
+  ipv6: 2001:470:1:b3b::d
+  default: "xx"
+
 slough:
   lat: 51.5228002
   lon: -0.62151043832233
@@ -17,12 +29,9 @@ slough:
     - 2217363
     - 2217364
   colour: "#bebada"
-  bandwidth: 0.1
+  requests: 0
   ipv4: 193.60.236.18
   default: "xx"
-  preferred:
-    countries:
-      - ES
 
 corvallis:
   lat: 44.5639267
@@ -31,7 +40,7 @@ corvallis:
     - 5769055
     - 5769056
   colour: "#ffffb3"
-  bandwidth: 1
+  requests: 800
   ipv4: 140.211.167.100
   ipv6: 2605:bc80:3010:700::8cd3:a764
   default: "xx"
index 6dfc203874d1a5be4858f71187d4555e4b90c1f1..fe354674949e5111ee10598462e6c88c97b57d79 100644 (file)
@@ -2,9 +2,29 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
+
+  // Delegate SPF policy to the main domain
+
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:openstreetmap.org",      // main openstreetmap.org spf record
+      "-all"
+    ]
+  }),
 
   // Main web server and it's aliases
 
@@ -12,4 +32,4 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("old", RIDLEY_IPV4, TTL("10m")),
   A("www", RIDLEY_IPV4, TTL("10m"))
 
-);
+);
\ No newline at end of file
index bfed62ec942b9ce3e6064bc5e2a5ab7c841f27b7..a8908c2e6215d5a3164b8b1d12a255ddaaaedef1 100644 (file)
@@ -2,9 +2,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
 
   // Let the main domain handle the email
 
@@ -12,7 +20,15 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Delegate SPF policy to the main domain
 
-  TXT("@", "v=spf1 include:openstreetmap.org -all"),
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:openstreetmap.org",      // main openstreetmap.org spf record
+      "-all"
+    ]
+  }),
 
   // Delegate MTA-STS policy to the main domain
 
index b8904b57b51323ca5e56026ac73783fc6c64c3e0..78061efe6d1feeed5c321970c4a02579891e612f 100644 (file)
@@ -2,9 +2,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
 
   // Let the main domain handle the email
 
@@ -12,7 +20,15 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Delegate SPF policy to the main domain
 
-  TXT("@", "v=spf1 include:openstreetmap.org -all"),
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:openstreetmap.org",      // main openstreetmap.org spf record
+      "-all"
+    ]
+  }),
 
   // Delegate MTA-STS policy to the main domain
 
index b25f6970ff759eff10bac67538a949fcab541403..9e4e1c01557e70d7eb59213077d33821933ce81f 100644 (file)
@@ -2,11 +2,19 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt and globalsign (Fastly) should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issue", "globalsign.com", CF_TTL_ANY),
-  CAA("@", "issuewild", "globalsign.com", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+      "globalsign.com",   // Used by Fastly for CDN certificates
+    ],
+    issuewild: [
+      "letsencrypt.org",
+      "globalsign.com",   // Used by Fastly for CDN certificates
+    ],
+  }),
 
   // Use shenron as the MX host
 
@@ -14,23 +22,91 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   MX("messages", 10, QUALIFY("a.mx")),
   MX("noreply", 10, QUALIFY("a.mx")),
   MX("otrs", 10, QUALIFY("a.mx")),
+  MX("community", 10, QUALIFY("a.mx")),
   A("a.mx", SHENRON_IPV4),
   AAAA("a.mx", SHENRON_IPV6),
 
   // Publish SPF records indicating that only shenron sends mail
 
-  TXT("@", "v=spf1 ip4:212.110.172.32 ip6:2001:41c9:1:400::32 mx -all"),
-  TXT("otrs", "v=spf1 ip4:212.110.172.32 ip6:2001:41c9:1:400::32 mx -all"),
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "mx",                       // safety net if we change mx
+      "-all"
+    ]
+  }),
+
+  SPF_BUILDER({
+    label: "messages",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "mx",                       // safety net if we change mx
+      "-all"
+    ]
+  }),
+
+  SPF_BUILDER({
+    label: "noreply",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "mx",                       // safety net if we change mx
+      "-all"
+    ]
+  }),
+
+  SPF_BUILDER({
+    label: "otrs",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "mx",                       // safety net if we change mx
+      "-all"
+    ]
+  }),
+
+  SPF_BUILDER({
+    label: "community",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "mx",                       // safety net if we change mx
+      "-all"
+    ]
+  }),
 
   // Publish DKIM public key
 
   TXT("20200301._domainkey", "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvoNZVOGfw1V4A171hxHMhzVTAnIUQVJ8iX3wbqCld8A5iIaXeTGYvBmewymax/cYJS4QqzbpUzkgrrTA9avuZhd+QGJDgjADgx4VyMOaOS6FwAxS0uXtLrt+lsixRDx/feKyZHaxjzJAQy46ok77xXL4UXIaaovw6G6eZpIScMzZQ2zkKNJxTICzzSOduIilHhMWte4XP+/2PdRmD7Ge9jb0U4bZjswX0AqKSGzDKYw+yxVna9l53adeCnklqg2ofoXu+ResiH+kt05aCUOMo8en3em6yBnRCMalgi1E3Tt7I5BWcYFRkT/8agUGW4gGC6XMV9IskOsYL0emG0kGwIDAQAB", AUTOSPLIT),
 
+  // Publish DMARC report-only policy
+
+  DMARC_BUILDER({
+    policy: "none",
+    rua: [
+      "mailto:openstreetmap-d@dmarc.report-uri.com"
+    ],
+    failureOptions: 1
+  }),
+
   // Announce MTA-STS policy and TLSRPT policy for error reports
 
   TXT("_mta-sts", "v=STSv1; id=202001291805Z"),
-  TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:postmaster@openstreetmap.org"),
-  
+  TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:openstreetmap-d@tlsrpt.report-uri.com"),
+
   // Fastly cert domain ownership confirmation
 
   TXT("@", "_globalsign-domain-verification=ps00GlW1BzY9c2_cwH_pFqRkvzZyaCVZ-3RLssRG6S"),
@@ -41,6 +117,7 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   CNAME("_mta-sts.messages", QUALIFY("_mta-sts")),
   CNAME("_mta-sts.noreply", QUALIFY("_mta-sts")),
   CNAME("_mta-sts.otrs", QUALIFY("_mta-sts")),
+  CNAME("_mta-sts.community", QUALIFY("_mta-sts")),
 
   // Google postmaster tools verification
 
@@ -50,13 +127,57 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   // Delegate geo.openstreetmap.org to PowerDNS
 
   NS("geo", QUALIFY("balerion")),
-  NS("geo", QUALIFY("chrysophylax")),
   NS("geo", QUALIFY("saphira")),
   NS("geo", QUALIFY("stormfly-04")),
   NS("geo", QUALIFY("ridgeback")),
 
   // Main web servers and their aliases
 
+  A("spike-01", SPIKE01_IPV4),
+  AAAA("spike-01", SPIKE01_IPV6),
+  // A("@", SPIKE01_IPV4, TTL("10m")),
+  // AAAA("@", SPIKE01_IPV6, TTL("10m")),
+  // A("www", SPIKE01_IPV4, TTL("10m")),
+  // AAAA("www", SPIKE01_IPV6, TTL("10m")),
+  // A("api", SPIKE01_IPV4, TTL("10m")),
+  // AAAA("api", SPIKE01_IPV6, TTL("10m")),
+  // A("maps", SPIKE01_IPV4, TTL("10m")),
+  // AAAA("maps", SPIKE01_IPV6, TTL("10m")),
+  // A("mapz", SPIKE01_IPV4, TTL("10m")),
+  // AAAA("mapz", SPIKE01_IPV6, TTL("10m")),
+  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, TTL("10m")),
+  // AAAA("@", SPIKE02_IPV6, TTL("10m")),
+  // A("www", SPIKE02_IPV4, TTL("10m")),
+  // AAAA("www", SPIKE02_IPV6, TTL("10m")),
+  // A("api", SPIKE02_IPV4, TTL("10m")),
+  // AAAA("api", SPIKE02_IPV6, TTL("10m")),
+  // A("maps", SPIKE02_IPV4, TTL("10m")),
+  // AAAA("maps", SPIKE02_IPV6, TTL("10m")),
+  // A("mapz", SPIKE02_IPV4, TTL("10m")),
+  // AAAA("mapz", SPIKE02_IPV6, TTL("10m")),
+  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, TTL("10m")),
+  // AAAA("@", SPIKE03_IPV6, TTL("10m")),
+  // A("www", SPIKE03_IPV4, TTL("10m")),
+  // AAAA("www", SPIKE03_IPV6, TTL("10m")),
+  // A("api", SPIKE03_IPV4, TTL("10m")),
+  // AAAA("api", SPIKE03_IPV6, TTL("10m")),
+  // A("maps", SPIKE03_IPV4, TTL("10m")),
+  // AAAA("maps", SPIKE03_IPV6, TTL("10m")),
+  // A("mapz", SPIKE03_IPV4, TTL("10m")),
+  // AAAA("mapz", SPIKE03_IPV6, TTL("10m")),
+  A("spike-03.dub", SPIKE03_INTERNAL),
+  A("spike-03.oob", SPIKE03_OOB),
+
   A("spike-04", SPIKE04_IPV4),
   AAAA("spike-04", SPIKE04_IPV6),
   // A("@", SPIKE04_IPV4, TTL("10m")),
@@ -161,12 +282,18 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("dulcy.ams", DULCY_INTERNAL),
   A("dulcy.oob", DULCY_OOB),
 
+  A("longma", LONGMA_IPV4),
+  AAAA("longma", LONGMA_IPV6),
+  A("longma.dub", LONGMA_INTERNAL),
+  A("longma.oob", LONGMA_OOB),
+
   A("stormfly-04", STORMFLY04_IPV4),
   AAAA("stormfly-04", STORMFLY04_IPV6),
   A("stormfly-04.oob", STORMFLY04_OOB),
 
   CNAME("nominatim", "nominatim.geo.openstreetmap.org."),
   CNAME("qgis.nominatim", "nominatim.geo.openstreetmap.org."),
+  CNAME("qa-tile.nominatim", "longma.openstreetmap.org."),
 
   // Taginfo server
 
@@ -177,11 +304,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Tile servers
 
-  A("orm", ORM_IPV4),
-  AAAA("orm", ORM_IPV6),
-  A("orm.ams", ORM_INTERNAL),
-  A("orm.oob", ORM_OOB),
-
   A("odin", ODIN_IPV4),
   AAAA("odin", ODIN_IPV6),
   A("odin.ams", ODIN_INTERNAL),
@@ -191,6 +313,15 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   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("scorch", SCORCH_IPV4),
   AAAA("scorch", SCORCH_IPV6),
 
@@ -210,11 +341,13 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("necrosan", NECROSAN_IPV4),
   AAAA("necrosan", NECROSAN_IPV6),
 
-  CNAME("tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
-  CNAME("a.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
-  CNAME("b.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
-  CNAME("c.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
-  
+  CNAME("tile", "dualstack.k.sni.global.fastly.net.", TTL("10m")),
+  CNAME("a.tile", "dualstack.k.sni.global.fastly.net.", TTL("10m")),
+  CNAME("b.tile", "dualstack.k.sni.global.fastly.net.", TTL("10m")),
+  CNAME("c.tile", "dualstack.k.sni.global.fastly.net.", TTL("10m")),
+  // Fastly DNS based ACME Challenge requirement
+  CNAME("_acme-challenge.tile", "bxve5ryiwwv7woiraq.fastly-validations.com.", TTL("10m")),
+
   // Services machine
 
   A("ironbelly", IRONBELLY_IPV4),
@@ -228,6 +361,33 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("ironbelly.ams", IRONBELLY_INTERNAL),
   A("ironbelly.oob", IRONBELLY_OOB),
 
+  A("norbert", NORBERT_IPV4),
+  AAAA("norbert", NORBERT_IPV6),
+  // A("backup", NORBERT_IPV4, TTL("10m")),
+  // AAAA("backup", NORBERT_IPV6, TTL("10m")),
+  // A("planet", NORBERT_IPV4, TTL("10m")),
+  // AAAA("planet", NORBERT_IPV6, TTL("10m")),
+  A("norbert.ams", NORBERT_INTERNAL),
+  A("norbert.oob", NORBERT_OOB),
+
+  A("fafnir", FAFNIR_IPV4),
+  AAAA("fafnir", FAFNIR_IPV6),
+  // A("backup", FAFNIR_IPV4, TTL("10m")),
+  // AAAA("backup", FAFNIR_IPV6, TTL("10m")),
+  // A("planet", FAFNIR_IPV4, TTL("10m")),
+  // AAAA("planet", FAFNIR_IPV6, TTL("10m")),
+  A("fafnir.dub", FAFNIR_INTERNAL),
+  A("fafnir.oob", FAFNIR_OOB),
+
+  A("horntail", HORNTAIL_IPV4),
+  AAAA("horntail", HORNTAIL_IPV6),
+  // A("backup", HORNTAIL_IPV4, TTL("10m")),
+  // AAAA("backup", HORNTAIL_IPV6, TTL("10m")),
+  // A("planet", HORNTAIL_IPV4, TTL("10m")),
+  // AAAA("planet", HORNTAIL_IPV6, TTL("10m")),
+  A("horntail.dub", HORNTAIL_INTERNAL),
+  A("horntail.oob", HORNTAIL_OOB),
+
   A("grisu", GRISU_IPV4),
   AAAA("grisu", GRISU_IPV6),
   // A("backup", GRISU_IPV4, TTL("10m")),
@@ -245,6 +405,9 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   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),
 
@@ -254,9 +417,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("katla.bm", KATLA_INTERNAL),
   A("katla.oob", KATLA_OOB),
 
-  A("ramoth.ams", RAMOTH_INTERNAL),
-  A("ramoth.oob", RAMOTH_OOB),
-
   // Development server with wildcard alias for user sites
 
   A("errol", ERROL_IPV4),
@@ -347,26 +507,31 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("clifford.ucl", CLIFFORD_INTERNAL),
   A("clifford.oob", CLIFFORD_OOB),
 
-  // Discourse server
-
-  A("lockheed", LOCKHEED_IPV4),
-  AAAA("lockheed", LOCKHEED_IPV6),
-  A("lockheed.ams", LOCKHEED_INTERNAL),
-  A("lockheed.oob", LOCKHEED_OOB),
-
   // KVMs
 
   A("kvm1.ucl", KVM1_INTERNAL),
 
   // Managed network switches
 
-  A("switch1", SWITCH1_IPV4),
-  AAAA("switch1", SWITCH1_IPV6),
+  A("switch1.ams", SWITCH1AMS_IPV4),
+  AAAA("switch1.ams", SWITCH1AMS_IPV6),
+
+  A("switch1.dub", SWITCH1DUB_IPV4),
+  AAAA("switch1.dub", SWITCH1DUB_IPV6),
 
   // Managed power strips
 
-  A("pdu1.ams", PDU1_INTERNAL),
-  A("pdu2.ams", PDU2_INTERNAL),
+  A("pdu1.ams", PDU1AMS_INTERNAL),
+  A("pdu2.ams", PDU2AMS_INTERNAL),
+
+  A("pdu1.dub", PDU1DUB_INTERNAL),
+  A("pdu2.dub", PDU2DUB_INTERNAL),
+
+  // Out of band access servers
+
+  A("oob1.ams", OOB1AMS_INTERNAL),
+
+  A("oob1.dub", OOB1DUB_INTERNAL),
 
   // Bytemark machine, and the services which operate from it
 
@@ -399,6 +564,15 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("tabaluga.ams", TABALUGA_INTERNAL),
   A("tabaluga.oob", TABALUGA_OOB),
 
+  // Overpass server
+
+  A("gorwen", GORWEN_IPV4),
+  AAAA("gorwen", GORWEN_IPV6),
+  A("query", GORWEN_IPV4, TTL("10m")),
+  AAAA("query", GORWEN_IPV6, TTL("10m")),
+  A("gorwen.dub", GORWEN_INTERNAL),
+  A("gorwen.oob", GORWEN_OOB),
+
   // GPS tile server
 
   A("noquiklos", NOQUIKLOS_IPV4),
@@ -423,8 +597,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("ridgeback.oob", RIDGEBACK_OOB),
   A("nepomuk", NEPOMUK_IPV4),
   AAAA("nepomuk", NEPOMUK_IPV6),
-  A("longma", LONGMA_IPV4),
-  AAAA("longma", LONGMA_IPV6),
   A("viserion", VISERION_IPV4),
   AAAA("viserion", VISERION_IPV6),
   A("drogon", DROGON_IPV4),
@@ -433,37 +605,16 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   AAAA("saphira", SAPHIRA_IPV6),
   A("toothless", TOOTHLESS_IPV4),
   AAAA("toothless", TOOTHLESS_IPV6),
-  A("sarkany", SARKANY_IPV4),
-  AAAA("sarkany", SARKANY_IPV6),
-  A("kalessin", KALESSIN_IPV4),
-  AAAA("kalessin", KALESSIN_IPV6),
   A("angor", ANGOR_IPV4),
   // AAAA("angor", ANGOR_IPV6),
   A("ladon", LADON_IPV4),
   AAAA("ladon", LADON_IPV6),
   A("ascalon", ASCALON_IPV4),
-  A("cherufe", CHERUFE_IPV4),
-  A("chrysophylax", CHRYSOPHYLAX_IPV4),
-  AAAA("chrysophylax", CHRYSOPHYLAX_IPV6),
-  A("keizer", KEIZER_IPV4),
-  AAAA("keizer", KEIZER_IPV6),
-  A("vipertooth", VIPERTOOTH_IPV4),
-  AAAA("vipertooth", VIPERTOOTH_IPV6),
-  A("nidhogg", NIDHOGG_IPV4),
-  AAAA("nidhogg", NIDHOGG_IPV6),
-  A("boitata", BOITATA_IPV4),
-  AAAA("boitata", BOITATA_IPV6),
-  A("fafnir", FAFNIR_IPV4),
-  AAAA("fafnir", FAFNIR_IPV6),
-  A("fume", FUME_IPV4),
   A("takhisis", TAKHISIS_IPV4),
   AAAA("takhisis", TAKHISIS_IPV6),
   A("neak", NEAK_IPV4),
   A("meraxes", MERAXES_IPV4),
   AAAA("meraxes", MERAXES_IPV6),
-  A("kokosnuss", KOKOSNUSS_IPV4),
-  A("shruikan", SHRUIKAN_IPV4),
-  AAAA("shruikan", SHRUIKAN_IPV6),
   A("firnen", FIRNEN_IPV4),
 
   // Blades
@@ -507,10 +658,36 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Spare
 
+  A("idris", IDRIS_IPV4),
+  AAAA("idris", IDRIS_IPV6),
+  A("idris.dub", IDRIS_INTERNAL),
+  A("idris.oob", IDRIS_OOB),
+  A("konqi", KONQI_IPV4),
+  AAAA("konqi", KONQI_IPV6),
+  A("konqi.dub", KONQI_INTERNAL),
+  A("konqi.oob", KONQI_OOB),
+  A("naga", NAGA_IPV4),
+  AAAA("naga", NAGA_IPV6),
+  A("naga.dub", NAGA_INTERNAL),
+  A("naga.oob", NAGA_OOB),
+  A("lockheed", LOCKHEED_IPV4),
+  AAAA("lockheed", LOCKHEED_IPV6),
+  A("lockheed.ams", LOCKHEED_INTERNAL),
+  A("lockheed.oob", LOCKHEED_OOB),
+
+  // Discourse server ("community")
+  A("jakelong", JAKELONG_IPV4),
+  AAAA("jakelong", JAKELONG_IPV6),
+  A("community", JAKELONG_IPV4),
+  A("communities", JAKELONG_IPV4),
+  AAAA("community", JAKELONG_IPV6),
+  AAAA("communities", JAKELONG_IPV6),
+  A("jakelong.dub", JAKELONG_INTERNAL),
+  A("jakelong.oob", JAKELONG_OOB),
 
   // Donation site
 
-  A("donate", RIDLEY_IPV4, TTL("10m")),
+  A("donate", RIDLEY_IPV4),
 
   // Uptime site at StatusCake
 
index 11eb9c753830730a688f6902b441fff8758e1f3b..e8f0f7bba526f9141f2afdd96d45b9c37c4901ba 100644 (file)
@@ -1,7 +1,7 @@
 D(DOMAIN, REGISTRAR,
 
-  NAMESERVER("falerin.sosm.ch."),
-  NAMESERVER("urlaun.sosm.ch."),
+  NAMESERVER("nalps.sosm.ch."),
+  NAMESERVER("palpuogna.sosm.ch."),
   NAMESERVER("ns.poole.ch."),
   NAMESERVER("he.poole.ch."),
   NAMESERVER("ns3.spreng.ch.")
index 770979ad5a421daa3a38f35d3dcb33f4cdd3728c..b54a99c7c7dcac263188091ff7bcbf272c199b44 100644 (file)
@@ -2,15 +2,23 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
 
   // Main web server and it's aliases
 
-  A("@", "138.201.190.130"),
-  AAAA("@", "2a01:4f8:1c17:6433::1"),
-  A("www", "138.201.190.130"),
-  AAAA("www", "2a01:4f8:1c17:6433::1")
+  A("@", "138.201.190.130", TTL("10m")),
+  AAAA("@", "2a01:4f8:1c17:6433::2", TTL("10m")),
+  A("www", "138.201.190.130", TTL("10m")),
+  AAAA("www", "2a01:4f8:1c17:6433::2", TTL("10m"))
 
 );
index d0df4d428047b337492b93da693448a669255e8b..d4f499f2fbeeb5993576c84a1133bacf7dbf1301 100644 (file)
@@ -2,9 +2,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
 
   // Let google handle email
 
@@ -20,7 +28,20 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // SPF policy
 
-  TXT("@", "v=spf1 ip4:212.110.172.32 ip6:2001:41c9:1:400::32 a mx include:_spf.google.com -all"),
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:_spf.google.com",  // Google GSuite
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "-all"
+    ]
+  }),
+
+  // Apple Business Manager verification
+  TXT("@", "apple-domain-verification=ZzBG2msRtUDehTMW"),
 
   // DKIM keys
 
@@ -33,11 +54,11 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Aliases for google services
 
-  CNAME("login", "ghs.google.com."),
-  CNAME("docs", "ghs.google.com."),
-  CNAME("mail", "ghs.google.com."),
-  CNAME("calendar", "ghs.google.com."),
-  CNAME("sites", "ghs.google.com."),
+  CNAME("login", "ghs.googlehosted.com."),
+  CNAME("docs", "ghs.googlehosted.com."),
+  CNAME("mail", "ghs.googlehosted.com."),
+  CNAME("calendar", "ghs.googlehosted.com."),
+  CNAME("sites", "ghs.googlehosted.com."),
 
   // Main web server and it's aliases
 
@@ -54,6 +75,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Nextcloud instance
 
-  CNAME("files", "nextcloud-openstreetmapfoundation.cloud68.systems")
+  CNAME("files", "nextcloud-openstreetmapfoundation.cloud68.systems.")
 
 );
diff --git a/src/render.openstreetmap.yml b/src/render.openstreetmap.yml
deleted file mode 100644 (file)
index 5ac474b..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-bowser:
-  lat: -37.8001
-  lon: 144.9671
-  statuscake:
-    - 2217312
-  colour: "#bfa730"
-  bandwidth: 300
-  ipv4: 138.44.68.106
-  default: ""
-  preferred:
-    origins:
-      - hamilton
-      - hsinchu
-      - wellington
-
-odin:
-  lat: 52.33724625
-  lon: 4.93370796776345
-  statuscake:
-    - 3987453
-  colour: "#7c1f7c"
-  bandwidth: 800
-  ipv4: 130.117.76.15
-  ipv6: 2001:978:2:2c::172:f
-  default: ""
-  preferred:
-    origins:
-      - amsterdam
-
-ysera:
-  lat: 51.5228002
-  lon: -0.62151043832233
-  statuscake:
-    - 2217313
-  colour: "#412c84"
-  bandwidth: 800
-  ipv4: 193.60.236.22
-  default: ""
-  preferred:
-    origins:
-      - london
-
-scorch:
-  lat: 50.691197900000006
-  lon: 3.2008242044777013
-  statuscake:
-    - 5735161
-  colour: "#bf8230"
-  bandwidth: 200
-  ipv4: 176.31.235.79
-  ipv6: 2001:41d0:2:fc4f::1
-  default: ""
-  preferred:
-    origins:
-      - france
-
-rhaegal:
-  lat: 45.8082123
-  lon: 15.9634238
-  statuscake:
-    - 3343399
-  colour: "#a1b92e"
-  bandwidth: 200
-  ipv4: 161.53.248.77
-  default: ""
-  preferred:
-    origins:
-      - osijek
-      - pula
-
-pyrene:
-  lat: 44.5639267
-  lon: -123.274707837676
-  statuscake:
-    - 3451753
-  colour: "#269926"
-  bandwidth: 600
-  ipv4: 140.211.167.98
-  ipv6: 2605:bc80:3010:700::8cd3:a762
-  default: ""
-  preferred:
-    origins:
-      - corvallis
-      - curitiba
-      - montreal
-      - sanfrancisco
-      - vinadelmar
-
-albi:
-  lat: 49.0537635
-  lon: 2.137900275852825
-  statuscake:
-    - 5441356
-  colour: "#25567b"
-  bandwidth: 50
-  ipv4: 51.159.53.238
-  ipv6: 2001:bc8:1200:4:dac4:97ff:fe8a:9cfc
-  default: ""
-  preferred:
-    origins:
-      - france
-
-# Spare colours:
-#
-#  bf6530
-#  bfb830
-#  562781
-#  1f7c65
-#  bf3030
-#  bf9430
-#  7ab02c
-#  a1285f
-#  2c3d82
index 4e83e5d9ba9b8fe56d5024264de571256fe0dcd5..25cb14a4270012fe00da7ab858b6b2a398ee62bd 100644 (file)
@@ -2,9 +2,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
 
   // Let openstreetmap.at handle email
 
index a8ca9d4cb64dac4a1d26ef4721ec529fc0ee8f49..310fae933086205756912cde42ecca0a9745cda5 100644 (file)
@@ -2,9 +2,31 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
+
+  // SPF policy
+
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:_spf.google.com",  // Google GSuite
+      "ip4:212.110.172.32",       // shenron ipv4
+      "ip6:2001:41c9:1:400::32",  // shenron ipv6
+      "-all"
+    ]
+  }),
 
   // Let google handle email
 
@@ -16,12 +38,17 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Aliases for google services
 
-  CNAME("login", "ghs.google.com."),
+  CNAME("login", "ghs.googlehosted.com."),
+  CNAME("docs", "ghs.googlehosted.com."),
+  CNAME("mail", "ghs.googlehosted.com."),
+  CNAME("calendar", "ghs.googlehosted.com."),
+  CNAME("sites", "ghs.googlehosted.com."),
 
   // Main web server and it's aliases
 
   A("@", RIDLEY_IPV4, TTL("10m")),
   A("www", RIDLEY_IPV4, TTL("10m")),
+  A("2022", RIDLEY_IPV4, TTL("10m")),
   A("2021", RIDLEY_IPV4, TTL("10m")),
   A("2020", RIDLEY_IPV4, TTL("10m")),
   A("2019", RIDLEY_IPV4, TTL("10m")),
@@ -35,10 +62,6 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
   A("2010", RIDLEY_IPV4, TTL("10m")),
   A("2009", RIDLEY_IPV4, TTL("10m")),
   A("2008", RIDLEY_IPV4, TTL("10m")),
-  A("2007", RIDLEY_IPV4, TTL("10m")),
-
-  // Video conferencing server
-
-  A("talk", "95.217.113.173")
+  A("2007", RIDLEY_IPV4, TTL("10m"))
 
 );
index 71cae23abc52aef68b50f05c251ca838699564e9..70e2775efc77ee7a674e5a1c433b5f232235b22f 100644 (file)
@@ -2,9 +2,29 @@ D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
 
   // Publish CAA records indicating that only letsencrypt should issue certificates
 
-  CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
-  CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+  CAA_BUILDER({
+    label: "@",
+    ttl: "1h",
+    iodef: "mailto:hostmaster@openstreetmap.org",
+    issue: [
+      "letsencrypt.org",
+    ],
+    issuewild: [
+      "letsencrypt.org",
+    ],
+  }),
+
+  // Delegate SPF policy to the main domain
+
+  SPF_BUILDER({
+    label: "@",
+    ttl: "1h",
+    parts: [
+      "v=spf1",
+      "include:openstreetmap.org",  // main openstreetmap.org spf record
+      "-all"
+    ]
+  }),
 
   // Main web server and it's aliases
 
diff --git a/src/tile.openstreetmap.yml b/src/tile.openstreetmap.yml
deleted file mode 100644 (file)
index 6dc2858..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-# Moscow, RU
-# BW Limit: 1000Mb/s
-moscow:
-  lat: 55.75
-  lon: 37.617
-  statuscake:
-    - 2217257
-    - 2217258
-  colour: "#8dd3c7"
-  bandwidth: 200
-  ipv4: 5.45.248.21
-  ipv6: 2a02:6b8:b010:5065::a001
-  allowed:
-    countries:
-      - AZ
-      - BY
-      - EE
-      - GE
-      - KZ
-      - LT
-      - LV
-      - MN
-    continents:
-      - EU
-  denied:
-    countries:
-      - UA
-  preferred:
-    countries:
-      - RU
-
-# Amsterdam/Ede/Dronten, NL
-# Amsterdam @ 52.37306,4.89222
-# Ede @ 52.0458265,5.6702011
-# Dronten @ 52.5437235,5.7050729
-# BW Limit: 1000Mb/s
-netherlands:
-  lat: 52.20944325
-  lon: 5.28121055
-  colour: "#bebada"
-  servers:
-    - statuscake:
-        - 2217259
-        - 2217260
-      bandwidth: 30
-      name: trogdor
-      ipv4: 134.90.146.26
-    - statuscake:
-        - 5406587
-        - 5406588
-      bandwidth: 60
-      name: takhisis
-      ipv4: 31.3.110.20
-      ipv6: 2a03:7900:111:0:31:3:110:20
-    - statuscake:
-        - 5499504
-        - 5499504
-      bandwidth: 60
-      name: shruikan
-      ipv4: 45.148.169.51
-      ipv6: 2a0a:aa42:56:1000::1
-
-# Oslo, NO
-# BW Limit: 1000Mb/s
-oslo:
-  lat: 59.94944
-  lon: 10.75639
-  statuscake:
-    - 2217261
-    - 2217262
-  colour: "#ffffb3"
-  bandwidth: 30
-  ipv4: 31.169.50.10
-
-# Lyon/Toulouse/Rennes/Paris, FR
-# Lyon @ 45.7575958,4.8323239 with BW limit of 100Mb/s
-# Toulouse @ 43.6044622,1.4442469
-# Rennes @ 48.10891/-1.63459
-# Paris @ 48.8695940,2.3437840
-france:
-  lat: 46.603354
-  lon: 1.8883335
-  colour: "#fccde5"
-  servers:
-    - statuscake:
-        - 2217265
-        - 2217266
-      bandwidth: 100
-      name: nepomuk
-      ipv4: 77.95.65.39
-      ipv6: 2a03:9180:0:100::7
-    - statuscake:
-        - 5434796
-        - 5434797
-      bandwidth: 40
-      name: neak
-      ipv4: 89.234.177.142
-    - statuscake:
-        - 5435908
-        - 5435909
-      bandwidth: 80
-      name: meraxes
-      ipv4: 51.15.185.90
-      ipv6: 2001:bc8:2d57:100:aa1e:84ff:fe72:e660
-  preferred:
-    countries:
-      - FR
-      - MC
-      - RE
-
-# Falkenstein/Jena/Berlin, DE
-# Falkenstein @ 50.47822,12.33607
-# Jena @ 50.9411,11.60085
-# Berlin @
-# Nuremberg @ 49.44927,11.01402
-germany:
-  lat: 51.0834196
-  lon: 10.4234469
-  colour: "#b2df8a"
-  servers:
-    - statuscake:
-        - 2217293
-        - 2217294
-      bandwidth: 60
-      name: kalessin
-      ipv4: 185.66.195.245
-      ipv6: 2a03:2260:2000:1::5
-    - statuscake:
-        - 3750847
-        - 3750842
-      bandwidth: 120
-      name: keizer
-      ipv4: 195.201.226.63
-      ipv6: 2a01:4f8:1c1c:bc54::1
-    - statuscake:
-      - 5715443
-      - 5715444
-      bandwidth: 80
-      name: firnen
-      ipv4: 188.241.28.82
-  allowed:
-    countries:
-      - DE
-
-# Hsinchu, TW
-hsinchu:
-  lat: 24.78268
-  lon: 120.99563
-  colour: "#33a02c"
-  statuscake:
-    - 2217277
-    - 2217278
-  bandwidth: 200
-  ipv4: 140.110.240.7
-  ipv6: 2001:e10:2000:240::7
-  allowed:
-    continents:
-      - AS
-  denied:
-    countries:
-      - ID
-  preferred:
-    countries:
-      - TW
-      - JP
-
-# Pula, HR
-pula:
-  lat: 44.866280
-  lon: 13.851520
-  statuscake:
-    - 2217279
-    - 2217280
-  colour: "#a6cee3"
-  bandwidth: 100
-  ipv4: 193.198.233.211
-  ipv6: 2001:b68:4cff:3::3
-
-# Osijek, HR
-osijek:
-  lat: 45.55656
-  lon: 18.71212
-  statuscake:
-    - 2217281
-    - 2217282
-  colour: "#fb8072"
-  bandwidth: 100
-  ipv4: 161.53.30.107
-  ipv6: 2001:b68:c0ff:0:221:5eff:fe40:c7c4
-
-# Budapest, HU
-budapest:
-  lat: 47.4925
-  lon: 19.051389
-  statuscake:
-    - 2217283
-    - 2217284
-  colour: "#fdbf6f"
-  bandwidth: 80
-  ipv4: 37.17.173.8
-  ipv6: 2001:4c48:2:bf04:250:56ff:fe8f:5c81
-
-# Athens, GR
-athens:
-  lat: 37.983972
-  lon: 23.727806
-  statuscake:
-    - 2244901
-    - 2244902
-  colour: "#b3de69"
-  bandwidth: 80
-  ipv4: 83.212.2.116
-  ipv6: 2001:648:2ffe:4::116
-
-# Montréal, CA
-montreal:
-  lat: 45.5
-  lon: -73.566667
-  statuscake:
-    - 3155163
-    - 3155162
-  colour: "#b15928"
-  bandwidth: 100
-  ipv4: 184.107.48.228
-  preferred:
-    countries:
-      - CA
-
-# Cape Town, ZA
-capetown:
-  lat: -33.91834
-  lon: 18.42054
-  statuscake:
-    - 2217295
-    - 2217296
-  colour: "#cab2d6"
-  bandwidth: 10
-  ipv4: 196.10.54.165
-  ipv6: 2001:43f8:1f4:b00:b283:feff:fed8:dd45
-  allowed:
-    countries:
-      - BW
-      - LS
-      - MZ
-      - NA
-      - SZ
-      - ZA
-      - ZW
-
-# Viña del Mar, CL
-vinadelmar:
-  lat: -33.008099
-  lon: -71.519699
-  statuscake:
-    - 3499524
-    - 3499526
-  colour: "#ff7f00"
-  bandwidth: 80
-  ipv4: 200.91.44.37
-  allowed:
-    continents:
-      - SA
-
-# Zurich, CH
-# BW Limit: 200Mb/s
-zurich:
-  lat: 47.3769434
-  lon: 8.5414061
-  statuscake:
-    - 3743984
-    - 3743985
-  colour: "#ccebc5"
-  bandwidth: 200
-  ipv4: 217.71.244.22
-  ipv6: 2001:8e0:40:2039::10
-  preferred:
-    countries:
-#      - CH
-      - IT
-#      - SM
-#      - VA
-
-# Kiev, UA
-kiev:
-  lat: 50.4020865
-  lon: 30.6146803128848
-  statuscake:
-    - 3890448
-    - 3890447
-  colour: "#fb9a99"
-  bandwidth: 70
-  ipv4: 176.122.99.101
-  ipv6: 2001:67c:2d40::65
-
-# Linköping/Umeå, SE
-# Linköping @ 58.403261,15.623611189797
-# Umeå @ 63.82177625,20.3043163114932
-sweden:
-  lat: 61.1125186
-  lon: 17.9639637506451
-  colour: "#d9d9d9"
-  servers:
-    - statuscake:
-        - 3932686
-        - 3932688
-      bandwidth: 40
-      name: nidhogg
-      ipv4: 130.236.254.221
-      ipv6: 2001:6b0:17:f0a0::dd
-    - statuscake:
-        - 3949588
-        - 3949589
-      bandwidth: 80
-      name: fafnir
-      ipv4: 130.239.18.114
-      ipv6: 2001:6b0:e:2a18::114
-
-# Curitiba/São Paulo, BR
-# Curitaba @ -25.41403745,-49.252918753851
-# São Paulo @ -23.55,-46.633333
-brazil:
-  lat: -24.482018725
-  lon: -47.9431258769255
-  colour: "#33a02c"
-  servers:
-    - statuscake:
-        - 3945882
-        - 3945883
-      bandwidth: 60
-      name: boitata
-      ipv4: 200.236.31.207
-      ipv6: 2801:82:80ff:8002:216:ccff:feaa:21
-  allowed:
-    countries:
-      - BR
-
-# Pilsen/Prague, CZ
-# Pilsen @ 49.723689,13.351542
-# Prague @ 50.0874654,14.4212535
-czechia:
-  lat: 49.9055772
-  lon: 13.88639775
-  colour: "#d9d9d9"
-  servers:
-    - statuscake:
-        - 4065539
-        - 4065540
-      bandwidth: 30
-      name: fume
-      ipv4: 147.228.60.16
-  allowed:
-    countries:
-      - AT
-      - CZ
-      - DE
-      - PL
-      - SK
-
-# Katowice, Poland
-#katowice:
-#  lat: 50.25349
-#  lon: 19.00283
-#  statuscake:
-#    - 5715443
-#    - 5715444
-#  colour: "#A22E5B"
-#  bandwidth: 80
-#  name: firnen
-#  ipv4: 188.241.28.82
-
-# Fastly
-fastly:
-  global: true
-  statuscake: []
-  bandwidth: 10000
-  cname: dualstack.osff2.map.fastly.net
-  default: "xx"
-  allowed:
-    continents:
-      - AF
-      - AN
-      - AS
-      - EU
-      - NA
-      - OC
-      - SA
-  preferred:
-    continents:
-      - AF
-      - AN
-      - AS
-      - EU
-      - NA
-      - OC
-      - SA
-
-# Spare colours:
-  colour: "#1f78b4"