#!/usr/bin/env python3
"""Cek apakah TSLaw juga kena injeksi tautan judi seperti TSC dan Kendangsari."""
import base64, json, re, time, urllib.error, urllib.request

DOM = "www.tslaw.id"
AUTH = base64.b64encode(b"bambangbot:EFKm EYGx VQCP Y9go ncPr uM2Y").decode()
h = {"Authorization": f"Basic {AUTH}", "User-Agent": "Mozilla/5.0"}
KATA = ("casino", "slot", "togel", "judi", "maxwin", "gacor", "rtp", "bonus", "kasyno", "sprawdzić")
LUAR = re.compile(r'href="https?://(?!www\.tslaw\.id|tslaw\.id|wa\.me|api\.whatsapp|www\.google|goo\.gl|maps\.)[^"]+"', re.I)


def rest(path):
    r = urllib.request.Request(f"https://{DOM}{path}", headers=h)
    for i in range(4):
        try:
            with urllib.request.urlopen(r, timeout=120) as x:
                return json.loads(x.read())
        except urllib.error.HTTPError as e:
            if e.code in (429, 404):
                time.sleep(4)
                continue
            return {"err": e.code}
        except Exception:
            time.sleep(4)
    return {}


print("=== isi WordPress TSLaw ===")
temuan = []
for jenis in ("posts", "pages"):
    page = 1
    while True:
        d = rest(f"/wp-json/wp/v2/{jenis}?per_page=100&page={page}&status=publish&context=edit&_fields=id,slug,link,content")
        if not isinstance(d, list) or not d:
            break
        for x in d:
            raw = x["content"]["raw"]
            kena = sorted({k for k in KATA if k.lower() in raw.lower()})
            luar = sorted(set(LUAR.findall(raw)))
            if kena or luar:
                temuan.append({"jenis": jenis, "id": x["id"], "link": x["link"], "kata": kena,
                               "luar": luar[:4]})
        if len(d) < 100:
            break
        page += 1
        time.sleep(0.3)

print(f"halaman dengan kata kunci judi: {len([t for t in temuan if t['kata']])}")
for t in [t for t in temuan if t["kata"]][:10]:
    print(f"   ⚠ #{t['id']} {t['kata']} | {t['link'][:70]}")
print(f"\nhalaman dengan tautan keluar: {len([t for t in temuan if t['luar']])}")
for t in [t for t in temuan if t["luar"]][:10]:
    print(f"   #{t['id']} {t['luar']} | {t['link'][:70]}")
