"""Konfiguration aus Umgebungsvariablen.""" import os def _int(name: str, default: int) -> int: try: return int(os.environ.get(name, default)) except ValueError: return default def _range(value: str) -> list[int]: ports: list[int] = [] for part in value.split(","): part = part.strip() if not part: continue if "-" in part: a, b = part.split("-", 1) ports.extend(range(int(a), int(b) + 1)) else: ports.append(int(part)) return ports DATA_DIR = os.environ.get("DATA_DIR", "/data") DB_PATH = os.path.join(DATA_DIR, "proxy.db") LISTEN_HOST = os.environ.get("LISTEN_HOST", "0.0.0.0") HTTP_PORT = _int("HTTP_PROXY_PORT", 3128) SOCKS_PORT = _int("SOCKS_PORT", 1080) WEB_PORT = _int("WEB_PORT", 8080) # UDP-Ports für SOCKS5 UDP ASSOCIATE (müssen im Container veröffentlicht sein) SOCKS_UDP_PORTS = _range(os.environ.get("SOCKS_UDP_PORTS", "10800-10819")) # Adresse, die SOCKS-Clients für UDP mitgeteilt wird (Host-IP). Leer = lokale Adresse der Verbindung SOCKS_UDP_ADVERTISE = os.environ.get("SOCKS_UDP_ADVERTISE", "").strip() # Ports, die für Portweiterleitungen freigegeben sind (nur Hinweis in der UI) FORWARD_PORTS = os.environ.get("FORWARD_PORTS", "40000-40019") ADMIN_USER = os.environ.get("ADMIN_USER", "admin") ADMIN_PASSWORD = os.environ.get("ADMIN_PASSWORD", "") CONNECT_TIMEOUT = _int("CONNECT_TIMEOUT", 15) SESSION_HOURS = _int("SESSION_HOURS", 12)