"""Demandes bloquees par la garde anti-spam qui ressemblent a de vrais clients belges."""
import glob, json, re, sys, os
roots = sys.argv[1:] or ["/var/www/vhosts"]
files = []
for r in roots:
    files += glob.glob(r + "/*/spam-log/*.jsonl") + glob.glob(r + "/*/*/spam-log/*.jsonl") + glob.glob(r + "/spam-log/*.jsonl")
    files += glob.glob(r + "/**/storage/logs/spam/*.jsonl", recursive=True)
BE_TEL = re.compile(r"(?:\+|00)?32\s*\(?0?\)?\s*4\d(?:[\s./-]?\d){7}|(?<!\d)04\d{2}(?:[\s./-]?\d){6}(?!\d)|(?:\+|00)32\s*[1-9](?:[\s./-]?\d){7}|(?<!\d)0[1-9](?:[\s./-]?\d){7}(?!\d)")
SPAM_TXT = re.compile(r"https?://|www\.|\.ru\b|bitcoin|crypto|seo|backlink|promo|casino|viagra|loan|telegram|t\.me|whatsapp\.com|xrumer|graph\.org|<a |\$\d|usdt|guest post|marketing|leads|ranking|website", re.I)
GIB = re.compile(r"[a-z][A-Z][a-z][A-Z]|[A-Za-z]{18,}")
seen = {}
for f in sorted(set(files)):
    for line in open(f, encoding="utf-8", errors="replace"):
        try:
            j = json.loads(line)
        except Exception:
            continue
        ex = str(j.get("extrait", ""))
        m = BE_TEL.search(ex)
        if not m:
            continue
        nom = re.search(r"nom=([^|]*)", ex)
        nom = nom.group(1).strip() if nom else ""
        if SPAM_TXT.search(ex) or GIB.search(nom) or re.search(r"haythem|test|claude", ex, re.I):
            continue
        tel = re.sub(r"\D", "", m.group(0))[-9:]
        key = (j.get("site"), tel)
        if key in seen:
            seen[key]["n"] += 1
            continue
        seen[key] = {"n": 1, "t": j.get("t", ""), "site": j.get("site", os.path.basename(os.path.dirname(os.path.dirname(f)))),
                     "pays": j.get("pays", ""), "raison": j.get("raison", ""), "ip": j.get("ip", ""), "ex": ex[:260]}
for (s, tel), v in sorted(seen.items(), key=lambda x: x[1]["t"], reverse=True):
    print("%s | %s | pays=%s | %s | x%d | %s" % (v["t"][:16], v["site"], v["pays"], v["raison"], v["n"], v["ex"]))
print("TOTAL", len(seen), "fichiers", len(set(files)))
