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
@@ -378,7 +378,18 @@ trafficStats.listen слушает 192.168.1.10, а админка обраща
API только по loopback. ...Верните 127.0.0.1 через `hy2xs-orchestrator reconfigure`
```
Страница конфигурации показывает тот же адрес и помечает его как не-loopback.
Страница конфигурации показывает тот же адрес и называет его состояние. Ответов
три, и они означают разное:
| адрес | что показано | что это значит |
| --- | --- | --- |
| `127.0.0.1:36712` | без пометки | канон production-профиля |
| `0.0.0.0:36712`, `:36712` | предупреждение | API достижим, но опубликован на всех интерфейсах; при `HY2XS_FIREWALL_MODE=external\|off` его не прикрывает ничто |
| `127.0.0.5:36712` | предупреждение | достижим, но оркестратор такого не создаёт — конфиг правили руками |
| `192.168.1.10:36712` | ошибка | панель до него не достучится, доступ пиров уже не работает |
Пустой хост в `listen` — это не loopback: в Go `:36712` означает все интерфейсы,
ровно как `0.0.0.0`.
### Дашборд показывает «состояние службы неизвестно»