- Bound public-IP detection with a 10s timeout context. The HTTP
fallback chain in getIP could otherwise block proxy startup
indefinitely on slow endpoints; the old single DNS lookup could
not. Plumbed via context through getIP/fetchPublicIP and added
context.WithTimeout in warnSNIMismatch, checkSecretHost, and
Access.Run.
- Emit a dedicated warning in warnSNIMismatch when the secret
hostname resolves successfully but to zero addresses, mirroring
the doctor's tplEDNSSNINoResolve branch instead of falling
through to a mismatch warning with an empty resolved list.
- Allow configuring network.public-ip-endpoints (TOML) /
publicIpEndpoints (JSON) so deployments can override the default
list (ifconfig.co, icanhazip.com, ifconfig.me). The default is
preserved when the option is omitted.
Add public-ipv4/public-ipv6 config options for manual IP override
On some servers ifconfig.co is unreachable (e.g. Hetzner, AdGuard DNS
blocklists), causing 'mtg doctor' SNI-DNS check and 'mtg access' link
generation to fail. New config options allow specifying public IPs
manually, with automatic detection as fallback.
Fixes #405