#!/usr/bin/python3
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (C) 2026 Ondrej Holba
"""Holbox NAS – vypnutí dvoufázového ověření z konzole NASu (ztracený mobil i záchranné kódy). Jen root.
Použití: archa-nas-2fa-off"""
import json
import os
import pwd
import sys

CONF = "/etc/mininas/config.json"
if os.geteuid() != 0:
    sys.exit("Spusť jako root (sudo archa-nas-2fa-off).")
# /etc/mininas patří uživateli archa (web) – root tam nesmí nic otevřít přes podvržený symlink
try:
    with os.fdopen(os.open(CONF, os.O_RDONLY | os.O_NOFOLLOW)) as f:
        c = json.load(f)
except OSError as e:
    sys.exit(f"Nastavení {CONF} nejde bezpečně přečíst ({e.strerror}) – odmítnuto.")
if "totp" not in c:
    sys.exit("Dvoufázové ověření není zapnuté – přihlásíš se jen heslem.")
c.pop("totp")
tmp = CONF + ".tmp"
try:
    os.unlink(tmp)
except FileNotFoundError:
    pass
fd = os.open(tmp, os.O_WRONLY | os.O_CREAT | os.O_EXCL | os.O_NOFOLLOW, 0o600)   # nový soubor, ne cizí odkaz
pw = pwd.getpwnam("archa")
os.fchown(fd, pw.pw_uid, pw.pw_gid)
with os.fdopen(fd, "w") as f:
    json.dump(c, f, indent=2, ensure_ascii=False)
os.replace(tmp, CONF)
print("Dvoufázové ověření je vypnuté. Přihlas se do správy jen heslem a v Nastavení ho můžeš zapnout znovu.")
