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.
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
import { AxiosPromise } from "axios";
|
|
import request from "@/utils/request";
|
|
import {
|
|
ConfigDto,
|
|
ConfigsDto,
|
|
ConfigUpdateDto,
|
|
ConfigVo,
|
|
Hysteria2ServerConfig,
|
|
} from "@/api/config/types";
|
|
|
|
// Серверный конфиг Hysteria доступен панели только на чтение и на выгрузку:
|
|
// им владеет install-оркестратор. Клиентов записи, импорта, перезапуска и
|
|
// загрузки сертификатов здесь нет — соответствующих маршрутов не существует.
|
|
|
|
export function getHysteria2ConfigApi(): AxiosPromise<Hysteria2ServerConfig> {
|
|
return request({
|
|
url: "/config/getHysteria2Config",
|
|
method: "get",
|
|
});
|
|
}
|
|
|
|
export function getConfigApi(data: ConfigDto): AxiosPromise<ConfigVo> {
|
|
return request({
|
|
url: "/config/getConfig",
|
|
method: "get",
|
|
params: data,
|
|
});
|
|
}
|
|
|
|
export function listConfigApi(data: ConfigsDto): AxiosPromise<Array<ConfigVo>> {
|
|
return request({
|
|
url: "/config/listConfig",
|
|
method: "post",
|
|
data: data,
|
|
});
|
|
}
|
|
|
|
export function updateConfigsApi(data: ConfigUpdateDto): AxiosPromise {
|
|
return request({
|
|
url: "/config/updateConfigs",
|
|
method: "post",
|
|
data: data,
|
|
});
|
|
}
|
|
|
|
export function exportConfigApi(): AxiosPromise {
|
|
return request({
|
|
url: "/config/exportConfig",
|
|
method: "post",
|
|
responseType: "blob",
|
|
});
|
|
}
|
|
|
|
export function importConfigApi(data: FormData): AxiosPromise {
|
|
return request({
|
|
url: "/config/importConfig",
|
|
method: "post",
|
|
headers: {
|
|
"Content-Type": "multipart/form-data",
|
|
},
|
|
data: data,
|
|
});
|
|
}
|
|
|
|
export function exportHysteria2ConfigApi(): AxiosPromise {
|
|
return request({
|
|
url: "/config/exportHysteria2Config",
|
|
method: "post",
|
|
responseType: "blob",
|
|
});
|
|
}
|
|
|