"""Configuration via environment variables.""" import os from dataclasses import dataclass from guarddog_nexus.constants import ( GUARDDOG_BINARY_FALLBACK, HTTP_TIMEOUT_API, HTTP_TIMEOUT_DOWNLOAD, LLM_DEFAULT_API_BASE, LLM_DEFAULT_MODEL, LLM_DEFAULT_TIMEOUT, ) @dataclass class Config: # Nexus connection nexus_url: str = os.getenv("NEXUS_URL", "http://localhost:8081") nexus_username: str = os.getenv("NEXUS_USERNAME", "admin") nexus_password: str = os.getenv("NEXUS_PASSWORD", "admin123") nexus_download_timeout: int = int( os.getenv("NEXUS_DOWNLOAD_TIMEOUT_SECONDS", str(HTTP_TIMEOUT_DOWNLOAD)) ) nexus_api_timeout: int = int( os.getenv("NEXUS_API_TIMEOUT_SECONDS", str(HTTP_TIMEOUT_API)) ) # Database database_path: str = os.getenv("DATABASE_PATH", "data/guarddog.db") # Server host: str = os.getenv("HOST", "0.0.0.0") port: int = int(os.getenv("PORT", "8080")) # Logging log_level: str = os.getenv("LOG_LEVEL", "INFO") log_syslog_host: str = os.getenv("LOG_SYSLOG_HOST", "") log_syslog_port: int = int(os.getenv("LOG_SYSLOG_PORT", "514")) log_syslog_facility: str = os.getenv("LOG_SYSLOG_FACILITY", "") # Webhooks webhook_secret: str = os.getenv("WEBHOOK_SECRET", "") # Scanner scan_timeout_seconds: int = int(os.getenv("SCAN_TIMEOUT_SECONDS", "300")) temp_dir: str = os.getenv("TEMP_DIR", "/tmp/guarddog-nexus") guarddog_binary: str = os.getenv("GUARDDOG_BINARY", GUARDDOG_BINARY_FALLBACK) max_concurrent_scans: int = int(os.getenv("MAX_CONCURRENT_SCANS", "4")) # LLM analysis llm_enabled: bool = os.getenv("LLM_ENABLED", "").lower() in ("1", "true", "yes") llm_api_base: str = os.getenv("LLM_API_BASE", LLM_DEFAULT_API_BASE) llm_api_key: str = os.getenv("LLM_API_KEY", "") llm_model: str = os.getenv("LLM_MODEL", LLM_DEFAULT_MODEL) llm_timeout: int = int(os.getenv("LLM_TIMEOUT_SECONDS", str(LLM_DEFAULT_TIMEOUT))) config = Config()