p1.1: dynamic self-IP deny (DDNS/trace, keep previous, atomic swap)

Discover WAN via ddns:<host> then trace:<url> before listen. Persist to
self_ip.json. Previous addresses stay denied for keep_previous. Failure
keeps the last known set. /healthz reports age and source.
This commit is contained in:
2026-09-22 22:59:08 -07:00
parent dca635fb62
commit 447842f860
8 changed files with 767 additions and 20 deletions
+6
View File
@@ -15,6 +15,12 @@ listen = "127.0.0.1:8890"
# user_agent = "sift/dev"
# [self_ip]
# sources = ["ddns:example.sn.mynetname.net", "trace:https://1.1.1.1/cdn-cgi/trace"]
# interval = "10m"
# keep_previous = "24h"
# path = "/var/lib/sift/self_ip.json"
# [digest]
# model = "ornith-1.5-9b-uncensored"
# thinking = false