47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
"""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)
|