fix(admin): различать достижимость Traffic Stats API и соответствие профилю

Признак на странице конфигурации отвечал только на вопрос «достучится ли
админка», поэтому 0.0.0.0 показывался как норма — хотя внутренний control plane
при нём опубликован на всех интерфейсах, а оркестратор такой конфигурации не
создаёт. Состояний теперь четыре: канон профиля, wildcard, не-канонический
loopback и недостижимый адрес.

Backend не тронут: он по-прежнему отвечает только на вопрос достижимости —
превращать лишнюю публикацию в отказ обслуживания значило бы отключить всех
пиров. Исправлено ложное утверждение в его комментарии: пустой хост `:36712` в
Go означает все интерфейсы, а не loopback.

Удалены мёртвые фразы common.wait/enableSuccess/disableSuccess — остатки
операций запуска, остановки и смены версии Hysteria, которых у панели нет.
This commit is contained in:
2026-09-03 03:39:42 +05:00
parent cb20d8d28f
commit b315001288
10 changed files with 204 additions and 30 deletions
+11
View File
@@ -343,6 +343,17 @@ Hysteria-интеграции с официальной документацие
пережило бы `defer someOtherCleanup()` рядом со взятым замком. Теперь имя
переменной берётся из самого присваивания.
- **Панель считала wildcard нормальным адресом control plane.** Признак на
странице конфигурации отвечал только на вопрос «достучится ли админка»,
поэтому `0.0.0.0` показывался без замечаний — хотя внутренний Traffic Stats
API при нём опубликован на всех интерфейсах, а оркестратор такой конфигурации
не создаёт. Состояний теперь четыре: канон профиля, wildcard, не-канонический
loopback и недостижимый адрес; backend при этом по-прежнему отвечает только на
вопрос достижимости — превращать лишнюю публикацию в отказ обслуживания
значило бы отключить всех пиров. Заодно исправлено ложное утверждение в
комментарии `parseTrafficStatsPort`: пустой хост `:36712` — это все
интерфейсы, а не loopback.
### Исправлено — гейты сборки
- **Гейт fail-open срабатывал на корректном коде.** Проверка «авторизация не