import os
from dotenv import load_dotenv

load_dotenv()

SECRET_KEY = os.getenv("SECRET_KEY")
if not SECRET_KEY:
    raise RuntimeError("A SECRET_KEY környezeti változó nincs beállítva (.env)!")
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 600

# E-MAIL BEÁLLÍTÁSOK A .ENV FÁJLBÓL
# FIGYELEM (2026-10-04-től): ezek az értékek már csak TARTALÉK (fallback) szerepet töltenek be.
# Az elsődleges SMTP-beállítás a rendszeradmin felületről, az adatbázisban (rendszer_beallitasok
# tábla) állítható - l. email_beallitasok.py. Csak akkor kerül sor ezekre az értékekre, ha az
# adatbázisban még nincs elmentett SMTP-szerver. Részletek: docs/EMAIL_RENDSZER.md
SMTP_SERVER = os.getenv("SMTP_SERVER", "")
SMTP_PORT = int(os.getenv("SMTP_PORT", 465))
SMTP_USER = os.getenv("SMTP_USER", "")
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD", "")

# --- ADATBÁZISBAN TÁROLT TITKOK (pl. SMTP-jelszó) TITKOSÍTÁSI KULCSA ---
# OPCIONÁLIS. Egy Fernet-kulcs (32 bájt, url-safe base64), amivel a titkosito_utils.py titkosítja az
# adatbázisba mentett titkos értékeket. Generálás:
#   python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# Ha NINCS megadva, a rendszer a már meglévő SECRET_KEY-ből SZÁRMAZTAT egy külön kulcsot (HKDF) -
# így a funkció új .env-változó nélkül is működik. Ha később mégis felvesszük ezt a változót, a
# régebben (a származtatott kulccsal) titkosított értékek továbbra is visszafejthetők maradnak
# (l. titkosito_utils.py - MultiFernet), nem kell semmit újra beírni.
CONFIG_ENCRYPTION_KEY = os.getenv("CONFIG_ENCRYPTION_KEY", "")

# --- FÁJLFELTÖLTÉS BIZTONSÁGI BEÁLLÍTÁSOK ---
ALLOWED_EXTENSIONS = {".pdf", ".jpg", ".jpeg", ".png", ".gif", ".webp", ".docx", ".xlsx"}

# --- MEGBÍZHATÓ REVERSE PROXY-K SZÁMA (a kliens-IP meghatározásához) ---
# Hány megbízható proxy (pl. Apache) áll az alkalmazás előtt. A security.get_client_ip() az
# X-Forwarded-For fejléc JOBBRÓL számított PROXY_HOPS-adik bejegyzését használja (a bal oldali, első
# bejegyzés a kliens által hamisítható). 1 = egy Apache (az éles/teszt szerver); 2 = pl. egy CDN/másik
# proxy is van az Apache előtt; 0 = nincs proxy (helyi fejlesztés): a fejlécet nem vesszük figyelembe.
# Hibás érték esetén az alapérték (1) marad. Részletek: docs/LOGIN_VEDELEM.md 9.1.
try:
    PROXY_HOPS = max(0, int(os.getenv("PROXY_HOPS", "1")))
except ValueError:
    PROXY_HOPS = 1

# --- API DOKUMENTÁCIÓ (Swagger UI / ReDoc / OpenAPI séma) ---
# Alapértelmezetten KIKAPCSOLVA. A FastAPI alapból nyilvánosan kiteszi a /docs, /redoc és
# /openapi.json végpontokat, amik felsorolják az összes route-ot, mezőnevet és adatszerkezetet -
# ez egy támadó számára a legkönnyebb módja a rendszer feltérképezésének. Fejlesztéskor a .env-be
# felvett API_DOCS_ENABLED=true sorral helyi gépen visszakapcsolható.
API_DOCS_ENABLED = os.getenv("API_DOCS_ENABLED", "false").lower() == "true"

# --- AI ADATTÁBLA-FELISMERÉS (opcionális, cégenként kapcsolható funkció) ---
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
# Fejlesztői mock-mód: ha "true", a rendszer nem hívja a valódi Anthropic API-t,
# hanem egy kitalált, fix választ ad vissza - így fejlesztés közben nem fogy API-kredit.
AI_SCAN_MOCK_MODE = os.getenv("AI_SCAN_MOCK_MODE", "false").lower() == "true"
