vpn/backend/config.py
2026-09-23 01:19:36 +00:00

30 lines
1 KiB
Python

from __future__ import annotations
import os
from dataclasses import dataclass
@dataclass(frozen=True)
class Settings:
admin_token: str
secret_key: str
base_url: str = "http://127.0.0.1:8080"
database_path: str = "backend/vpnapp.db"
@classmethod
def from_env(cls) -> Settings:
admin_token = os.getenv("VPNAPP_ADMIN_TOKEN", "")
secret_key = os.getenv("VPNAPP_SECRET_KEY", "")
if not admin_token:
raise RuntimeError("VPNAPP_ADMIN_TOKEN must be set")
if not secret_key:
raise RuntimeError(
"VPNAPP_SECRET_KEY must be set to a Fernet key; generate one with "
"python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())'"
)
return cls(
admin_token=admin_token,
secret_key=secret_key,
base_url=os.getenv("VPNAPP_BASE_URL", "http://127.0.0.1:8080").rstrip("/"),
database_path=os.getenv("VPNAPP_DATABASE", "backend/vpnapp.db"),
)