#!/usr/bin/env python3
import json, os

CONFIG = '/var/www/html/config.json'

green  = lambda s: f"\033[32m{s}\033[0m"
red    = lambda s: f"\033[31m{s}\033[0m"
yellow = lambda s: f"\033[33m{s}\033[0m"
cyan   = lambda s: f"\033[36m{s}\033[0m"

def load():
    with open(CONFIG) as f: return json.load(f)

def save(cfg):
    with open(CONFIG, 'w') as f: json.dump(cfg, f, indent=2, ensure_ascii=False)

def show():
    cfg = load()
    print()
    print(cyan("╔══════════════════════════════════════════╗"))
    print(cyan("║          流 量 配 额 管 理 器              ║"))
    print(cyan("╚══════════════════════════════════════════╝"))
    print()
    for i, s in enumerate(cfg['servers'], 1):
        q = s.get('quota_gb', 0)
        if q == 0:
            qs = "无限制"
        else:
            qs = f"{q} GB"
        print(f"  {i}. {s['name']:<30s} 配额: {qs}")
    print()
    print(cyan("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"))
    print("  1. 设置配额")
    print("  2. 批量设置（全部设为无限制）")
    print("  3. 重启面板")
    print("  0. 退出")
    print(cyan("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"))
    print()

def set_quota():
    cfg = load()
    print()
    for i, s in enumerate(cfg['servers'], 1):
        q = s.get('quota_gb', 0)
        qs = f"{q} GB" if q != 0 else "无限制"
        print(f"  {i}. {s['name']}  当前: {qs}")
    print()
    try:
        num = int(input("  选择节点编号: "))
    except:
        print(red("  ❌ 输入无效"))
        return
    idx = num - 1
    if idx < 0 or idx >= len(cfg['servers']):
        print(red("  ❌ 编号无效"))
        return
    name = cfg['servers'][idx]['name']
    print(f"  当前: {name}")
    raw = input("  输入配额GB（输入0=无限制，直接回车=不修改）: ").strip()
    if raw == "":
        print(yellow("  未修改"))
        return
    try:
        gb = int(raw)
    except:
        print(red("  ❌ 请输入数字"))
        return
    cfg['servers'][idx]['quota_gb'] = gb
    save(cfg)
    if gb == 0:
        print(green(f"  ✔ {name} → 无限制"))
    else:
        print(green(f"  ✔ {name} → {gb} GB"))

def reset_all():
    cfg = load()
    for s in cfg['servers']:
        s['quota_gb'] = 0
    save(cfg)
    print(green("  ✔ 所有节点已设为无限制"))

def main():
    import sys
    if len(sys.argv) > 1:
        # 命令行模式：quota_manager.py <编号> <GB>
        num = int(sys.argv[1])
        gb = int(sys.argv[2])
        cfg = load()
        idx = num - 1
        if 0 <= idx < len(cfg['servers']):
            cfg['servers'][idx]['quota_gb'] = gb
            save(cfg)
            q = "无限制" if gb == 0 else f"{gb} GB"
            print(green(f"✔ {cfg['servers'][idx]['name']} → {q}"))
        else:
            print(red("❌ 编号无效"))
        return

    while True:
        show()
        choice = input("  请选择操作: ").strip()
        if choice == '1':
            set_quota()
            input("\n  按回车返回...")
        elif choice == '2':
            reset_all()
            input("\n  按回车返回...")
        elif choice == '3':
            os.system("systemctl restart traffic-web.service")
            print(green("  ✔ 面板已重启"))
            input("\n  按回车返回...")
        elif choice == '0':
            print(green("\n  再见！\n"))
            break
        else:
            print(yellow("  无效选项"))
            import time; time.sleep(1)

if __name__ == "__main__":
    main()
