HTTPS через Caddy с автоматическими сертификатами
Токен и расшифровки разговоров ходили по сети открытым текстом. Теперь в пакете лежит Caddy: он держит сертификаты Let's Encrypt и продлевает их сам, а сервис уходит на localhost. Отдельно решён вопрос подмены адреса: за прокси все запросы приходят с localhost, и список разрешённых адресов пускал бы кого угодно. Заголовку с настоящим адресом сервис верит только от доверенного прокси - на это восемь тестов. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
64ce562bb1
commit
c992b7907d
@@ -29,6 +29,10 @@ token = "{token}"
|
||||
# Кто может обращаться. Пусто = разрешены все адреса.
|
||||
# Примеры: "192.168.1.0/24, 10.8.0.5, 127.0.0.1"
|
||||
allow_ips = "127.0.0.1, ::1"
|
||||
# Адреса обратных прокси, которым можно верить в определении клиента.
|
||||
# Пусто = сервис работает напрямую и заголовкам не доверяет.
|
||||
# При работе через start-https.bat (Caddy на этой же машине) ставьте 127.0.0.1
|
||||
trust_proxy = ""
|
||||
# Открывать ли /docs и /openapi.json. Они не требуют токена и показывают
|
||||
# устройство API всем, кто знает адрес, поэтому по умолчанию выключены.
|
||||
docs = false
|
||||
@@ -81,6 +85,7 @@ class Settings:
|
||||
token: str = ""
|
||||
allow_ips: str = ""
|
||||
docs: bool = False
|
||||
trust_proxy: str = ""
|
||||
threads: int = 0
|
||||
workers: int = 0
|
||||
speakers: int = 2
|
||||
@@ -152,6 +157,7 @@ def load_settings(config_path: Path | None = None) -> Settings:
|
||||
token=str(security.get("token", "")),
|
||||
allow_ips=str(security.get("allow_ips", "")),
|
||||
docs=bool(security.get("docs", False)),
|
||||
trust_proxy=str(security.get("trust_proxy", "")),
|
||||
threads=int(proc.get("threads", 0)),
|
||||
workers=int(proc.get("workers", 1)),
|
||||
speakers=int(proc.get("speakers", 2)),
|
||||
|
||||
Reference in New Issue
Block a user