"""Application configuration.""" import os from pathlib import Path from pydantic_settings import BaseSettings from pydantic import Field BASE_DIR = Path(__file__).parent DATA_DIR = Path(os.getenv("DATA_DIR", "/app/data")) DATA_DIR.mkdir(parents=True, exist_ok=True) class Settings(BaseSettings): """Application settings.""" # Security SECRET_KEY: str = Field(default="change-me-in-production", description="Secret key for JWT") ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 * 7 # 7 days # Database DATABASE_URL: str = Field(default=f"sqlite:///{DATA_DIR}/ipmi_fan_control.db") # IPMI Settings IPMITOOL_PATH: str = Field(default="ipmitool", description="Path to ipmitool binary") PANIC_TIMEOUT_SECONDS: int = Field(default=60, description="Seconds without sensor data before panic mode") PANIC_FAN_SPEED: int = Field(default=100, description="Fan speed during panic mode") # Fan Control Settings DEFAULT_FAN_CURVE: list = Field(default=[ {"temp": 30, "speed": 10}, {"temp": 40, "speed": 20}, {"temp": 50, "speed": 35}, {"temp": 60, "speed": 50}, {"temp": 70, "speed": 70}, {"temp": 80, "speed": 100}, ]) # App Settings APP_NAME: str = "IPMI Fan Control" DEBUG: bool = False class Config: env_file = ".env" env_file_encoding = "utf-8" settings = Settings()