Add Web UI

This commit is contained in:
Francesco Picone
2025-12-29 11:58:31 +01:00
parent b2fc73e829
commit e93b25ee20
5 changed files with 122 additions and 1 deletions

42
ui/cloudflare.py Normal file
View File

@@ -0,0 +1,42 @@
import os
import requests
CF_API_TOKEN = os.getenv("CF_API_TOKEN")
ZONE = os.getenv("CF_ZONE")
SUBDOMAINS = os.getenv("CF_SUBDOMAINS").split(",")
HEADERS = {
"Authorization": f"Bearer {CF_API_TOKEN}",
"Content-Type": "application/json"
}
def get_public_ip():
return requests.get("https://api.ipify.org", timeout=5).text.strip()
def get_dns_status():
ip_pubblico = get_public_ip()
out = []
zone = requests.get(
"https://api.cloudflare.com/client/v4/zones",
headers=HEADERS,
params={"name": ZONE}
).json()["result"][0]
for sub in SUBDOMAINS:
fqdn = f"{sub}.{ZONE}"
dns = requests.get(
f"https://api.cloudflare.com/client/v4/zones/{zone['id']}/dns_records",
headers=HEADERS,
params={"name": fqdn}
).json()["result"][0]
out.append({
"name": fqdn,
"dns_ip": dns["content"],
"public_ip": ip_pubblico,
"proxied": dns["proxied"],
"status": "OK" if dns["content"] == ip_pubblico else "MISMATCH"
})
return out