"""Load and validate all environment variables at startup.""" from __future__ import annotations from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict( env_prefix="LANGUARD_", env_file=".env", env_file_encoding="utf-8", case_sensitive=False, # Enable JSON parsing for complex types (list[str]) from env vars json_parse_ints=False, ) secret_key: str encryption_key: str # Fernet base64 key db_path: str = "./languard.db" servers_dir: str = "./servers" host: str = "0.0.0.0" port: int = 8000 cors_origins: list[str] = ["http://localhost:5173"] log_retention_days: int = 7 metrics_retention_days: int = 30 player_history_retention_days: int = 90 jwt_expire_hours: int = 24 login_rate_limit: str = "5/minute" log_level: str = "INFO" # Game-specific defaults (used by adapters, not core) arma3_default_exe: str = "C:/Arma3Server/arma3server_x64.exe" settings = Settings()