]> git.openstreetmap.org Git - dns.git/blob - src/openstreetmap.js
45df0a0e36819dbb36359d5f512db7f46e9e70ae
[dns.git] / src / openstreetmap.js
1 D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
2
3   // Publish CAA records indicating that only letsencrypt and globalsign (Fastly) should issue certificates
4
5   CAA_BUILDER({
6     label: "@",
7     ttl: "1h",
8     iodef: "mailto:hostmaster@openstreetmap.org",
9     issue: [
10       "letsencrypt.org",
11       "globalsign.com",   // Used by Fastly for CDN certificates
12     ],
13     issuewild: [
14       "letsencrypt.org",
15       "globalsign.com",   // Used by Fastly for CDN certificates
16     ],
17   }),
18
19   // Mail service
20
21   MX("@", 10, QUALIFY("a.mx")),
22   MX("messages", 10, QUALIFY("a.mx")),
23   MX("noreply", 10, QUALIFY("a.mx")),
24   MX("otrs", 10, QUALIFY("a.mx")),
25   MX("community", 10, QUALIFY("a.mx")),
26   MX("supporting", 10, QUALIFY("a.mx")),
27
28   A("a.mx", IPV4["fafnir.he"]),
29   AAAA("a.mx", IPV6["fafnir.he"]),
30   A("mail", IPV4["fafnir.he"]),
31   AAAA("mail", IPV6["fafnir.he"]),
32   A("mta-sts", IPV4["fafnir.he"]),
33   AAAA("mta-sts", IPV6["fafnir.he"]),
34
35   // Publish SPF records indicating that only shenron sends mail
36
37   SPF_BUILDER({
38     label: "@",
39     parts: [
40       "v=spf1",
41       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
42       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
43       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
44       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
45       "ip4:193.60.236.0/24",        // ucl external
46       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
47       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
48       "ip4:87.252.214.96/27",       // dublin external (equinix)
49       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
50       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
51       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
52       "ip4:184.104.226.96/27",      // dublin external (he.net)
53       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
54       "mx",                         // safety net if we change mx
55       "-all"
56     ]
57   }),
58
59   SPF_BUILDER({
60     label: "messages",
61     parts: [
62       "v=spf1",
63       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
64       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
65       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
66       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
67       "ip4:193.60.236.0/24",        // ucl external
68       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
69       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
70       "ip4:87.252.214.96/27",       // dublin external (equinix)
71       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
72       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
73       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
74       "ip4:184.104.226.96/27",      // dublin external (he.net)
75       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
76       "mx",                         // safety net if we change mx
77       "-all"
78     ]
79   }),
80
81   SPF_BUILDER({
82     label: "noreply",
83     parts: [
84       "v=spf1",
85       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
86       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
87       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
88       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
89       "ip4:193.60.236.0/24",        // ucl external
90       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
91       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
92       "ip4:87.252.214.96/27",       // dublin external (equinix)
93       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
94       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
95       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
96       "ip4:184.104.226.96/27",      // dublin external (he.net)
97       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
98       "mx",                         // safety net if we change mx
99       "-all"
100     ]
101   }),
102
103   SPF_BUILDER({
104     label: "otrs",
105     parts: [
106       "v=spf1",
107       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
108       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
109       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
110       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
111       "ip4:193.60.236.0/24",        // ucl external
112       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
113       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
114       "ip4:87.252.214.96/27",       // dublin external (equinix)
115       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
116       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
117       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
118       "ip4:184.104.226.96/27",      // dublin external (he.net)
119       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
120       "mx",                         // safety net if we change mx
121       "-all"
122     ]
123   }),
124
125   SPF_BUILDER({
126     label: "community",
127     parts: [
128       "v=spf1",
129       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
130       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
131       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
132       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
133       "ip4:193.60.236.0/24",        // ucl external
134       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
135       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
136       "ip4:87.252.214.96/27",       // dublin external (equinix)
137       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
138       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
139       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
140       "ip4:184.104.226.96/27",      // dublin external (he.net)
141       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
142       "mx",                         // safety net if we change mx
143       "-all"
144     ]
145   }),
146
147   SPF_BUILDER({
148     label: "supporting",
149     parts: [
150       "v=spf1",
151       "ip4:184.104.226.98",         // fafnir ipv4 (he.net)
152       "ip6:2001:470:1:b3b::2",      // fafnir ipv6 (he.net)
153       "ip4:87.252.214.98",          // fafnir ipv4 (equinix)
154       "ip6:2001:4d78:fe03:1c::2",   // fafnir ipv6 (equinix)
155       "ip4:193.60.236.0/24",        // ucl external
156       "ip4:82.199.86.96/27",        // amsterdam external (equinix)
157       "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
158       "ip4:87.252.214.96/27",       // dublin external (equinix)
159       "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
160       "ip4:184.104.179.128/27",     // amsterdam external (he.net)
161       "ip6:2001:470:1:fa1::/64",    // amsterdam external (he.net)
162       "ip4:184.104.226.96/27",      // dublin external (he.net)
163       "ip6:2001:470:1:b3b::/64",    // dublin external (he.net)
164       "mx",                         // safety net if we change mx
165       "-all"
166     ]
167   }),
168
169   // Publish DKIM public key
170
171   TXT("20200301._domainkey", "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvoNZVOGfw1V4A171hxHMhzVTAnIUQVJ8iX3wbqCld8A5iIaXeTGYvBmewymax/cYJS4QqzbpUzkgrrTA9avuZhd+QGJDgjADgx4VyMOaOS6FwAxS0uXtLrt+lsixRDx/feKyZHaxjzJAQy46ok77xXL4UXIaaovw6G6eZpIScMzZQ2zkKNJxTICzzSOduIilHhMWte4XP+/2PdRmD7Ge9jb0U4bZjswX0AqKSGzDKYw+yxVna9l53adeCnklqg2ofoXu+ResiH+kt05aCUOMo8en3em6yBnRCMalgi1E3Tt7I5BWcYFRkT/8agUGW4gGC6XMV9IskOsYL0emG0kGwIDAQAB", AUTOSPLIT),
172
173   // Publish DMARC report-only policy
174
175   DMARC_BUILDER({
176     policy: "none",
177     rua: [
178       "mailto:openstreetmap-d@dmarc.report-uri.com"
179     ],
180     failureOptions: 1
181   }),
182
183   // Announce MTA-STS policy and TLSRPT policy for error reports
184
185   TXT("_mta-sts", "v=STSv1; id=202001291805Z"),
186   TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:openstreetmap-d@tlsrpt.report-uri.com"),
187
188   // Fastly cert domain ownership confirmation
189
190   TXT("@", "_globalsign-domain-verification=ps00GlW1BzY9c2_cwH_pFqRkvzZyaCVZ-3RLssRG6S"),
191   TXT("@", "_globalsign-domain-verification=W0buKB5ZmL-VwwHw2oQyQImk3I1q3hSemf2qmB1hjP"),
192
193   // Facebook Business domain verification
194
195   TXT("@", "facebook-domain-verification=j5hix5i8r0kortfugqf2p9wx9x9by0"),
196
197   // Bluesky domain verification
198
199   TXT("_atproto", "did=did:plc:i6llv7iwybeipknl57v4dalb"),
200
201   // Delegate MTA-STS policy for subdomains
202
203   CNAME("_mta-sts.messages", QUALIFY("_mta-sts")),
204   CNAME("_mta-sts.noreply", QUALIFY("_mta-sts")),
205   CNAME("_mta-sts.otrs", QUALIFY("_mta-sts")),
206   CNAME("_mta-sts.community", QUALIFY("_mta-sts")),
207   CNAME("_mta-sts.supporting", QUALIFY("_mta-sts")),
208
209   // Google postmaster tools verification
210
211   CNAME("af323lytato5", "gv-o4v3qh5pfayqex.dv.googlehosted.com."),
212   CNAME("irzdddnmh465", "gv-cwr6bvt7xsgact.dv.googlehosted.com."),
213
214   // Main web servers and their aliases
215
216   HTTPS("www", 1, ".", "alpn=h2"),
217   HTTPS("api", 1, ".", "alpn=h2"),
218   HTTPS("maps", 1, ".", "alpn=h2"),
219   HTTPS("mapz", 1, ".", "alpn=h2"),
220
221   // A("@", IPV4["spike-01.he"]),
222   // AAAA("@", IPV6["spike-01.he"]),
223   // A("www", IPV4["spike-01.he"]),
224   // AAAA("www", IPV6["spike-01.he"]),
225   // A("api", IPV4["spike-01.he"]),
226   // AAAA("api", IPV6["spike-01.he"]),
227   // A("maps", IPV4["spike-01.he"]),
228   // AAAA("maps", IPV6["spike-01.he"]),
229   // A("mapz", IPV4["spike-01.he"]),
230   // AAAA("mapz", IPV6["spike-01.he"]),
231
232   // A("@", IPV4["spike-02.he"]),
233   // AAAA("@", IPV6["spike-02.he"]),
234   // A("www", IPV4["spike-02.he"]),
235   // AAAA("www", IPV6["spike-02.he"]),
236   // A("api", IPV4["spike-02.he"]),
237   // AAAA("api", IPV6["spike-02.he"]),
238   // A("maps", IPV4["spike-02.he"]),
239   // AAAA("maps", IPV6["spike-02.he"]),
240   // A("mapz", IPV4["spike-02.he"]),
241   // AAAA("mapz", IPV6["spike-02.he"]),
242
243   // A("@", IPV4["spike-03.he"]),
244   // AAAA("@", IPV6["spike-03.he"]),
245   // A("www", IPV4["spike-03.he"]),
246   // AAAA("www", IPV6["spike-03.he"]),
247   // A("api", IPV4["spike-03.he"]),
248   // AAAA("api", IPV6["spike-03.he"]),
249   // A("maps", IPV4["spike-03.he"]),
250   // AAAA("maps", IPV6["spike-03.he"]),
251   // A("mapz", IPV4["spike-03.he"]),
252   // AAAA("mapz", IPV6["spike-03.he"]),
253
254   A("@", IPV4["spike-06"], CF_PROXY_ON),
255   AAAA("@", IPV6["spike-06"], CF_PROXY_ON),
256   A("www", IPV4["spike-06"], CF_PROXY_ON),
257   AAAA("www", IPV6["spike-06"], CF_PROXY_ON),
258   A("api", IPV4["spike-06"], CF_PROXY_ON),
259   AAAA("api", IPV6["spike-06"], CF_PROXY_ON),
260   A("maps", IPV4["spike-06"], CF_PROXY_ON),
261   AAAA("maps", IPV6["spike-06"], CF_PROXY_ON),
262   A("mapz", IPV4["spike-06"], CF_PROXY_ON),
263   AAAA("mapz", IPV6["spike-06"], CF_PROXY_ON),
264
265   A("@", IPV4["spike-07"], CF_PROXY_ON),
266   AAAA("@", IPV6["spike-07"], CF_PROXY_ON),
267   A("www", IPV4["spike-07"], CF_PROXY_ON),
268   AAAA("www", IPV6["spike-07"], CF_PROXY_ON),
269   A("api", IPV4["spike-07"], CF_PROXY_ON),
270   AAAA("api", IPV6["spike-07"], CF_PROXY_ON),
271   A("maps", IPV4["spike-07"], CF_PROXY_ON),
272   AAAA("maps", IPV6["spike-07"], CF_PROXY_ON),
273   A("mapz", IPV4["spike-07"], CF_PROXY_ON),
274   AAAA("mapz", IPV6["spike-07"], CF_PROXY_ON),
275
276   A("@", IPV4["spike-08"], CF_PROXY_ON),
277   AAAA("@", IPV6["spike-08"], CF_PROXY_ON),
278   A("www", IPV4["spike-08"], CF_PROXY_ON),
279   AAAA("www", IPV6["spike-08"], CF_PROXY_ON),
280   A("api", IPV4["spike-08"], CF_PROXY_ON),
281   AAAA("api", IPV6["spike-08"], CF_PROXY_ON),
282   A("maps", IPV4["spike-08"], CF_PROXY_ON),
283   AAAA("maps", IPV6["spike-08"], CF_PROXY_ON),
284   A("mapz", IPV4["spike-08"], CF_PROXY_ON),
285   AAAA("mapz", IPV6["spike-08"], CF_PROXY_ON),
286
287   // Nominatim servers
288
289   CNAME("nominatim", "nominatim.geo.openstreetmap.org."),
290   CNAME("qgis.nominatim", "nominatim.geo.openstreetmap.org."),
291   CNAME("qa-tile.nominatim", "longma.openstreetmap.org."),
292
293   // Tile servers
294
295   CNAME("tile", "dualstack.n.sni.global.fastly.net."),
296   CNAME("a.tile", "dualstack.n.sni.global.fastly.net."),
297   CNAME("b.tile", "dualstack.n.sni.global.fastly.net."),
298   CNAME("c.tile", "dualstack.n.sni.global.fastly.net."),
299
300   A("render", IPV4["culebre.he"]),
301   A("render", IPV4["nidhogg"]),
302   AAAA("render", IPV6["culebre.he"]),
303   AAAA("render", IPV6["nidhogg"]),
304
305   // Vector tile servers
306
307   CNAME("vector", "dualstack.n.sni.global.fastly.net."),
308
309   // Planet servers
310
311   HTTPS("planet", 1, ".", "alpn=h2"),
312
313   A("backup", IPV4["norbert"]),
314   AAAA("backup", IPV6["norbert"]),
315   A("planet", IPV4["norbert"]),
316   AAAA("planet", IPV6["norbert"]),
317
318   // A("backup", IPV4["horntail.he"]),
319   // AAAA("backup", IPV6["horntail.he"]),
320   // A("planet", IPV4["horntail.he"]),
321   // AAAA("planet", IPV6["horntail.he"]),
322
323   // Development server with wildcard alias for user sites
324
325   A("dev", IPV4["faffy"]),
326   AAAA("dev", IPV6["faffy"]),
327   A("*.dev", IPV4["faffy"]),
328   AAAA("*.dev", IPV6["faffy"]),
329   A("ooc", IPV4["faffy"]),
330   AAAA("ooc", IPV6["faffy"]),
331   A("a.ooc", IPV4["faffy"]),
332   AAAA("a.ooc", IPV6["faffy"]),
333   A("b.ooc", IPV4["faffy"]),
334   AAAA("b.ooc", IPV6["faffy"]),
335   A("c.ooc", IPV4["faffy"]),
336   AAAA("c.ooc", IPV6["faffy"]),
337   A("npe", IPV4["faffy"]),
338   AAAA("npe", IPV6["faffy"]),
339
340   // Foundation server
341
342   HTTPS("blog", 1, ".", "alpn=h2"),
343   HTTPS("foundation", 1, ".", "alpn=h2"),
344
345   A("blog", IPV4["ridley"]),
346   A("foundation", IPV4["ridley"]),
347
348   // Matomo server
349
350   HTTPS("matomo", 1, ".", "alpn=h2"),
351   HTTPS("piwik", 1, ".", "alpn=h2"),
352
353   A("matomo", IPV4["smaug.he"]),
354   AAAA("matomo", IPV6["smaug.he"]),
355   A("piwik", IPV4["smaug.he"]),
356   AAAA("piwik", IPV6["smaug.he"]),
357
358   // Imagery servers
359
360   HTTPS("agri", 1, ".", "alpn=h2"),
361   HTTPS("a.agri", 1, ".", "alpn=h2"),
362   HTTPS("b.agri", 1, ".", "alpn=h2"),
363   HTTPS("c.agri", 1, ".", "alpn=h2"),
364
365   A("agri", IPV4["lockheed"]),
366   AAAA("agri", IPV6["lockheed"]),
367   A("a.agri", IPV4["lockheed"]),
368   AAAA("a.agri", IPV6["lockheed"]),
369   A("b.agri", IPV4["lockheed"]),
370   AAAA("b.agri", IPV6["lockheed"]),
371   A("c.agri", IPV4["lockheed"]),
372   AAAA("c.agri", IPV6["lockheed"]),
373
374   HTTPS("os", 1, ".", "alpn=h2"),
375   HTTPS("a.os", 1, ".", "alpn=h2"),
376   HTTPS("b.os", 1, ".", "alpn=h2"),
377   HTTPS("c.os", 1, ".", "alpn=h2"),
378
379   A("os", IPV4["lockheed"]),
380   AAAA("os", IPV6["lockheed"]),
381   A("a.os", IPV4["lockheed"]),
382   AAAA("a.os", IPV6["lockheed"]),
383   A("b.os", IPV4["lockheed"]),
384   AAAA("b.os", IPV6["lockheed"]),
385   A("c.os", IPV4["lockheed"]),
386   AAAA("c.os", IPV6["lockheed"]),
387
388   HTTPS("tiler", 1, ".", "alpn=h2"),
389   HTTPS("us-imagery", 1, ".", "alpn=h2"),
390   HTTPS("a.us-imagery", 1, ".", "alpn=h2"),
391   HTTPS("b.us-imagery", 1, ".", "alpn=h2"),
392   HTTPS("c.us-imagery", 1, ".", "alpn=h2"),
393
394   A("tiler", IPV4["lockheed"]),
395   AAAA("tiler", IPV6["lockheed"]),
396   A("us-imagery", IPV4["lockheed"]),
397   AAAA("us-imagery", IPV6["lockheed"]),
398   A("a.us-imagery", IPV4["lockheed"]),
399   AAAA("a.us-imagery", IPV6["lockheed"]),
400   A("b.us-imagery", IPV4["lockheed"]),
401   AAAA("b.us-imagery", IPV6["lockheed"]),
402   A("c.us-imagery", IPV4["lockheed"]),
403   AAAA("c.us-imagery", IPV6["lockheed"]),
404
405   // Prometheus server and munin redirect
406
407   HTTPS("prometheus", 1, ".", "alpn=h2"),
408   HTTPS("munin", 1, ".", "alpn=h2"),
409
410   A("prometheus", IPV4["stormfly-03"]),
411   AAAA("prometheus", IPV6["stormfly-03"]),
412   A("munin", IPV4["stormfly-03"]),
413   AAAA("munin", IPV6["stormfly-03"]),
414
415   // Management server
416
417   HTTPS("acme", 1, ".", "alpn=h2"),
418   HTTPS("chef", 1, ".", "alpn=h2"),
419   HTTPS("dns", 1, ".", "alpn=h2"),
420   HTTPS("git", 1, ".", "alpn=h2"),
421   HTTPS("hardware", 1, ".", "alpn=h2"),
422
423   A("acme", IPV4["idris.he"]),
424   AAAA("acme", IPV6["idris.he"]),
425   A("apt", IPV4["idris.he"]),
426   AAAA("apt", IPV6["idris.he"]),
427   A("chef", IPV4["idris.he"]),
428   AAAA("chef", IPV6["idris.he"]),
429   A("dns", IPV4["idris.he"]),
430   AAAA("dns", IPV6["idris.he"]),
431   A("git", IPV4["idris.he"]),
432   AAAA("git", IPV6["idris.he"]),
433   A("hardware", IPV4["idris.he"]),
434   AAAA("hardware", IPV6["idris.he"]),
435
436   // Bytemark machine, and the services which operate from it
437
438   HTTPS("lists", 1, ".", "alpn=h2"),
439   HTTPS("help", 1, ".", "alpn=h2"),
440
441   A("lists", IPV4["shenron"]),
442   AAAA("lists", IPV6["shenron"]),
443   A("help", IPV4["shenron"]),
444   AAAA("help", IPV6["shenron"]),
445
446   // Naga services
447
448   HTTPS("svn", 1, ".", "alpn=h2"),
449   HTTPS("trac", 1, ".", "alpn=h2"),
450   HTTPS("irc", 1, ".", "alpn=h2"),
451   HTTPS("blogs", 1, ".", "alpn=h2"),
452   HTTPS("welcome", 1, ".", "alpn=h2"),
453   HTTPS("operations", 1, ".", "alpn=h2"),
454   HTTPS("hot", 1, ".", "alpn=h2"),
455   HTTPS("dmca", 1, ".", "alpn=h2"),
456   // HTTPS("otrs", 1, ".", "alpn=h2"), - OTRS is not available using HTTPS/2
457   HTTPS("birthday20", 1, ".", "alpn=h2"),
458
459   A("svn", IPV4["naga.he"]),
460   AAAA("svn", IPV6["naga.he"]),
461   A("trac", IPV4["naga.he"]),
462   AAAA("trac", IPV6["naga.he"]),
463   A("irc", IPV4["naga.he"]),
464   AAAA("irc", IPV6["naga.he"]),
465   A("blogs", IPV4["naga.he"]),
466   AAAA("blogs", IPV6["naga.he"]),
467   A("welcome", IPV4["naga.he"]),
468   AAAA("welcome", IPV6["naga.he"]),
469   A("operations", IPV4["naga.he"]),
470   AAAA("operations", IPV6["naga.he"]),
471   A("hot", IPV4["naga.he"]),
472   AAAA("hot", IPV6["naga.he"]),
473   A("dmca", IPV4["naga.he"]),
474   AAAA("dmca", IPV6["naga.he"]),
475   A("otrs", IPV4["naga.he"]),
476   AAAA("otrs", IPV6["naga.he"]),
477   A("birthday20", IPV4["naga.he"]),
478   AAAA("birthday20", IPV6["naga.he"]),
479
480   // Wiki servers
481
482   HTTPS("wiki", 1, ".", "alpn=h2"),
483
484   A("wiki", IPV4["konqi.he"]),
485   AAAA("wiki", IPV6["konqi.he"]),
486
487   // Overpass server
488
489   HTTPS("query", 1, ".", "alpn=h2"),
490
491   A("query", IPV4["grisu.he"]),
492   AAAA("query", IPV6["grisu.he"]),
493
494   // GPS tile server
495
496   HTTPS("gps-tile", 1, ".", "alpn=h2"),
497   HTTPS("a.gps-tile", 1, ".", "alpn=h2"),
498   HTTPS("b.gps-tile", 1, ".", "alpn=h2"),
499   HTTPS("c.gps-tile", 1, ".", "alpn=h2"),
500   HTTPS("gps-a.tile", 1, ".", "alpn=h2"),
501   HTTPS("gps-b.tile", 1, ".", "alpn=h2"),
502   HTTPS("gps-c.tile", 1, ".", "alpn=h2"),
503
504   A("gps-tile", IPV4["muirdris.he"]),
505   AAAA("gps-tile", IPV6["muirdris.he"]),
506   A("a.gps-tile", IPV4["muirdris.he"]),
507   AAAA("a.gps-tile", IPV6["muirdris.he"]),
508   A("b.gps-tile", IPV4["muirdris.he"]),
509   AAAA("b.gps-tile", IPV6["muirdris.he"]),
510   A("c.gps-tile", IPV4["muirdris.he"]),
511   AAAA("c.gps-tile", IPV6["muirdris.he"]),
512   A("gps.tile", IPV4["muirdris.he"]),
513   AAAA("gps.tile", IPV6["muirdris.he"]),
514   A("gps-a.tile", IPV4["muirdris.he"]),
515   AAAA("gps-a.tile", IPV6["muirdris.he"]),
516   A("gps-b.tile", IPV4["muirdris.he"]),
517   AAAA("gps-b.tile", IPV6["muirdris.he"]),
518   A("gps-c.tile", IPV4["muirdris.he"]),
519   AAAA("gps-c.tile", IPV6["muirdris.he"]),
520
521   // Donation site and new OSMF crm site
522
523   HTTPS("donate", 1, ".", "alpn=h2"),
524   HTTPS("support", 1, ".", "alpn=h2"),
525   HTTPS("supporting", 1, ".", "alpn=h2"),
526
527   A("donate", IPV4["ridley"]),
528   A("support", IPV4["ridley"]),
529   A("supporting", IPV4["ridley"]),
530
531   // Discourse server ("community")
532
533   HTTPS("community", 1, ".", "alpn=h2"),
534   HTTPS("communities", 1, ".", "alpn=h2"),
535   HTTPS("c", 1, ".", "alpn=h2"),
536
537   A("community", IPV4["fume.he"]),
538   A("communities", IPV4["fume.he"]),
539   A("c", IPV4["fume.he"]),
540   AAAA("community", IPV6["fume.he"]),
541   AAAA("communities", IPV6["fume.he"]),
542   AAAA("c", IPV6["fume.he"]),
543
544   CNAME("community-cdn", "dualstack.n.sni.global.fastly.net."),
545   TXT("community", "google-site-verification=hQ8GZyj4KwnPqAX2oAzpbLrh6I5dfR08PSdL3icVkfg"),
546
547   HTTPS("forum", 1, ".", "alpn=h2"),
548
549   A("forum", IPV4["fume.he"]),
550   AAAA("forum", IPV6["fume.he"]),
551
552   // Taginfo and Staging Blog Server
553
554   HTTPS("taginfo", 1, ".", "alpn=h2"),
555
556   A("taginfo", IPV4["tabaluga"]),
557   AAAA("taginfo", IPV6["tabaluga"]),
558
559   HTTPS("staging.blog", 1, ".", "alpn=h2"),
560
561   A("staging.blog", IPV4["tabaluga"]),
562   AAAA("staging.blog", IPV6["tabaluga"]),
563
564   // Uptime site at StatusCake
565
566   CNAME("uptime", "uptimessl-new.statuscake.com.")
567
568 );