Полный продакшен-рефактор fix25: split peer/admin, удаление legacy, шифрование secret, auth_id, новые API/роуты и зачистка subscription

This commit is contained in:
2026-05-09 00:27:45 +05:00
parent e60594e09e
commit d73bab99ec
34 changed files with 930 additions and 1673 deletions
-8
View File
@@ -16,11 +16,3 @@ export function getAdminInfoApi(): AxiosPromise<AdminInfo> {
method: "get",
});
}
export function verifyDefaultPassApi(): AxiosPromise<boolean> {
return request({
url: "/admin/verify-default-pass",
method: "get",
});
}
-30
View File
@@ -1,30 +0,0 @@
import { AxiosPromise } from "axios";
import { Hysteria2ServerConfig } from "@/api/config/types";
import request from "@/utils/request";
import {
Hysteria2KickDto,
Hysteria2UrlDto,
Hysteria2UrlVo,
} from "@/api/hysteria2/types";
export function hysteria2KickApi(
data: Hysteria2KickDto
): AxiosPromise<Hysteria2ServerConfig> {
return request({
url: "/hysteria2/hysteria2Kick",
method: "post",
data: data,
});
}
export function hysteria2UrlApi(
dto: Hysteria2UrlDto
): AxiosPromise<Hysteria2UrlVo> {
return request({
url: "/hysteria2/hysteria2Url",
method: "get",
params: dto,
});
}
-14
View File
@@ -1,14 +0,0 @@
export interface Hysteria2KickDto {
ids: number[];
kickUtilTime: number;
}
export interface Hysteria2UrlDto {
accountId: number;
}
export interface Hysteria2UrlVo {
url: string;
qrCode: string;
}
+19
View File
@@ -1,6 +1,8 @@
import request from "@/utils/request";
import { AxiosPromise } from "axios";
import {
KickPeerDto,
PeerClientConfigVo,
PeerPageDto,
PeerSaveDto,
PeerUpdateDto,
@@ -59,6 +61,23 @@ export function releaseKickPeerApi(data: IdDto): AxiosPromise {
});
}
export function kickPeerApi(id: number, data: KickPeerDto): AxiosPromise {
return request({
url: `/peers/${id}/kick`,
method: "post",
data,
});
}
export function getPeerClientConfigApi(
id: number
): AxiosPromise<PeerClientConfigVo> {
return request({
url: `/peers/${id}/client-config`,
method: "get",
});
}
export function importPeerApi(data: FormData): AxiosPromise {
return request({
url: "/peers/import",
+32 -43
View File
@@ -1,62 +1,51 @@
export interface PeerPageDto extends BaseDto {
username?: string;
deleted?: number;
name?: string;
disabled?: number;
remark?: string;
}
export interface PeerUpdateDto extends IdDto {
username: string;
pass: string;
conPass: string;
quota: number;
expireTime: number;
deviceNo: number;
deleted: number;
remark: string;
name?: string;
secret?: string;
quotaBytes?: number;
expiresAt?: number;
maxDevices?: number;
disabled?: number;
remark?: string;
}
export interface PeerSaveDto {
username: string;
pass: string;
conPass: string;
quota: number;
expireTime: number;
deviceNo: number;
deleted: number;
name: string;
secret?: string;
quotaBytes: number;
expiresAt: number;
maxDevices: number;
disabled: number;
remark: string;
}
export interface PeerVo extends IdDto {
username: string;
quota: number;
download: number;
upload: number;
expireTime: number;
kickUtilTime: number;
deviceNo: number;
role: string;
deleted: number;
name: string;
remark: string;
authId: string;
quotaBytes: number;
downloadBytes: number;
uploadBytes: number;
expiresAt: number;
maxDevices: number;
disabled: number;
bannedUntil: number;
lastConnectionAt: number;
createTime: string;
online: boolean;
device: number;
loginAt: number;
conAt: number;
remark: string;
onlineDevices: number;
}
export interface PeerForm extends IdDto {
username: string;
pass: string;
conPass: string;
quota: number;
expireTime: number;
deviceNo: number;
deleted: number;
remark: string;
export interface PeerClientConfigVo {
url: string;
qrCode: string | Uint8Array;
}
export interface KickPeerForm {
ids: number[];
kickUtilTime: number;
export interface KickPeerDto {
bannedUntil: number;
}
-3
View File
@@ -26,9 +26,6 @@ declare module '@vue/runtime-core' {
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
+1 -2
View File
@@ -8,8 +8,7 @@ declare module "*.vue" {
}
// TypeScript-подсказки для переменных окружения
interface ImportMetaEnv {
}
type ImportMetaEnv = Record<string, string | boolean | undefined>;
interface ImportMeta {
readonly env: ImportMetaEnv;
File diff suppressed because it is too large Load Diff