39 lines
923 B
Python
39 lines
923 B
Python
import os
|
|
import json
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class SiteConfig:
|
|
id: str
|
|
name: str
|
|
unifi_host: str
|
|
unifi_api_key: str
|
|
unifi_site: str
|
|
ssid: str
|
|
default_duration_minutes: int = 1440
|
|
|
|
|
|
@dataclass
|
|
class AppConfig:
|
|
authentik_host: str
|
|
authentik_client_id: str
|
|
authentik_client_secret: str
|
|
portal_secret_key: str
|
|
portal_base_url: str
|
|
sites: dict[str, SiteConfig]
|
|
|
|
|
|
def load_config() -> AppConfig:
|
|
sites_raw = json.loads(os.environ["SITES"])
|
|
sites = {s["id"]: SiteConfig(**s) for s in sites_raw}
|
|
|
|
return AppConfig(
|
|
authentik_host=os.environ["AUTHENTIK_HOST"],
|
|
authentik_client_id=os.environ["AUTHENTIK_CLIENT_ID"],
|
|
authentik_client_secret=os.environ["AUTHENTIK_CLIENT_SECRET"],
|
|
portal_secret_key=os.environ["PORTAL_SECRET_KEY"],
|
|
portal_base_url=os.environ["PORTAL_BASE_URL"],
|
|
sites=sites,
|
|
)
|