#!/usr/bin/env python3
"""DAS: cek apakah situs sedang mati, dan apakah server asalnya masih hidup."""
import socket, ssl, time, urllib.request, urllib.error

UA = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124 Safari/537.36"}
ASAL = "103.175.217.138"

print("=== 1. lewat Cloudflare (yang dilihat pengunjung & Google) ===")
for u in ("https://dasindonesia.com/", "https://dasindonesia.com/wp-json/", "https://www.dasindonesia.com/"):
    t0 = time.time()
    try:
        r = urllib.request.urlopen(urllib.request.Request(u, headers=UA), timeout=45)
        print(f"   {r.status} | {time.time()-t0:5.1f}s | {len(r.read())} byte | {u}")
    except urllib.error.HTTPError as e:
        print(f"   HTTP {e.code} | {time.time()-t0:5.1f}s | {u}")
    except Exception as e:
        print(f"   GAGAL {type(e).__name__} | {time.time()-t0:5.1f}s | {u}")

print(f"\n=== 2. server asal langsung ({ASAL}) ===")
for porta, pakai_ssl in ((443, True), (80, False)):
    t0 = time.time()
    try:
        s = socket.create_connection((ASAL, porta), timeout=20)
        print(f"   port {porta}: tersambung dalam {time.time()-t0:.1f}s")
        s.close()
    except Exception as e:
        print(f"   port {porta}: GAGAL {type(e).__name__} setelah {time.time()-t0:.1f}s")
try:
    t0 = time.time()
    r = urllib.request.urlopen(urllib.request.Request(f"https://{ASAL}/", headers={**UA, "Host": "dasindonesia.com"}),
                               timeout=45, context=ssl._create_unverified_context())
    isi = r.read().decode("utf-8", "replace")
    print(f"   HTTP asal: {r.status} | {time.time()-t0:.1f}s | {len(isi)} byte | judul: "
          f"{(__import__('re').search(r'<title[^>]*>(.*?)</title>', isi, __import__('re').S) or [None, '-'])[1][:60]}")
except Exception as e:
    print(f"   HTTP asal: GAGAL {str(e)[:80]}")

print("\n=== 3. DNS & Cloudflare ===")
import subprocess
for tanya in ("A", "NS"):
    out = subprocess.run(["dig", "+short", "dasindonesia.com", tanya], capture_output=True, text=True, timeout=30).stdout.strip()
    print(f"   {tanya}: {out.replace(chr(10), ', ')[:120]}")
