This website requires JavaScript.
6ff6f00ee4
main into prod (#303 )
prod
sneak
2026-10-22 19:14:49 +02:00
226f0a7bd5
next (#305 )
main
sneak
2026-10-22 18:53:30 +02:00
70fbf55832
Merge branch 'main' into next
next
sneak
2026-10-22 18:53:17 +02:00
774f7caff6
healthcheck: answer 503 when no root server gave a usable reply in the last round of DNS checks (closes #302 )
v1.0.0-rc4
clawbot
2026-10-18 17:24:49 +02:00
c842efdb81
next (#152 )
sneak
2026-10-16 14:01:19 +02:00
b23cf43abf
resolver: a reply marked recursion available from a root server's address stops the lookup (closes #300 )
clawbot
2026-10-16 12:26:52 +02:00
adc8131191
resolver: a query cut short by the caller's context records no reason (closes #298 )
v1.0.0-rc3
clawbot
2026-10-15 19:48:08 +02:00
06ae357165
resolver: drop the unused timeout multiplier and the comment claiming it (closes #296 )
clawbot
2026-10-15 18:31:07 +02:00
f6b7aefcbf
docs: TESTING.md constraints match the resolver and the test-time policy (closes #289 )
clawbot
2026-10-15 18:01:51 +02:00
db3b09c5d8
handlers: a directory under /s/ answers 404, not a listing (closes #286 )
clawbot
2026-10-15 17:01:52 +02:00
caa3aa3c12
notify: a reply other than 2xx is a failed delivery (closes #287 )
clawbot
2026-10-15 16:14:20 +02:00
dee69c4780
resolver: a nameserver is asked at each of its addresses in turn (closes #285 )
clawbot
2026-10-15 15:48:15 +02:00
5e2c456e85
notify: the log names a notification endpoint, not its webhook URL (closes #288 )
clawbot
2026-10-15 14:48:17 +02:00
b79726acc6
watcher: a hostname whose zone's nameservers all stop answering gets NS Failure (closes #284 )
v1.0.0-rc2
clawbot
2026-10-14 00:27:29 +02:00
aaccabad50
watcher: an IPv6 address is written in brackets before its port (closes #270 )
v1.0.0-rc1
clawbot
2026-10-13 22:27:34 +02:00
6b580a5a0f
docs: TODO.md names only open issues as next steps (closes #281 )
clawbot
2026-10-13 22:00:04 +02:00
cb89e4f8cf
watcher: a port check that finds 443 closed removes its certificate entries (closes #265 )
clawbot
2026-10-13 21:27:34 +02:00
9e6871817a
state: a state file without a section loads it empty (closes #267 )
clawbot
2026-10-13 20:27:27 +02:00
3592302615
watcher: a stop during the first scan sends no startup notification (closes #271 )
clawbot
2026-10-13 20:00:00 +02:00
79761c29e1
watcher: a removed nameserver is an NS Change, not an NS Failure (closes #262 )
clawbot
2026-10-13 19:27:36 +02:00
b9686c6d7b
config: a metrics username without a password stops startup (closes #268 )
clawbot
2026-10-13 19:10:58 +02:00
5617c92fb3
state: Save syncs the state file before renaming it into place (closes #264 )
clawbot
2026-10-13 18:27:31 +02:00
2ae6110414
server: a port that cannot be bound stops startup (closes #266 )
clawbot
2026-10-13 18:00:00 +02:00
39e7bc9067
config: a bad number or true/false setting stops startup (closes #269 )
clawbot
2026-10-13 15:27:32 +02:00
02cb1ec580
state: GetSnapshot copies the state's maps (closes #261 )
clawbot
2026-10-13 13:44:31 +02:00
e8b40062da
build: re-vendor canonical files from prompts dd4027b (closes #257 )
clawbot
2026-10-06 04:29:48 +02:00
d1060315b7
watcher, config: no Record Change or Inconsistency for listed names (closes #255 )
clawbot
2026-10-06 03:01:46 +02:00
6822996134
resolver: a nameserver with a failed record type is not nodata (closes #253 )
clawbot
2026-10-02 13:16:42 +02:00
67b67b8475
resolver, watcher: a domain's nameservers are only its own delegation (closes #222 )
clawbot
2026-10-02 12:38:45 +02:00
9bd1a71d8f
resolver: the refused-query test asks several operators, one query each (closes #251 )
clawbot
2026-10-02 12:00:48 +02:00
6332b48379
watcher: a name removed from the targets leaves the state (closes #223 )
clawbot
2026-10-02 11:17:59 +02:00
9b9e26d6b2
resolver, watcher: a record type whose query fails keeps its previous records (closes #231 )
clawbot
2026-10-02 10:51:23 +02:00
9b524e9d63
watcher: Port Change notifications list domains apart from hostnames (closes #248 )
clawbot
2026-10-02 10:42:07 +02:00
b43402a631
dashboard and status API list a port's domains apart from its hostnames (closes #245 )
clawbot
2026-10-02 10:31:07 +02:00
008ec5d13a
resolver: ask a referral's nameservers that come without addresses (closes #221 )
clawbot
2026-10-02 10:12:08 +02:00
e46db71821
dashboard, status API and notifications tell apex domains from hostnames (closes #224 )
clawbot
2026-10-02 10:08:32 +02:00
1218df9467
dashboard: list record types in the README's order (closes #226 )
clawbot
2026-10-02 09:55:07 +02:00
250f3dd687
dashboard and status API show why a check failed (closes #225 )
clawbot
2026-10-02 09:14:28 +02:00
c07976a73a
resolver: store a name's CNAME once per nameserver (closes #220 )
clawbot
2026-10-02 09:09:51 +02:00
b047c3c64c
watcher: a lookup cut short by shutdown is not logged as an error (closes #229 )
clawbot
2026-10-02 08:56:52 +02:00
f99de191c0
watcher: change messages name only the record types that differ (closes #219 )
clawbot
2026-10-02 08:46:56 +02:00
5db5048754
watcher: startup notification no longer says every endpoint works (closes #230 )
clawbot
2026-10-02 08:42:35 +02:00
26c9c74d8e
notify: a failed Mattermost delivery's error names Mattermost (closes #227 )
clawbot
2026-10-02 08:40:19 +02:00
ceb24c5004
log: write durations as text, not nanoseconds (closes #228 )
clawbot
2026-10-02 08:37:47 +02:00
ee4cadbd05
watcher: follow a watched name's CNAME for port and TLS checks (closes #203 )
clawbot
2026-10-02 08:26:27 +02:00
a18803ff28
resolver tests: retry an answer missing the record type read (closes #218 )
clawbot
2026-10-02 07:52:44 +02:00
3182fc99a6
docker: a plain docker build . stamps the git version (closes #210 )
clawbot
2026-10-02 06:27:47 +02:00
889e17459b
resolver: never resend a refused query asking for recursion (closes #206 )
clawbot
2026-10-02 06:10:54 +02:00
a67fd20e4f
ci: a push cancels its branch's older run, checkout keeps no token (closes #216 )
clawbot
2026-10-02 06:07:53 +02:00
dba932c9e3
watcher tests: far fewer live queries, longer live attempts (closes #214 )
clawbot
2026-10-02 06:04:31 +02:00
82836b41fd
resolver: try servers in a random order on each resolution (closes #138 )
clawbot
2026-10-02 03:26:06 +02:00
af81f2ac76
README: correct claims the code does not bear out (closes #108 )
clawbot
2026-10-02 03:14:26 +02:00
56c4395a39
config: watch a target listed twice only once (closes #207 )
clawbot
2026-10-02 02:56:11 +02:00
c9510a986c
watcher: warn of an expiring certificate on every TLS check (closes #204 )
clawbot
2026-10-02 01:58:28 +02:00
1f1640d4cd
resolver: take a domain's NS set from its delegation (closes #200 )
clawbot
2026-10-02 01:48:54 +02:00
11ce1b249b
docs: add the README sections policy requires (closes #173 )
clawbot
2026-10-02 01:25:13 +02:00
d09822562d
resolver: pass over a server that answers SERVFAIL or refers no closer (closes #197 )
clawbot
2026-10-02 01:17:37 +02:00
97c8138c85
watcher: keep port state when no nameserver of a name answered (closes #193 )
clawbot
2026-10-02 00:44:49 +02:00
d2f154b2cf
resolver: error from ResolveIPAddresses when no nameserver answered (closes #190 )
clawbot
2026-10-02 00:28:53 +02:00
4c2932d6d6
fmt: format and check Markdown with prettier in a container (closes #119 )
clawbot
2026-10-02 00:19:30 +02:00
b5814b2451
fmt: check goimports in fmt-check, run it at its pinned commit (#119 )
clawbot
2026-10-01 23:51:22 +02:00
797c936c48
resolver: query a hostname at its own zone's servers (closes #189 )
clawbot
2026-10-01 23:34:35 +02:00
c247f6bcf5
watcher: notify nameserver address changes (closes #105 )
clawbot
2026-10-01 23:23:26 +02:00
f6567df2d0
watcher: save state when it stops and wait for that save (closes #114 )
clawbot
2026-10-01 23:14:17 +02:00
c0ea9b96f2
server: report HTTP handler panics to Sentry (closes #107 )
clawbot
2026-10-01 23:09:39 +02:00
fe01cdda1e
watcher: save and notify nothing for a cut-short port or TLS check (closes #185 )
clawbot
2026-10-01 22:49:45 +02:00
a8f9a64600
middleware: take the client address from the right of X-Forwarded-For (closes #181 )
clawbot
2026-10-01 22:35:17 +02:00
8f11ef0038
watcher: notify NS query failure and recovery (closes #104 )
clawbot
2026-10-01 22:23:33 +02:00
fcd4f7e2c2
config: stop startup on an invalid DNS or TLS interval (closes #177 )
clawbot
2026-10-01 22:19:04 +02:00
ed0f56f144
metrics: rate limit /metrics per client address before Basic Auth (closes #101 )
clawbot
2026-10-01 22:09:14 +02:00
bea9a3b2f2
docker: report the real version in the image (closes #109 )
clawbot
2026-10-01 22:01:43 +02:00
e93c2664b8
notify: release held deliveries so shutdown tests fail, not hang (closes #176 )
clawbot
2026-10-01 21:58:58 +02:00
bde047f2a3
script/install-precommit: work where .git is a file (closes #129 )
clawbot
2026-10-01 21:45:57 +02:00
6070356676
docs: bring TODO.md up to date (closes #146 )
clawbot
2026-10-01 21:32:49 +02:00
3390d7065e
docker: set up the data directory in an entrypoint (closes #166 )
clawbot
2026-10-01 21:15:02 +02:00
f7cc6b42e0
server: limit wildcard CORS to the public routes (closes #100 )
clawbot
2026-10-01 21:05:43 +02:00
db94c903df
tests: move the test-only constructors into export_test.go (closes #111 )
clawbot
2026-10-01 21:03:03 +02:00
5493e28480
notify: make the shutdown tests fail with the right message (closes #116 )
clawbot
2026-10-01 20:42:21 +02:00
651429137f
tests: rename internal/livedns to livednstest and deny it outside tests (closes #164 )
clawbot
2026-10-01 19:52:48 +02:00
93c1fe15e3
golangci: re-vendor the org config with gomodguard_v2 (closes #123 )
clawbot
2026-09-29 10:27:07 +02:00
6dd6043534
tests: remove the DNS stand-ins from the watcher and resolver tests (closes #159 )
clawbot
2026-09-29 08:44:07 +02:00
a93389e1a0
watcher: send the inconsistency alert once per disagreement (closes #158 )
clawbot
2026-09-29 02:29:53 +02:00
95b017eb3e
resolver: lower-case DNS names in record values (closes #157 )
clawbot
2026-09-29 00:30:29 +02:00
1ab0b9f61d
script: force lint and test to run in cibuild and docker (closes #115 )
clawbot
2026-09-28 23:13:38 +02:00
19f282c8b3
server: assert timeouts on the served http.Server, not just the constructor (closes #120 )
clawbot
2026-09-28 22:01:36 +02:00
148e47d9c0
docker: run as non-root, add health check, document upaas (closes #147 )
clawbot
2026-09-28 20:13:37 +02:00
8aaa103956
middleware: add security response headers (closes #98 )
clawbot
2026-09-22 00:52:48 +02:00
c2a07ce690
test: add tests for globals, healthcheck and logger (closes #110 )
clawbot
2026-09-21 10:05:38 +02:00
b425692bfd
feat: add security response headers middleware (closes #98 )
fix/98-security-headers
clawbot
2026-08-09 01:47:47 +00:00
b351a2350c
gomod: drop stale golang.org/x/sync indirect line (closes #132 )
clawbot
2026-09-21 09:44:49 +02:00
1ffe303a6e
Merge main into next, resolving TODO.md (closes #145 )
clawbot
2026-09-21 07:22:17 +00:00
fc43f893a5
server: set all four http.Server socket timeouts (#118 )
clawbot
2026-09-09 15:17:43 +02:00
e77e206fc4
next (#136 )
clawbot and sneak
2026-09-09 14:57:55 +02:00
ae06f7e3a1
notify: drain in-flight deliveries at shutdown (closes #106 )
clawbot
2026-09-09 14:26:53 +02:00
b8662b8a9c
docs: correct stale script headers and record the config-verify cost (closes #137 )
sneak
2026-08-10 14:09:20 +00:00
168281ad60
docs: add MIT LICENSE and state the licence in the README (closes #102 )
sneak
2026-08-10 14:04:31 +00:00
6f6bf3a65b
test: disable Go's test cache so every run queries live DNS (closes #139 )
sneak
2026-08-10 13:48:15 +00:00
87bce43f8d
test: rework live-DNS quorum unit — tolerate silence, never a wrong answer
sneak
2026-08-10 13:33:26 +00:00
9cb2c2b7e0
test: make live DNS tests robust instead of gated (closes #93 )
sneak
2026-08-10 13:09:17 +00:00
cc86473410
build: run all linting in Docker via Dockerfile.lint (closes #134 )
sneak
2026-08-10 12:37:47 +00:00