fix(sub): prevent default profile page URL disclosure (#6538)

* fix(sub): prevent default profile page URL disclosure

Add explicit none, builtin, and custom profile page modes.
Preserve existing custom URLs and warn before exposing the built-in page.
Cover mode selection, legacy settings, and subscription response headers.

* fix(subscription): add profile page link options and upgrade notes
This commit is contained in:
NgaiYeanCoi
2026-09-16 03:13:29 +08:00
committed by GitHub
parent 3fa44915c1
commit 1d85ef138e
36 changed files with 747 additions and 47 deletions
@@ -76,6 +76,24 @@ policy) плюс исходящее соединение `proxy`, указыва
- **`Profile-Title`**, **`Support-Url`**, **`Profile-Web-Page-Url`**,
**`Announce`** — необязательный брендинг, отображаемый некоторыми клиентами.
### Ссылка на страницу профиля
В настройках **Подписка → Профиль** поле **Страница профиля** (`subProfileMode`)
управляет ссылкой для всех клиентов подписки:
- **Без ссылки** (`none`, по умолчанию) — заголовок `Profile-Web-Page-Url` не отправляется.
- **Встроенная страница подписки** (`builtin`) — ссылка на встроенную страницу подписки.
- **Свой сайт** (`custom`) — адрес из `subProfileUrl`; если он пуст, заголовок не отправляется.
**После обновления:** если `subProfileMode` ещё не задан, а прежний `subProfileUrl`
пуст или содержит только пробелы, вместо автоматической ссылки на встроенную
страницу теперь используется **Без ссылки**. Существующий непустой пользовательский
адрес сохраняется в режиме **Свой сайт**.
Чтобы вернуть прежнюю ссылку, выберите **Встроенная страница подписки** в этом поле
и сохраните настройки. Эта страница раскрывает URL-адреса подписок и конфигурации
узлов, в том числе для зашифрованных подписок Happ.
## Пользовательские шаблоны страниц
Укажите в `subThemeDir` папку с пользовательским шаблоном информационной