from __future__ import annotations from dataclasses import dataclass import os @dataclass(frozen=True) class Settings: state_file: str docker_api_url: str docker_timeout_seconds: float app_port: int dns_provider: str dns_base_domain: str dns_ttl_seconds: int dns_sync_interval_seconds: float adguard_url: str adguard_username: str adguard_password: str adguard_api_token: str rfc2136_server: str rfc2136_zone: str rfc2136_port: int rfc2136_tsig_key_name: str rfc2136_tsig_secret: str rfc2136_tsig_algorithm: str def get_settings() -> Settings: return Settings( state_file=os.getenv("STATE_FILE", "/data/entries.json"), docker_api_url=os.getenv("DOCKER_API_URL", "unix:///var/run/docker.sock"), docker_timeout_seconds=float(os.getenv("DOCKER_TIMEOUT_SECONDS", "3")), app_port=int(os.getenv("APP_PORT", "31810")), dns_provider=os.getenv("DNS_PROVIDER", "none"), dns_base_domain=os.getenv("DNS_BASE_DOMAIN", ""), dns_ttl_seconds=int(os.getenv("DNS_TTL_SECONDS", "120")), dns_sync_interval_seconds=float(os.getenv("DNS_SYNC_INTERVAL_SECONDS", "15")), adguard_url=os.getenv("ADGUARD_URL", ""), adguard_username=os.getenv("ADGUARD_USERNAME", ""), adguard_password=os.getenv("ADGUARD_PASSWORD", ""), adguard_api_token=os.getenv("ADGUARD_API_TOKEN", ""), rfc2136_server=os.getenv("RFC2136_SERVER", ""), rfc2136_zone=os.getenv("RFC2136_ZONE", ""), rfc2136_port=int(os.getenv("RFC2136_PORT", "53")), rfc2136_tsig_key_name=os.getenv("RFC2136_TSIG_KEY_NAME", ""), rfc2136_tsig_secret=os.getenv("RFC2136_TSIG_SECRET", ""), rfc2136_tsig_algorithm=os.getenv("RFC2136_TSIG_ALGORITHM", "hmac-sha256"), )