"""Konfiguration (env) + konstanter for portalen.""" import os from pathlib import Path BASE = Path(__file__).resolve().parent DATA = Path(os.environ.get("PORTAL_DATA", "/opt/portal/data")) DATA.mkdir(parents=True, exist_ok=True) AUTHENTIK = os.environ["AUTHENTIK_BASE"].rstrip("/") CLIENT_ID = os.environ["OIDC_CLIENT_ID"] CLIENT_SECRET = os.environ["OIDC_CLIENT_SECRET"] API_TOKEN = os.environ["AUTHENTIK_API_TOKEN"] SECRET_KEY = os.environ["SESSION_SECRET"] REDIRECT_URI = os.environ.get("OIDC_REDIRECT_URI", "https://weircon.dk/auth/callback") ADMIN_GROUP = os.environ.get("ADMIN_GROUP", "authentik Admins") MATOMO_BASE = os.environ.get("MATOMO_BASE", "https://matomo.weircon.dk").rstrip("/") MATOMO_TOKEN = os.environ.get("MATOMO_TOKEN", "") MATOMO_SITE = os.environ.get("MATOMO_SITE", "2") RP_BASE_URL = os.environ.get("RP_BASE_URL", "https://rp.weircon.dk").rstrip("/") RP_API_KEY = os.environ.get("RP_API_KEY", "") ASSETS_VERSION_URL = os.environ.get("ASSETS_VERSION_URL", "https://assets.weircon.dk/VERSION") GEOIP_DB = os.environ.get("GEOIP_DB", str(DATA / "dbip-country.mmdb")) GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN", "") # valgfri: hæver GitHub-rate-limit 60→5000/t NTFY_URL = os.environ.get("NTFY_URL", "") # fx https://ntfy.weircon.dk NTFY_TOPIC = os.environ.get("NTFY_TOPIC", "ops") NTFY_TOKEN = os.environ.get("NTFY_TOKEN", "") # tk_… publish-token DISCO_BASE_URL = os.environ.get("DISCO_BASE_URL", "") # DiscoPanel Connect-RPC (CT137) DISCO_API_TOKEN = os.environ.get("DISCO_API_TOKEN", "") DISCO_PANEL_URL = os.environ.get("DISCO_PANEL_URL", "") # bruger-vendt panel-URL til forsiden USERPREFS = DATA / "userprefs.json" IP_LABELS_LOCAL = DATA / "ip_labels.json" IP_LABELS_REMOTE = os.environ.get("IP_LABELS_REMOTE", "") SETTINGS_PATH = DATA / "settings.json" # ---- Medie-oprydning (Emby + Sonarr/Radarr) ---- EMBY_URL = os.environ.get("EMBY_URL", "").rstrip("/") EMBY_API_KEY = os.environ.get("EMBY_API_KEY", "") RADARR_URL = os.environ.get("RADARR_URL", "").rstrip("/") RADARR_API_KEY = os.environ.get("RADARR_API_KEY", "") SONARR_URL = os.environ.get("SONARR_URL", "").rstrip("/") SONARR_API_KEY = os.environ.get("SONARR_API_KEY", "") NTFY_MEDIA_TOPIC = os.environ.get("NTFY_MEDIA_TOPIC", "media") MEDIA_STATE_PATH = DATA / "media_state.json" MEDIA_SETTINGS_PATH = DATA / "media_settings.json" # Standardindstillinger — kan redigeres i /admin/media: MEDIA_DEFAULTS = { "enabled": False, # dry-run indtil du selv slår sletning til "age_days": 90, # tilføjet for mindst så længe siden "grace_days": 14, # "på vej ud"-vindue før sletning "disk_throttle": True, # slet kun når lageret er over disk_high % "disk_high": 85, # start sletning over denne fyldningsgrad "disk_low": 80, # stop igen når under denne "do_movies": True, "do_series": True, } GROUP_ORDER = {n: i for i, n in enumerate( ["Home", "Familie", "Medie", "Social", "AI", "Office", "Finans", "dev", "game", "Admin"])} ADMIN_MODULES = [ {"key": "ip-labels", "title": "IP → label & land", "icon": "🌍", "desc": "Mærk kendte IP-adresser (netværk/land) i statistikken."}, {"key": "cookies", "title": "Cookie-tekster", "icon": "🍪", "desc": "Teksten på cookie-banneret og /cookies-siden."}, {"key": "stats", "title": "Statistik", "icon": "📊", "desc": "Hurtigt overblik fra Matomo."}, {"key": "apps", "title": "App-beskrivelser & grupper", "icon": "🧩", "desc": "Rediger beskrivelse og gruppe på dine Authentik-apps."}, {"key": "ops", "title": "Drift / egress", "icon": "🛰️", "desc": "Static-assets-version + random-proxy egress, rollover & inflight."}, {"key": "users", "title": "Brugere", "icon": "👤", "desc": "Opret og administrér brugere + adgang (via grupper)."}, {"key": "groups", "title": "Grupper", "icon": "👥", "desc": "Grupper og medlemmer — styrer hvilke services brugere har adgang til."}, {"key": "access", "title": "Adgang til services", "icon": "🔐", "desc": "Hvilke brugere og grupper kan tilgå hver enkelt service."}, {"key": "media", "title": "Medie-oprydning", "icon": "🎬", "desc": "Slet aldrig-set film & serier automatisk — med karens, behold-liste og ntfy."}, ]