1var DSP_CLOUDFLARE = NewDnsProvider("cloudflare");
2var DSP_BUNNY = NewDnsProvider("bunny_dns");
3var REG_NONE = NewRegistrar("none");
4
5var DZWONEK_IP4 = "94.237.26.47";
6var DZWONEK_IP6 = "2a04:3542:1000:910:6898:1dff:fea1:4b4b";
7var DZWONEK_IPS = [DZWONEK_IP4, DZWONEK_IP6];
8var TRIMOUNTS_IP4 = "159.195.58.28";
9var TRIMOUNTS_IP6 = "2a0a:4cc0:c1:e83d::b00b";
10var TRIMOUNTS_IPS = [TRIMOUNTS_IP4, TRIMOUNTS_IP6];
11
12function host(name, ips, opts) {
13 if (opts)
14 return [
15 A(name, ips[0], opts),
16 AAAA(name, ips[1], opts),
17 ];
18 else
19 return [
20 A(name, ips[0]),
21 AAAA(name, ips[1]),
22 ];
23}
24
25function hosts(_names, ips, opts) {
26 var names = [];
27 if (typeof _names === "string")
28 names.push(_names);
29 else
30 names = _names;
31
32 var records = [];
33 _.each(names, function (name) {
34 _.each(host(name, ips, opts), function (r) {
35 records.push(r);
36 });
37 });
38 return records;
39}
40
41function TRIMOUNTS(names, opts) {
42 return hosts(names, TRIMOUNTS_IPS, opts);
43}
44function DZWONEK(names, opts) {
45 return hosts(names, DZWONEK_IPS, opts);
46}
47
48function IGNORE_ACME() {
49 return IGNORE_NAME("_acme-challenge");
50}
51
52D(
53 "gaze.systems",
54 REG_NONE,
55 DnsProvider(DSP_BUNNY),
56 DefaultTTL(1),
57 TRIMOUNTS(
58 [
59 "@", "doc", "pmart", "dash", "id",
60 "knot", "spindle",
61 "guestbook",
62 ],
63 CF_PROXY_OFF,
64 ),
65 DZWONEK("vpn", CF_PROXY_OFF),
66 // github pages
67 CNAME("dev", "90-008.github.io."),
68 // fastmail
69 CNAME("fm1._domainkey", "fm1.gaze.systems.dkim.fmhosted.com."),
70 CNAME("fm2._domainkey", "fm2.gaze.systems.dkim.fmhosted.com."),
71 CNAME("fm3._domainkey", "fm3.gaze.systems.dkim.fmhosted.com."),
72 MX("@", 10, "in1-smtp.messagingengine.com."),
73 MX("@", 20, "in2-smtp.messagingengine.com."),
74 TXT("@", "v=spf1 include:spf.messagingengine.com ?all"),
75 TXT("_dmarc", "v=DMARC1; p=reject;"),
76 // resend
77 MX("send.poke", 10, "feedback-smtp.us-east-1.amazonses.com."),
78 TXT(
79 "resend._domainkey.poke",
80 "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8/06F14LZgg7l6eko9GXasUwCBUGHe1Abd5hMg0Xf9ufdUj7lAUB746DS1ErS04oxGEbCdjamkAGqRsYWvk5KGRIXmeYuKyMPFM44U0dt6caHOIr8pHoDj9ytAJD/RS/p1xQZoFXHBxKgAeEY3TUZy7iNLvGxCLkxuPnO7nlWKwIDAQAB",
81 ),
82 TXT("send.poke", "v=spf1 include:amazonses.com ~all"),
83 // atproto
84 TXT("_atproto.eris", "did=did:plc:bxjnsrfzozl365rsdo5yvuz5", TTL(60)),
85 TXT("_atproto.drew", "did=did:plc:vo6ie3kd6xvpjlof4pnb2zzp", TTL(60)),
86 IGNORE_ACME(),
87);
88
89D(
90 "9.0.0.0.8.e.f.1.5.0.7.4.0.1.0.0.2.ip6.arpa",
91 REG_NONE,
92 DnsProvider(DSP_CLOUDFLARE),
93 DefaultTTL(1),
94 TRIMOUNTS("@", CF_PROXY_ON),
95 TXT("@", "a data endpoint for entity with serial id /90008/."),
96 TXT(
97 "@",
98 "entity linked here uses it/that pronouns. it can also be referred to as /dawn/.",
99 ),
100 TXT(
101 "@",
102 "this one is not a human, try to refer to it in third person. use /this one/, /this thing/, etc.",
103 ),
104 TXT(
105 "@",
106 "try connecting to https://gaze.systems/about for more information.",
107 ),
108 IGNORE_ACME(),
109);
110
111D(
112 "poor.dog",
113 REG_NONE,
114 DnsProvider(DSP_BUNNY),
115 DefaultTTL(1),
116 TRIMOUNTS("@", CF_PROXY_OFF),
117 TXT("@", "v=spf1 -all"),
118 TXT("_dmarc", "v=DMARC1; p=reject;"),
119 TXT("_atproto", "did=did:plc:dfl62fgb7wtjj3fcbb72naae", TTL(60)),
120 IGNORE_ACME(),
121);
122
123var EMAIL_TTL = 86400;
124
125D(
126 "ptr.pet",
127 REG_NONE,
128 DnsProvider(DSP_BUNNY),
129 DefaultTTL(1),
130 TRIMOUNTS("@", CF_PROXY_OFF),
131 DZWONEK(["nucleus", "trill"], CF_PROXY_OFF),
132 // atproto
133 TXT("_atproto", "did=did:plc:dfl62fgb7wtjj3fcbb72naae"),
134 TXT("_atproto.nil", "did=did:plc:dumbmutt4po52ept2tczimje"),
135 TXT("_atproto.june", "did=did:plc:y3z2rr7q5rywu4fjn3fmfyop"),
136 // june
137 CNAME("june", "girlboss.ceo."),
138 CNAME("*.june", "girlboss.ceo."),
139 // email
140 // verification
141 TXT("@", "hosted-email-verify=zr04ylon", TTL(EMAIL_TTL)),
142
143 MX("@", 10, "aspmx1.migadu.com.", TTL(EMAIL_TTL)),
144 MX("@", 20, "aspmx2.migadu.com.", TTL(EMAIL_TTL)),
145
146 // DKIM
147 CNAME(
148 "key1._domainkey",
149 "key1.ptr.pet._domainkey.migadu.com.",
150 TTL(EMAIL_TTL),
151 ),
152 CNAME(
153 "key2._domainkey",
154 "key2.ptr.pet._domainkey.migadu.com.",
155 TTL(EMAIL_TTL),
156 ),
157 CNAME(
158 "key3._domainkey",
159 "key3.ptr.pet._domainkey.migadu.com.",
160 TTL(EMAIL_TTL),
161 ),
162
163 // SPF
164 TXT("@", "v=spf1 include:spf.migadu.com -all", TTL(EMAIL_TTL)),
165
166 // DMARC
167 TXT(
168 "_dmarc",
169 "v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; fo=1; pct=100; rua=mailto:infrastructure@ptr.pet; ruf=mailto:infrastructure@ptr.pet",
170 TTL(EMAIL_TTL),
171 ),
172
173 // configuration
174 TXT(
175 "@",
176 "mailconf=https://autoconfig.migadu.com/mail/config-v1.1.xml",
177 TTL(EMAIL_TTL),
178 ),
179
180 // TLS reporting
181 TXT(
182 "_smtp._tls",
183 "v=TLSRPTv1; rua=mailto:infrastructure@ptr.pet",
184 TTL(EMAIL_TTL),
185 ),
186
187 // mta-sts
188 TRIMOUNTS("mta-sts", CF_PROXY_OFF),
189 TXT("_mta-sts", "v=STSv1; id=20250930T1945", TTL(EMAIL_TTL)),
190
191 // autoconfig
192 TRIMOUNTS(["autoconfig", "autodiscover"], CF_PROXY_OFF),
193
194 // autodiscovery
195 SRV(
196 "_autodiscover._tcp",
197 0,
198 1,
199 443,
200 "autodiscover.migadu.com.",
201 TTL(EMAIL_TTL),
202 ),
203 SRV("_submissions._tcp", 0, 1, 465, "smtp.migadu.com.", TTL(EMAIL_TTL)),
204 SRV("_imaps._tcp", 0, 1, 993, "imap.migadu.com.", TTL(EMAIL_TTL)),
205 SRV("_pop3s._tcp", 0, 1, 995, "pop.migadu.com.", TTL(EMAIL_TTL)),
206
207 IGNORE_ACME(),
208);