Files
adlist_mikrotik/config.py
T
2026-10-09 10:53:10 +02:00

75 lines
3.0 KiB
Python

import os
def getenv_bool(key: str, default: bool = False) -> bool:
v = os.getenv(key)
if v is None:
return default
return v.lower() in ("1", "true", "t", "yes", "y", "on")
def getenv_int(key: str, default: int) -> int:
try:
return int(os.getenv(key, str(default)))
except ValueError:
return default
def getenv_float(key: str, default: float) -> float:
try:
return float(os.getenv(key, str(default)))
except ValueError:
return default
# Podstawowe
FLASK_DEBUG = getenv_bool("FLASK_DEBUG", False)
SECRET_KEY = os.getenv("SECRET_KEY", "secretkey")
# Rozmiary/limity
MAX_CONTENT_LENGTH = getenv_int("MAX_CONTENT_LENGTH", 50 * 1024 * 1024) # 50MB
RATE_LIMIT_DEFAULT = os.getenv("RATE_LIMIT_DEFAULT", "100 per minute")
RATE_LIMIT_CONVERT = os.getenv("RATE_LIMIT_CONVERT", "100 per minute")
# Redis
REDIS_URL = os.getenv("REDIS_URL", "redis://localhost:6379/7")
REDIS_HOST = os.getenv("REDIS_HOST", "localhost")
REDIS_PORT = getenv_int("REDIS_PORT", 6379)
REDIS_DB = getenv_int("REDIS_DB", 7)
# Basic Auth dla /stats
STATS_BASIC_AUTH_ENABLED = getenv_bool("STATS_BASIC_AUTH_ENABLED", True)
STATS_BASIC_AUTH_REALM = os.getenv("STATS_BASIC_AUTH_REALM", "Stats")
STATS_BASIC_AUTH_USER = os.getenv("STATS_BASIC_AUTH_USER", "admin").strip()
STATS_BASIC_AUTH_PASS = os.getenv("STATS_BASIC_AUTH_PASS", "admin").strip()
# Shared proxy cache (Cache-Control); RustProxy's own max_ttl_seconds cap
# must also be configured to at least CACHE_S_MAXAGE (maximum 604800 seconds).
CACHE_ENABLED = getenv_bool("CACHE_ENABLED", True)
CACHE_S_MAXAGE = max(0, getenv_int("CACHE_S_MAXAGE", 604800)) # 7 days at proxy
CACHE_MAX_AGE = max(0, getenv_int("CACHE_MAX_AGE", 3600)) # 1 hour in browsers
CACHE_STALE_WHILE_REVALIDATE = max(0, getenv_int("CACHE_STALE_WHILE_REVALIDATE", 86400)) # 1 day
CACHE_STALE_IF_ERROR = max(0, getenv_int("CACHE_STALE_IF_ERROR", 604800)) # 7 days
USE_REDIS_BODY_CACHE = getenv_bool("USE_REDIS_BODY_CACHE", False) # legacy/unused
# AIOHTTP/stream
AIOHTTP_TOTAL_TIMEOUT = getenv_float("AIOHTTP_TOTAL_TIMEOUT", 70.0)
AIOHTTP_CONNECT_TIMEOUT = getenv_float("AIOHTTP_CONNECT_TIMEOUT", 10.0)
AIOHTTP_SOCK_CONNECT_TIMEOUT= getenv_float("AIOHTTP_SOCK_CONNECT_TIMEOUT", 10.0)
AIOHTTP_SOCK_READ_TIMEOUT = getenv_float("AIOHTTP_SOCK_READ_TIMEOUT", 60.0)
READ_CHUNK = getenv_int("READ_CHUNK", 64 * 1024) # 64 KiB
STREAM_LINE_LIMIT= getenv_int("STREAM_LINE_LIMIT", 4096)
MAX_SOURCE_BYTES= getenv_int("MAX_SOURCE_BYTES", 100 * 1024 * 1024)
MAX_CONVERTED_BYTES= getenv_int("MAX_CONVERTED_BYTES", 100 * 1024 * 1024)
# Serwer
BIND_HOST = os.getenv("BIND_HOST", "127.0.0.1")
BIND_PORT = getenv_int("BIND_PORT", 8283)
# Domyślny URL źródłowy (opcjonalny)
DEFAULT_SOURCE_URL = os.getenv(
"DEFAULT_SOURCE_URL",
""
)
# Debug trybu /convert
DEBUG_ENABLE = getenv_bool("DEBUG_ENABLE", False)
DEBUG_KEY = os.getenv("DEBUG_KEY", "") # ustaw w env bezpieczny losowy sekret
DEBUG_RATE_LIMIT = os.getenv("DEBUG_RATE_LIMIT", "5 per minute")