refactor: split main.py i moduler (config/cache/store/services/authentik) + async dashboard (TTFB ~6ms, indhold via /dashboard-content) + TTL-cache på Authentik-læsninger
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
"""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"))
|
||||
|
||||
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"
|
||||
|
||||
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."},
|
||||
]
|
||||
Reference in New Issue
Block a user