#!/usr/bin/env python3
import json, sys, urllib.request, urllib.error

BASE = sys.argv[1] if len(sys.argv) > 1 else "http://127.0.0.1:8000"
PASSWORD = sys.argv[2] if len(sys.argv) > 2 else "E1RNkThGT9Q6T4wZYYnz"

def req(method, path, data=None, token=None):
    headers = {"Content-Type": "application/json"}
    if token:
        headers["Authorization"] = "Bearer " + token
    body = None if data is None else json.dumps(data).encode()
    r = urllib.request.Request(BASE + path, data=body, headers=headers, method=method)
    try:
        with urllib.request.urlopen(r, timeout=30) as resp:
            raw = resp.read().decode()
            return resp.status, json.loads(raw) if raw else {}
    except urllib.error.HTTPError as e:
        raw = e.read().decode()
        try:
            parsed = json.loads(raw)
        except Exception:
            parsed = {"raw": raw}
        return e.code, parsed

code, login = req("POST", "/api/admin/v1/auth/login", {"username": "admin", "password": PASSWORD})
print("LOGIN", code)
if code != 200:
    print(json.dumps(login, ensure_ascii=False)[:2000])
    sys.exit(1)
data = login.get("data") or login
tokens = data.get("tokens") or {}
token = tokens.get("accessToken") or tokens.get("token") or data.get("accessToken") or data.get("token")
if not token:
    print("NO_TOKEN", json.dumps(login, ensure_ascii=False)[:2000])
    sys.exit(1)
print("TOKEN_OK", token[:12])

code, nodes = req("GET", "/api/admin/v1/egress-nodes?page=1&pageSize=200", token=token)
print("LIST", code)
print(json.dumps(nodes, ensure_ascii=False, indent=2)[:8000])
