Полный продакшен-рефактор fix25: split peer/admin, удаление legacy, шифрование secret, auth_id, новые API/роуты и зачистка subscription
This commit is contained in:
@@ -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",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
export interface Hysteria2KickDto {
|
||||
ids: number[];
|
||||
kickUtilTime: number;
|
||||
}
|
||||
|
||||
export interface Hysteria2UrlDto {
|
||||
accountId: number;
|
||||
}
|
||||
|
||||
export interface Hysteria2UrlVo {
|
||||
url: string;
|
||||
qrCode: string;
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
@@ -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']
|
||||
|
||||
Vendored
+1
-2
@@ -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
Reference in New Issue
Block a user