19ffc80130
Маршруты, операциями которых продукт не владеет, отвечали заглушкой "managed by orchestrator" или пустым списком: POST /hysteria2ChangeVersion GET /listRelease POST /config/updateHysteria2Config POST /config/importHysteria2Config POST /config/restartServer POST /config/uploadCertFile GET /config/hysteria2AcmePath (не имел потребителя вовсе) Они удалены, а не оставлены заглушками. Причины две. API-контракт не должен обещать updater, которого у продукта принципиально нет: маршрут, всегда возвращающий отказ, вводит в заблуждение. И это лишняя attack surface плюс технический мусор от прежней архитектуры. Вместе с маршрутами убраны мёртвые сервисы (StartHysteria2, StopHysteria2, RestartHysteria2, SetHysteria2Config, UpdateHysteria2Config, GetAuthHttpUrl, Hysteria2AcmePath), неиспользуемые типы и клиентские функции фронтенда. Отдельно - кнопки. "Перезапустить панель" и загрузка сертификатов обращались к заглушкам, то есть гарантированно возвращали ошибку. Кнопка, которая всегда падает, - не точка расширения на будущее, а дефект UX. Удалены вместе со строками i18n. Конфигурация Hysteria остаётся доступной панели на чтение и на выгрузку: getHysteria2Config и exportHysteria2Config.
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"hy2xs-admin/dao"
|
|
"hy2xs-admin/model/constant"
|
|
"hy2xs-admin/util"
|
|
)
|
|
|
|
// Жизненный цикл Hysteria принадлежит systemd и install-оркестратору.
|
|
// Панель умеет только наблюдать состояние: функций Start/Stop/Restart и
|
|
// смены версии здесь нет намеренно, а не «временно отключены».
|
|
|
|
func InitHysteria2() error {
|
|
if !util.Exists(util.GetHysteria2BinPath()) {
|
|
return errors.New("systemd-managed hysteria binary not found")
|
|
}
|
|
|
|
config, err := dao.GetConfig("key = ?", constant.Hysteria2Enable)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if *config.Value == "1" {
|
|
logrus.Infof("hysteria2 lifecycle is managed by systemd in HY2XS production package")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func Hysteria2IsRunning() bool {
|
|
_, err := util.Exec("systemctl is-active --quiet hysteria-server")
|
|
return err == nil
|
|
}
|
|
|
|
func ReleaseHysteria2() error {
|
|
return nil
|
|
}
|