"""VÉSZFELOLDÁS a szerverről: bejelentkezési tiltás feloldása parancssorból.

MIKOR KELL? A tiltásokat normál esetben a rendszeradmin oldja fel a felületen
(/rendszeradmin/kitiltasok). De ha MINDEN rendszeradmin fiókot kitiltottak (pl. egy támadó a
rendszeradmin e-mail címére próbálkozott), senki nem tud belépni, hogy feloldja. Ilyenkor a szerveren:

    cd /var/www/emelog          # (az alkalmazás könyvtára)
    source venv/bin/activate    # (ha virtuális környezetet használtok)
    python login_felold.py                      # kilistázza az aktív tiltásokat
    python login_felold.py sys@cegem.hu        # egy fiók (e-mail) tiltásának feloldása
    python login_felold.py 203.0.113.7         # egy IP-cím tiltásának feloldása
    python login_felold.py --mind              # az ÖSSZES aktív tiltás feloldása

A feloldás bekerül a Jogosultsági naplóba ("szerver-parancssor (vészfeloldás)"). Részletek: docs/LOGIN_VEDELEM.md
"""
import sys

import models
import login_vedelem
from database import SessionLocal


def main(argv):
    db = SessionLocal()
    try:
        if len(argv) < 2:
            aktiv = login_vedelem.aktiv_tiltasok(db)
            if not aktiv:
                print("Nincs aktív tiltás.")
            for t in aktiv:
                meddig = "VÉGLEGES" if t.vegleges else f"lejár: {login_vedelem.helyi_ido_szoveg(t.lejar_at)}"
                print(f"#{t.id}  {t.tipus:5}  {t.azonosito}  ({meddig}; {'valós fiók' if t.valos else 'ismeretlen'})")
            print("\nFeloldás: python login_felold.py <e-mail | IP-cím | --mind>")
            return 0
        cel = argv[1]
        feloldottak = login_vedelem.felold_parancssorbol(db, None if cel == "--mind" else cel)
        print(f"Feloldott tiltások: {len(feloldottak)}")
        for t in feloldottak:
            print(f"  #{t.id} {t.tipus} {t.azonosito}")
        return 0
    finally:
        db.close()


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