fix(fix3): runtime env hardening and public endpoint source-of-truth

This commit is contained in:
2026-04-28 04:45:43 +05:00
parent 96d9bbcece
commit 12c65c8e31
23 changed files with 131 additions and 238 deletions
+2
View File
@@ -68,6 +68,7 @@ Hysteria2 — основной транспортный компонент се
Инварианты:
- `acme` -> только `acme` block в конфиге;
- `acme` block обязан содержать `type: http|tls|dns` из runtime env (`HY2XS_ACME_TYPE`);
- `file` -> только `tls.cert`/`tls.key` block;
- `self_signed_dev` -> только dev сценарии.
@@ -111,3 +112,4 @@ Hysteria2 — основной транспортный компонент се
7. bundled UI работает поверх актуального состояния сервера
8. `trafficStats.secret` отдельный от `JWT_SECRET`
9. IPv6 listen не используется
10. публичные клиентские endpoint/URL берутся из `HY2XS_PUBLIC_HOST` + `HY2XS_PUBLIC_PORT`, а не из `listen`/request-host
+4
View File
@@ -35,6 +35,10 @@
В клиентской части используется только `public_host/public_port`.
В runtime-обозначениях HY2XS это эквивалентно:
- `HY2XS_PUBLIC_HOST`
- `HY2XS_PUBLIC_PORT`
Инварианты:
- `listen` и `public endpoint` разделены;
- в клиентских URL не используется `0.0.0.0`;
+3
View File
@@ -47,6 +47,8 @@
12. bootstrap admin secret существует и имеет `0600`
13. `trafficStats` API: корректный secret принимает запрос, неверный secret отклоняется
14. TLS mode в `config.yaml` соответствует runtime env (`acme|file|self_signed_dev`)
15. при `HY2XS_TLS_MODE=acme` в `config.yaml` выставлен `acme.type` из `HY2XS_ACME_TYPE`
16. subscribe/node URL в API/QR формируются по `HY2XS_PUBLIC_HOST` + `HY2XS_PUBLIC_PORT`
15. `nft -c -f /etc/nftables.conf` проходит после apply
## D. Negative tests
@@ -76,3 +78,4 @@
8. Telegram/access layer не требуется для прохождения install acceptance
9. отсутствует production path для port hopping
10. UI не запускается от root
11. клиентские endpoint не зависят от request `Host`/`hostname`