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