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.
25 lines
1.2 KiB
Go
25 lines
1.2 KiB
Go
package router
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"hy2xs-admin/controller"
|
|
)
|
|
|
|
// Серверный конфиг Hysteria в HY2XS доступен только на чтение и на выгрузку:
|
|
// его владелец — install-оркестратор. Маршруты записи (updateHysteria2Config,
|
|
// importHysteria2Config), перезапуска панели и загрузки сертификатов удалены,
|
|
// а не оставлены заглушками: маршрут, который всегда отвечает «feature
|
|
// disabled», вводит в заблуждение и остаётся точкой входа.
|
|
func initConfigRouter(configApi *gin.RouterGroup) {
|
|
config := configApi.Group("/config")
|
|
{
|
|
config.POST("/updateConfigs", controller.UpdateConfigs)
|
|
config.GET("/getConfig", controller.GetConfig)
|
|
config.POST("/listConfig", controller.ListConfig)
|
|
config.GET("/getHysteria2Config", controller.GetHysteria2Config)
|
|
config.POST("/exportHysteria2Config", controller.ExportHysteria2Config)
|
|
config.POST("/exportConfig", controller.ExportConfig)
|
|
config.POST("/importConfig", controller.ImportConfig)
|
|
}
|
|
}
|