v2: ID verification by state, 15 photos/5 albums, 20 quick replies, logo, mobile polish
This commit is contained in:
40
deploy/_remote_ingress.py
Normal file
40
deploy/_remote_ingress.py
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Parse cloudflared journal for remote ingress hostnames."""
|
||||
import json
|
||||
import paramiko
|
||||
|
||||
PASS = "Bbt9115xty9176!"
|
||||
c = paramiko.SSHClient()
|
||||
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
c.connect("10.10.0.10", username="localadministrator", password=PASS, timeout=30)
|
||||
_, o, e = c.exec_command(
|
||||
"sudo journalctl -u cloudflared --no-pager -n 100 | grep 'Updated to new configuration' | tail -1",
|
||||
timeout=30,
|
||||
)
|
||||
o.channel.recv_exit_status()
|
||||
line = (o.read() + e.read()).decode()
|
||||
idx = line.find('version=')
|
||||
if idx == -1:
|
||||
print("no config line found")
|
||||
print(line[:500])
|
||||
c.close()
|
||||
raise SystemExit(1)
|
||||
# extract JSON after version=N
|
||||
import re
|
||||
m = re.search(r"config=(\{.*\})", line)
|
||||
if not m:
|
||||
print("no json in line")
|
||||
print(line[:1000])
|
||||
c.close()
|
||||
raise SystemExit(1)
|
||||
cfg = json.loads(m.group(1))
|
||||
ingress = cfg.get("ingress", [])
|
||||
hosts = sorted(h for h in (i.get("hostname") for i in ingress) if h)
|
||||
print(f"remote ingress hostnames: {len(hosts)}")
|
||||
for h in hosts:
|
||||
if any(x in (h or "") for x in ["exposed", "avbeat", "pink", "freerange", "onsethost"]):
|
||||
print(" ", h)
|
||||
print("...")
|
||||
for target in ["exposedgays.com", "www.exposedgays.com", "avbeat.com", "thepinkpulse.com", "*.onsethost.com"]:
|
||||
print(f"{target}: {target in hosts}")
|
||||
c.close()
|
||||
Reference in New Issue
Block a user