TP31: cf-sync.py Parser+Logik-Fix, CF-Leichen geloescht, grafana-Ingress-Backup
- cf-sync.py: Multi-Hostname-Caddy-Bloecke geparst (27 statt 5 Sites), Vergleich CF->Caddy statt CF->Origin (TP31-Zielbild), *.bf.*-intern gefiltert - CF: 6 CNAME- und 1 Ingress-Leiche geloescht (grafana, gateway-dw, nautobot, phpmyadmin.bf, speedtest.bf, z2m25.bf) - Backup vor grafana-Removal
This commit is contained in:
@@ -52,14 +52,16 @@ def caddy_sites():
|
|||||||
sites, site = {}, None
|
sites, site = {}, None
|
||||||
with open(os.path.join(HERE, "Caddyfile"), encoding="utf-8") as fh:
|
with open(os.path.join(HERE, "Caddyfile"), encoding="utf-8") as fh:
|
||||||
for line in fh:
|
for line in fh:
|
||||||
m = re.match(r"^([a-z0-9.-]+\.%s)\s*\{" % re.escape(ZONE), line)
|
# Block-Header: ein oder mehrere Hostnamen (kommagetrennt) vor "{"
|
||||||
|
m = re.match(r"^([a-z0-9.-]+(?:\s*,\s*[a-z0-9.-]+)*\.%s)\s*\{" % re.escape(ZONE), line)
|
||||||
if m:
|
if m:
|
||||||
site = m.group(1)
|
site = m.group(1)
|
||||||
continue
|
continue
|
||||||
if site:
|
if site:
|
||||||
m2 = re.search(r"reverse_proxy\s+(\S+)", line)
|
m2 = re.search(r"reverse_proxy\s+(\S+)", line)
|
||||||
if m2:
|
if m2:
|
||||||
sites[site] = m2.group(1)
|
for host in site.split(","):
|
||||||
|
sites[host.strip()] = m2.group(1)
|
||||||
site = None
|
site = None
|
||||||
return sites
|
return sites
|
||||||
|
|
||||||
@@ -94,16 +96,20 @@ def main():
|
|||||||
|
|
||||||
drift = []
|
drift = []
|
||||||
|
|
||||||
# 1) Ingress gegen Caddyfile
|
# 1) Ingress gegen Caddyfile.
|
||||||
|
# Zielbild (TP31): CF-Ingress zeigt auf Caddy (10.40.20.40), Caddy aufs Origin.
|
||||||
|
# Zeigt CF direkt auf ein Origin (nicht Caddy), ist das die alte Architektur = Drift.
|
||||||
for host, (tun, svc) in sorted(ingress.items()):
|
for host, (tun, svc) in sorted(ingress.items()):
|
||||||
if svc.startswith("ssh://"):
|
if svc.startswith("ssh://"):
|
||||||
continue
|
continue
|
||||||
if host not in caddy:
|
if host not in caddy:
|
||||||
drift.append(f"NUR-CF {host:<32} {tun}: {svc} (in Caddy nicht vorhanden)")
|
drift.append(f"NUR-CF {host:<32} {tun}: {svc} (in Caddy nicht vorhanden)")
|
||||||
elif caddy[host] != svc:
|
elif not svc.startswith(f"http://{CADDY_IP}"):
|
||||||
drift.append(f"ABWEICHEND {host:<32} CF={svc} Caddy={caddy[host]}")
|
drift.append(f"ABWEICHEND {host:<32} CF={svc} (zeigt nicht auf Caddy {CADDY_IP})")
|
||||||
|
# Caddy-Sites ohne CF-Ingress: nur die suffixlosen Namen sind potenziell Drift.
|
||||||
|
# *.bf.*-Namen sind bewusst intern (Split-Horizon) und brauchen keinen Ingress.
|
||||||
for host, svc in sorted(caddy.items()):
|
for host, svc in sorted(caddy.items()):
|
||||||
if host not in ingress:
|
if host not in ingress and not host.endswith(".bf." + ZONE):
|
||||||
drift.append(f"NUR-CADDY {host:<32} {svc} (kein CF-Ingress — intern oder bewusst)")
|
drift.append(f"NUR-CADDY {host:<32} {svc} (kein CF-Ingress — intern oder bewusst)")
|
||||||
|
|
||||||
# 2) CNAMEs, die auf einen Tunnel zeigen, aber keine Ingress-Regel mehr haben
|
# 2) CNAMEs, die auf einen Tunnel zeigen, aber keine Ingress-Regel mehr haben
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"errors": [],
|
||||||
|
"messages": [],
|
||||||
|
"result": {
|
||||||
|
"tunnel_id": "220c9958-401b-4111-9451-f3db09bba2d5",
|
||||||
|
"version": 4,
|
||||||
|
"config": {
|
||||||
|
"ingress": [
|
||||||
|
{"service": "http://10.40.20.157:3000", "hostname": "gitea.emsenhuber.net"},
|
||||||
|
{"service": "http://10.40.20.109:3000", "hostname": "grafana.emsenhuber.net"},
|
||||||
|
{"service": "http://10.40.20.173:3000", "hostname": "pve-mcp.emsenhuber.net"},
|
||||||
|
{"service": "http://10.40.20.127", "hostname": "vw.emsenhuber.net"},
|
||||||
|
{"service": "http://10.40.20.10:8080", "hostname": "ds-bf.emsenhuber.net"},
|
||||||
|
{"service": "ssh://10.40.20.10:22", "hostname": "3k23uow7.emsenhuber.net"},
|
||||||
|
{"service": "http_status:404"}
|
||||||
|
],
|
||||||
|
"warp-routing": {"enabled": true}
|
||||||
|
},
|
||||||
|
"source": "cloudflare",
|
||||||
|
"created_at": "2026-08-24T08:28:18.806844Z"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user