#!/usr/bin/env python3
"""Scan admin panel PHP for duplicate button handlers (onclick + jQuery #id click)."""
from __future__ import print_function

import os
import re
import sys

ADMIN = "/home/xtreamcodes/iptv_xtream_codes/admin"
ONCLICK_ID = re.compile(
    r'id="([^"]+)"[^>]*onclick=|onclick=[^>]*id="([^"]+)"',
    re.I,
)
JQUERY_CLICK = re.compile(r'\$\(\s*["\']#([^"\']+)["\']\s*\)\.on\(\s*["\']click["\']', re.I)


def scan_file(path):
    try:
        body = open(path, encoding="utf-8", errors="replace").read()
    except OSError:
        return []
    issues = []
    onclick_ids = set()
    for m in ONCLICK_ID.finditer(body):
        bid = m.group(1) or m.group(2)
        if bid:
            onclick_ids.add(bid)
    for m in JQUERY_CLICK.finditer(body):
        jid = m.group(1)
        if jid in onclick_ids:
            issues.append((path, jid, "duplicate onclick + jQuery click"))
    return issues


def main():
    all_issues = []
    for root, _dirs, files in os.walk(ADMIN):
        for name in files:
            if not name.endswith(".php"):
                continue
            path = os.path.join(root, name)
            all_issues.extend(scan_file(path))
    print("=" * 60)
    print("PANEL UI VERIFY")
    print("=" * 60)
    if not all_issues:
        print("[ok] no duplicate onclick+jQuery handlers in admin/")
        return 0
    for path, bid, msg in all_issues:
        print("[FAIL] %s #%s — %s" % (path.replace(ADMIN + "/", ""), bid, msg))
    return 1


if __name__ == "__main__":
    sys.exit(main())
