mirror of
https://github.com/remnawave/node.git
synced 2026-10-22 02:41:19 +00:00
Some checks failed
Build & Push Docker Image / Send TG message (push) Has been cancelled
Build & Push Docker Image / Build linux/amd64 (push) Has been cancelled
Build & Push Docker Image / Build linux/arm64 (push) Has been cancelled
Deploy lib / Send Telegram message (push) Has been cancelled
Deploy lib / build (push) Has been cancelled
Build & Push Docker Image / Merge & push manifest (push) Has been cancelled
Build & Push Docker Image / Send TG message-1 (push) Has been cancelled
Build & Push Docker Image / notify-on-error (push) Has been cancelled
Deploy lib / Send Telegram message-1 (push) Has been cancelled
Deploy lib / notify-on-error (push) Has been cancelled
69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
import { REST_API } from '../../api';
|
|
|
|
export namespace AddUsersCommand {
|
|
export const url = REST_API.HANDLER.ADD_USERS;
|
|
|
|
const BaseTrojanUser = z.object({
|
|
type: z.literal('trojan'),
|
|
tag: z.string(),
|
|
});
|
|
|
|
const BaseVlessUser = z.object({
|
|
type: z.literal('vless'),
|
|
tag: z.string(),
|
|
flow: z.enum(['xtls-rprx-vision', '']),
|
|
});
|
|
|
|
const BaseShadowsocksUser = z.object({
|
|
type: z.literal('shadowsocks'),
|
|
tag: z.string(),
|
|
});
|
|
|
|
const BaseShadowsocks22User = z.object({
|
|
type: z.literal('shadowsocks22'),
|
|
tag: z.string(),
|
|
});
|
|
|
|
const BaseHysteriaUser = z.object({
|
|
type: z.literal('hysteria'),
|
|
tag: z.string(),
|
|
});
|
|
|
|
export const RequestSchema = z.object({
|
|
affectedInboundTags: z.array(z.string()),
|
|
users: z.array(
|
|
z.object({
|
|
inboundData: z.array(
|
|
z.discriminatedUnion('type', [
|
|
BaseTrojanUser,
|
|
BaseVlessUser,
|
|
BaseShadowsocksUser,
|
|
BaseShadowsocks22User,
|
|
BaseHysteriaUser,
|
|
]),
|
|
),
|
|
|
|
userData: z.object({
|
|
userId: z.string(),
|
|
hashUuid: z.uuid(),
|
|
vlessUuid: z.uuid(),
|
|
trojanPassword: z.string(),
|
|
ssPassword: z.string(),
|
|
}),
|
|
}),
|
|
),
|
|
});
|
|
|
|
export type Request = z.infer<typeof RequestSchema>;
|
|
|
|
export const ResponseSchema = z.object({
|
|
response: z.object({
|
|
success: z.boolean(),
|
|
error: z.string().nullable(),
|
|
}),
|
|
});
|
|
|
|
export type Response = z.infer<typeof ResponseSchema>;
|
|
}
|