Port check: collect IPs → check ports 80, 443 → detect state changes
TLS check: for open 443 ports → check cert → detect changes/expiry
State persistence after each cycle
First run: baseline only, no notifications
Graceful shutdown
Define interfaces for dependencies (DNSResolver, PortChecker, TLSChecker, Notifier) to enable testing with mocks.
Implement the full monitoring loop in `internal/watcher/watcher.go`:
1. On startup: immediately run all checks
2. Periodic scheduling: DNS+port every config.DNSInterval, TLS every config.TLSInterval
3. Domain check: LookupNS → compare with state → notify on NS changes
4. Hostname check: LookupAllRecords per NS → compare per-NS → detect changes
5. Port check: collect IPs → check ports 80, 443 → detect state changes
6. TLS check: for open 443 ports → check cert → detect changes/expiry
7. State persistence after each cycle
8. First run: baseline only, no notifications
9. Graceful shutdown
Define interfaces for dependencies (DNSResolver, PortChecker, TLSChecker, Notifier) to enable testing with mocks.
sneak
was assigned by clawbot2026-02-19 22:42:28 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implement the full monitoring loop in
internal/watcher/watcher.go:Define interfaces for dependencies (DNSResolver, PortChecker, TLSChecker, Notifier) to enable testing with mocks.