81 lines
4.0 KiB
Python
81 lines
4.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Take over all healthy routes onto thetemple-fleet tunnel (CT148)."""
|
|
import io, subprocess
|
|
|
|
UUID = "1aeb1ac0-3c49-4801-b61d-bc92e6e4932a"
|
|
CF = "/root/.cloudflared"
|
|
|
|
# verified-live routes (liveness sweep 2026-08-13); problem routes stay on old tunnel
|
|
ROUTES = [
|
|
("pve.thetempleofdoom.com", "http://10.30.20.85:8006"),
|
|
("gitea.thetempleofdoom.com", "http://10.30.20.149:3000"),
|
|
("wiki.thetempleofdoom.com", "http://10.30.20.28:3000"),
|
|
("CRM.thetempleofdoom.com", "http://10.30.20.30:3000"),
|
|
("crm.thetempleofdoom.com", "http://10.30.20.30:3000"),
|
|
("twenty.thetempleofdoom.com", "http://10.30.20.30:3000"),
|
|
("webcheck.thetempleofdoom.com", "http://10.30.20.13:3000"),
|
|
("agent.thetempleofdoom.com", "http://10.30.20.44:3000"),
|
|
("btcpay.thetempleofdoom.com", "http://10.30.20.140:80"),
|
|
("btc.thetempleofdoom.com", "http://10.30.20.140:80"),
|
|
("torrent.thetempleofdoom.com", "http://10.30.20.87:6969"),
|
|
("jelly.thetempleofdoom.com", "http://10.30.20.88:8096"),
|
|
("spirit.thetempleofdoom.com", "http://10.30.20.32:7777"),
|
|
("share.thetempleofdoom.com", "http://10.30.20.129:3000"),
|
|
("snowshare.thetempleofdoom.com", "http://10.30.20.129:3000"),
|
|
("snowshoer.thetempleofdoom.com", "http://10.30.20.129:3000"),
|
|
("ai.thetempleofdoom.com", "http://10.30.20.240:80"),
|
|
("tech.thetempleofdoom.com", "http://10.30.20.241:80"),
|
|
("science.thetempleofdoom.com", "http://10.30.20.242:80"),
|
|
("crypto.thetempleofdoom.com", "http://10.30.20.243:80"),
|
|
("linux.thetempleofdoom.com", "http://10.30.20.244:80"),
|
|
("gaming.thetempleofdoom.com", "http://10.30.20.246:80"),
|
|
("diy.thetempleofdoom.com", "http://10.30.20.247:80"),
|
|
("guides.thetempleofdoom.com", "http://10.30.20.248:80"),
|
|
("digi-market.thetempleofdoom.com", "http://10.30.20.210:5000"),
|
|
("cardvault-pro.thetempleofdoom.com", "http://10.30.20.211:5000"),
|
|
("StreamPass-Hub.thetempleofdoom.com", "http://10.30.20.212:5000"),
|
|
("KeyForge-Digital.thetempleofdoom.com", "http://10.30.20.213:5000"),
|
|
("CoinBridgeMarket.thetempleofdoom.com", "http://10.30.20.214:5000"),
|
|
("GiftShift.thetempleofdoom.com", "http://10.30.20.217:5000"),
|
|
("PremiumPortal.thetempleofdoom.com", "http://10.30.20.218:5000"),
|
|
("DigiDeals.thetempleofdoom.com", "http://10.30.20.219:5000"),
|
|
("NexusKeys.thetempleofdoom.com", "http://10.30.20.220:5000"),
|
|
("VaultPass.thetempleofdoom.com", "http://10.30.20.221:5000"),
|
|
("PESTCONTROLLER.thetempleofdoom.com", "http://10.30.20.249:5052"),
|
|
("aisearch.thetempleofdoom.com", "http://10.30.20.250:8000"),
|
|
("signalsearcher.thetempleofdoom.com", "http://10.30.20.23:5099"),
|
|
("tarot.thetempleofdoom.com", "http://10.30.20.77:80"),
|
|
("socialpulse.thetempleofdoom.com", "http://10.30.20.252:80"),
|
|
("proxy.thetempleofdoom.com", "http://10.30.20.154:3128"),
|
|
("proxy2.thetempleofdoom.com", "http://10.30.20.71:3128"),
|
|
("proxy3.thetempleofdoom.com", "http://10.30.20.189:3128"),
|
|
("trustgram.thetempleofdoom.com", "http://10.30.20.62:80"),
|
|
("games.thetempleofdoom.com", "http://10.30.20.73:3000"),
|
|
("hydros.thetempleofdoom.com", "http://10.30.20.11:3000"),
|
|
("bwt.democracyrisingbwt.us", "http://10.30.20.229:8008"),
|
|
]
|
|
|
|
# build config
|
|
ingress = "\n".join(f" - hostname: {h}\n service: {s}" for h, s in ROUTES)
|
|
cfg = f"""tunnel: {UUID}
|
|
credentials-file: {CF}/{UUID}.json
|
|
ingress:
|
|
{ingress}
|
|
- service: http_status:404
|
|
"""
|
|
io.open(f"{CF}/config-fleet.yml", "w", encoding="utf-8").write(cfg)
|
|
print(f"CONFIG: {len(ROUTES)} routes written")
|
|
subprocess.run(["systemctl", "restart", "cloudflared-fleet"])
|
|
print("TUNNEL RESTARTED")
|
|
|
|
# flip DNS
|
|
fails = []
|
|
for h, _ in ROUTES:
|
|
r = subprocess.run(["/usr/bin/cloudflared", "tunnel", "route", "dns", "--overwrite-dns", UUID, h],
|
|
cwd=CF, capture_output=True, text=True, timeout=60)
|
|
ok = "Added CNAME" in (r.stdout + r.stderr)
|
|
print(f"{'OK ' if ok else 'FAIL'} {h}")
|
|
if not ok:
|
|
fails.append(h)
|
|
print("DNS FAILS:", fails if fails else "none")
|