watcher: an IPv6 address is written in brackets before its port (closes #270)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
Port and certificate keys were joined as address:port, so an IPv6 address ran into its port: 2a01:4f8:2200:fd11::1:80 is also an address on its own. Keys are now joined with net.JoinHostPort and split with net.SplitHostPort, giving [2a01:4f8:2200:fd11::1]:80 in the state file, /api/v1/status, the dashboard and Port Change notifications; an IPv4 address is unchanged. A certificate key still splits at its last colon, since a hostname has none. Tests that built IPv6 keys by hand now use the bracketed form. Model: opus-5-5
This commit is contained in:
@@ -666,6 +666,12 @@ for A, AAAA and CNAME, the previous check's list is kept, or `null` when no
|
||||
earlier check saved one. A state file without it loads, and the first check
|
||||
after that saves it without a notification.
|
||||
|
||||
A port entry's key is its address and port, and a certificate entry's key its
|
||||
address, port 443 and hostname, joined by colons. An IPv6 address is written in
|
||||
brackets in these keys, as in `[2001:db8::1]:443` and
|
||||
`[2001:db8::1]:443:www.example.com`. `/api/v1/status` and the dashboard show the
|
||||
same keys.
|
||||
|
||||
A port entry's `hostnames` lists every name that resolves to its address,
|
||||
domains included. A port entry in the older format, with one `hostname` instead
|
||||
of the `hostnames` list, loads as a list of that one name.
|
||||
|
||||
Reference in New Issue
Block a user