|
@@ -0,0 +1,380 @@
|
|
|
|
|
+// Code generated by tools/openapigen. DO NOT EDIT.
|
|
|
|
|
+import { z } from 'zod';
|
|
|
|
|
+export const ProtocolSchema = z.string();
|
|
|
|
|
+export type Protocol = z.infer<typeof ProtocolSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const AllSettingSchema = z.object({
|
|
|
|
|
+ datepicker: z.string(),
|
|
|
|
|
+ expireDiff: z.number().int().min(0),
|
|
|
|
|
+ externalTrafficInformEnable: z.boolean(),
|
|
|
|
|
+ externalTrafficInformURI: z.string(),
|
|
|
|
|
+ ldapAutoCreate: z.boolean(),
|
|
|
|
|
+ ldapAutoDelete: z.boolean(),
|
|
|
|
|
+ ldapBaseDN: z.string(),
|
|
|
|
|
+ ldapBindDN: z.string(),
|
|
|
|
|
+ ldapDefaultExpiryDays: z.number().int().min(0),
|
|
|
|
|
+ ldapDefaultLimitIP: z.number().int().min(0),
|
|
|
|
|
+ ldapDefaultTotalGB: z.number().int().min(0),
|
|
|
|
|
+ ldapEnable: z.boolean(),
|
|
|
|
|
+ ldapFlagField: z.string(),
|
|
|
|
|
+ ldapHost: z.string(),
|
|
|
|
|
+ ldapInboundTags: z.string(),
|
|
|
|
|
+ ldapInvertFlag: z.boolean(),
|
|
|
|
|
+ ldapPassword: z.string(),
|
|
|
|
|
+ ldapPort: z.number().int().min(0).max(65535),
|
|
|
|
|
+ ldapSyncCron: z.string(),
|
|
|
|
|
+ ldapTruthyValues: z.string(),
|
|
|
|
|
+ ldapUseTLS: z.boolean(),
|
|
|
|
|
+ ldapUserAttr: z.string(),
|
|
|
|
|
+ ldapUserFilter: z.string(),
|
|
|
|
|
+ ldapVlessField: z.string(),
|
|
|
|
|
+ pageSize: z.number().int().min(1).max(1000),
|
|
|
|
|
+ remarkModel: z.string(),
|
|
|
|
|
+ restartXrayOnClientDisable: z.boolean(),
|
|
|
|
|
+ sessionMaxAge: z.number().int().min(0).max(525600),
|
|
|
|
|
+ subAnnounce: z.string(),
|
|
|
|
|
+ subCertFile: z.string(),
|
|
|
|
|
+ subClashEnable: z.boolean(),
|
|
|
|
|
+ subClashPath: z.string(),
|
|
|
|
|
+ subClashURI: z.string(),
|
|
|
|
|
+ subDomain: z.string(),
|
|
|
|
|
+ subEmailInRemark: z.boolean(),
|
|
|
|
|
+ subEnable: z.boolean(),
|
|
|
|
|
+ subEnableRouting: z.boolean(),
|
|
|
|
|
+ subEncrypt: z.boolean(),
|
|
|
|
|
+ subJsonEnable: z.boolean(),
|
|
|
|
|
+ subJsonFragment: z.string(),
|
|
|
|
|
+ subJsonMux: z.string(),
|
|
|
|
|
+ subJsonNoises: z.string(),
|
|
|
|
|
+ subJsonPath: z.string(),
|
|
|
|
|
+ subJsonRules: z.string(),
|
|
|
|
|
+ subJsonURI: z.string(),
|
|
|
|
|
+ subKeyFile: z.string(),
|
|
|
|
|
+ subListen: z.string(),
|
|
|
|
|
+ subPath: z.string(),
|
|
|
|
|
+ subPort: z.number().int().min(1).max(65535),
|
|
|
|
|
+ subProfileUrl: z.string(),
|
|
|
|
|
+ subRoutingRules: z.string(),
|
|
|
|
|
+ subShowInfo: z.boolean(),
|
|
|
|
|
+ subSupportUrl: z.string(),
|
|
|
|
|
+ subTitle: z.string(),
|
|
|
|
|
+ subURI: z.string(),
|
|
|
|
|
+ subUpdates: z.number().int().min(0).max(525600),
|
|
|
|
|
+ tgBotAPIServer: z.string(),
|
|
|
|
|
+ tgBotBackup: z.boolean(),
|
|
|
|
|
+ tgBotChatId: z.string(),
|
|
|
|
|
+ tgBotEnable: z.boolean(),
|
|
|
|
|
+ tgBotLoginNotify: z.boolean(),
|
|
|
|
|
+ tgBotProxy: z.string(),
|
|
|
|
|
+ tgBotToken: z.string(),
|
|
|
|
|
+ tgCpu: z.number().int().min(0).max(100),
|
|
|
|
|
+ tgLang: z.string(),
|
|
|
|
|
+ tgRunTime: z.string(),
|
|
|
|
|
+ timeLocation: z.string(),
|
|
|
|
|
+ trafficDiff: z.number().int().min(0).max(100),
|
|
|
|
|
+ trustedProxyCIDRs: z.string(),
|
|
|
|
|
+ twoFactorEnable: z.boolean(),
|
|
|
|
|
+ twoFactorToken: z.string(),
|
|
|
|
|
+ webBasePath: z.string(),
|
|
|
|
|
+ webCertFile: z.string(),
|
|
|
|
|
+ webDomain: z.string(),
|
|
|
|
|
+ webKeyFile: z.string(),
|
|
|
|
|
+ webListen: z.string(),
|
|
|
|
|
+ webPort: z.number().int().min(1).max(65535),
|
|
|
|
|
+});
|
|
|
|
|
+export type AllSetting = z.infer<typeof AllSettingSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const AllSettingViewSchema = z.object({
|
|
|
|
|
+ datepicker: z.string(),
|
|
|
|
|
+ expireDiff: z.number().int().min(0),
|
|
|
|
|
+ externalTrafficInformEnable: z.boolean(),
|
|
|
|
|
+ externalTrafficInformURI: z.string(),
|
|
|
|
|
+ hasApiToken: z.boolean(),
|
|
|
|
|
+ hasLdapPassword: z.boolean(),
|
|
|
|
|
+ hasNordSecret: z.boolean(),
|
|
|
|
|
+ hasTgBotToken: z.boolean(),
|
|
|
|
|
+ hasTwoFactorToken: z.boolean(),
|
|
|
|
|
+ hasWarpSecret: z.boolean(),
|
|
|
|
|
+ ldapAutoCreate: z.boolean(),
|
|
|
|
|
+ ldapAutoDelete: z.boolean(),
|
|
|
|
|
+ ldapBaseDN: z.string(),
|
|
|
|
|
+ ldapBindDN: z.string(),
|
|
|
|
|
+ ldapDefaultExpiryDays: z.number().int().min(0),
|
|
|
|
|
+ ldapDefaultLimitIP: z.number().int().min(0),
|
|
|
|
|
+ ldapDefaultTotalGB: z.number().int().min(0),
|
|
|
|
|
+ ldapEnable: z.boolean(),
|
|
|
|
|
+ ldapFlagField: z.string(),
|
|
|
|
|
+ ldapHost: z.string(),
|
|
|
|
|
+ ldapInboundTags: z.string(),
|
|
|
|
|
+ ldapInvertFlag: z.boolean(),
|
|
|
|
|
+ ldapPassword: z.string(),
|
|
|
|
|
+ ldapPort: z.number().int().min(0).max(65535),
|
|
|
|
|
+ ldapSyncCron: z.string(),
|
|
|
|
|
+ ldapTruthyValues: z.string(),
|
|
|
|
|
+ ldapUseTLS: z.boolean(),
|
|
|
|
|
+ ldapUserAttr: z.string(),
|
|
|
|
|
+ ldapUserFilter: z.string(),
|
|
|
|
|
+ ldapVlessField: z.string(),
|
|
|
|
|
+ pageSize: z.number().int().min(1).max(1000),
|
|
|
|
|
+ remarkModel: z.string(),
|
|
|
|
|
+ restartXrayOnClientDisable: z.boolean(),
|
|
|
|
|
+ sessionMaxAge: z.number().int().min(0).max(525600),
|
|
|
|
|
+ subAnnounce: z.string(),
|
|
|
|
|
+ subCertFile: z.string(),
|
|
|
|
|
+ subClashEnable: z.boolean(),
|
|
|
|
|
+ subClashPath: z.string(),
|
|
|
|
|
+ subClashURI: z.string(),
|
|
|
|
|
+ subDomain: z.string(),
|
|
|
|
|
+ subEmailInRemark: z.boolean(),
|
|
|
|
|
+ subEnable: z.boolean(),
|
|
|
|
|
+ subEnableRouting: z.boolean(),
|
|
|
|
|
+ subEncrypt: z.boolean(),
|
|
|
|
|
+ subJsonEnable: z.boolean(),
|
|
|
|
|
+ subJsonFragment: z.string(),
|
|
|
|
|
+ subJsonMux: z.string(),
|
|
|
|
|
+ subJsonNoises: z.string(),
|
|
|
|
|
+ subJsonPath: z.string(),
|
|
|
|
|
+ subJsonRules: z.string(),
|
|
|
|
|
+ subJsonURI: z.string(),
|
|
|
|
|
+ subKeyFile: z.string(),
|
|
|
|
|
+ subListen: z.string(),
|
|
|
|
|
+ subPath: z.string(),
|
|
|
|
|
+ subPort: z.number().int().min(1).max(65535),
|
|
|
|
|
+ subProfileUrl: z.string(),
|
|
|
|
|
+ subRoutingRules: z.string(),
|
|
|
|
|
+ subShowInfo: z.boolean(),
|
|
|
|
|
+ subSupportUrl: z.string(),
|
|
|
|
|
+ subTitle: z.string(),
|
|
|
|
|
+ subURI: z.string(),
|
|
|
|
|
+ subUpdates: z.number().int().min(0).max(525600),
|
|
|
|
|
+ tgBotAPIServer: z.string(),
|
|
|
|
|
+ tgBotBackup: z.boolean(),
|
|
|
|
|
+ tgBotChatId: z.string(),
|
|
|
|
|
+ tgBotEnable: z.boolean(),
|
|
|
|
|
+ tgBotLoginNotify: z.boolean(),
|
|
|
|
|
+ tgBotProxy: z.string(),
|
|
|
|
|
+ tgBotToken: z.string(),
|
|
|
|
|
+ tgCpu: z.number().int().min(0).max(100),
|
|
|
|
|
+ tgLang: z.string(),
|
|
|
|
|
+ tgRunTime: z.string(),
|
|
|
|
|
+ timeLocation: z.string(),
|
|
|
|
|
+ trafficDiff: z.number().int().min(0).max(100),
|
|
|
|
|
+ trustedProxyCIDRs: z.string(),
|
|
|
|
|
+ twoFactorEnable: z.boolean(),
|
|
|
|
|
+ twoFactorToken: z.string(),
|
|
|
|
|
+ webBasePath: z.string(),
|
|
|
|
|
+ webCertFile: z.string(),
|
|
|
|
|
+ webDomain: z.string(),
|
|
|
|
|
+ webKeyFile: z.string(),
|
|
|
|
|
+ webListen: z.string(),
|
|
|
|
|
+ webPort: z.number().int().min(1).max(65535),
|
|
|
|
|
+});
|
|
|
|
|
+export type AllSettingView = z.infer<typeof AllSettingViewSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ApiTokenSchema = z.object({
|
|
|
|
|
+ createdAt: z.number().int(),
|
|
|
|
|
+ enabled: z.boolean(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ name: z.string(),
|
|
|
|
|
+ token: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type ApiToken = z.infer<typeof ApiTokenSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ClientSchema = z.object({
|
|
|
|
|
+ auth: z.string().optional(),
|
|
|
|
|
+ comment: z.string(),
|
|
|
|
|
+ created_at: z.number().int().optional(),
|
|
|
|
|
+ email: z.string(),
|
|
|
|
|
+ enable: z.boolean(),
|
|
|
|
|
+ expiryTime: z.number().int(),
|
|
|
|
|
+ flow: z.string().optional(),
|
|
|
|
|
+ id: z.string().optional(),
|
|
|
|
|
+ limitIp: z.number().int(),
|
|
|
|
|
+ password: z.string().optional(),
|
|
|
|
|
+ reset: z.number().int(),
|
|
|
|
|
+ reverse: z.lazy(() => ClientReverseSchema).nullable().optional(),
|
|
|
|
|
+ security: z.string(),
|
|
|
|
|
+ subId: z.string(),
|
|
|
|
|
+ tgId: z.number().int(),
|
|
|
|
|
+ totalGB: z.number().int(),
|
|
|
|
|
+ updated_at: z.number().int().optional(),
|
|
|
|
|
+});
|
|
|
|
|
+export type Client = z.infer<typeof ClientSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ClientInboundSchema = z.object({
|
|
|
|
|
+ clientId: z.number().int(),
|
|
|
|
|
+ createdAt: z.number().int(),
|
|
|
|
|
+ flowOverride: z.string(),
|
|
|
|
|
+ inboundId: z.number().int(),
|
|
|
|
|
+});
|
|
|
|
|
+export type ClientInbound = z.infer<typeof ClientInboundSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ClientRecordSchema = z.object({
|
|
|
|
|
+ auth: z.string(),
|
|
|
|
|
+ comment: z.string(),
|
|
|
|
|
+ createdAt: z.number().int(),
|
|
|
|
|
+ email: z.string(),
|
|
|
|
|
+ enable: z.boolean(),
|
|
|
|
|
+ expiryTime: z.number().int(),
|
|
|
|
|
+ flow: z.string(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ limitIp: z.number().int(),
|
|
|
|
|
+ password: z.string(),
|
|
|
|
|
+ reset: z.number().int(),
|
|
|
|
|
+ reverse: z.unknown(),
|
|
|
|
|
+ security: z.string(),
|
|
|
|
|
+ subId: z.string(),
|
|
|
|
|
+ tgId: z.number().int(),
|
|
|
|
|
+ totalGB: z.number().int(),
|
|
|
|
|
+ updatedAt: z.number().int(),
|
|
|
|
|
+ uuid: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type ClientRecord = z.infer<typeof ClientRecordSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ClientReverseSchema = z.object({
|
|
|
|
|
+ tag: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type ClientReverse = z.infer<typeof ClientReverseSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const ClientTrafficSchema = z.object({
|
|
|
|
|
+ down: z.number().int(),
|
|
|
|
|
+ email: z.string(),
|
|
|
|
|
+ enable: z.boolean(),
|
|
|
|
|
+ expiryTime: z.number().int(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ inboundId: z.number().int(),
|
|
|
|
|
+ lastOnline: z.number().int(),
|
|
|
|
|
+ reset: z.number().int(),
|
|
|
|
|
+ subId: z.string(),
|
|
|
|
|
+ total: z.number().int(),
|
|
|
|
|
+ up: z.number().int(),
|
|
|
|
|
+ uuid: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type ClientTraffic = z.infer<typeof ClientTrafficSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const CustomGeoResourceSchema = z.object({
|
|
|
|
|
+ alias: z.string(),
|
|
|
|
|
+ createdAt: z.number().int(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ lastModified: z.string(),
|
|
|
|
|
+ lastUpdatedAt: z.number().int(),
|
|
|
|
|
+ localPath: z.string(),
|
|
|
|
|
+ type: z.string(),
|
|
|
|
|
+ updatedAt: z.number().int(),
|
|
|
|
|
+ url: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type CustomGeoResource = z.infer<typeof CustomGeoResourceSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const FallbackParentInfoSchema = z.object({
|
|
|
|
|
+ masterId: z.number().int(),
|
|
|
|
|
+ path: z.string().optional(),
|
|
|
|
|
+});
|
|
|
|
|
+export type FallbackParentInfo = z.infer<typeof FallbackParentInfoSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const HistoryOfSeedersSchema = z.object({
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ seederName: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type HistoryOfSeeders = z.infer<typeof HistoryOfSeedersSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const InboundSchema = z.object({
|
|
|
|
|
+ clientStats: z.array(z.lazy(() => ClientTrafficSchema)),
|
|
|
|
|
+ down: z.number().int(),
|
|
|
|
|
+ enable: z.boolean(),
|
|
|
|
|
+ expiryTime: z.number().int(),
|
|
|
|
|
+ fallbackParent: z.lazy(() => FallbackParentInfoSchema).nullable().optional(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ lastTrafficResetTime: z.number().int(),
|
|
|
|
|
+ listen: z.string(),
|
|
|
|
|
+ nodeId: z.number().int().nullable().optional(),
|
|
|
|
|
+ port: z.number().int().min(1).max(65535),
|
|
|
|
|
+ protocol: z.enum(['vmess', 'vless', 'trojan', 'shadowsocks', 'wireguard', 'hysteria', 'hysteria2', 'http', 'mixed', 'tunnel']),
|
|
|
|
|
+ remark: z.string(),
|
|
|
|
|
+ settings: z.unknown(),
|
|
|
|
|
+ sniffing: z.unknown(),
|
|
|
|
|
+ streamSettings: z.unknown(),
|
|
|
|
|
+ tag: z.string(),
|
|
|
|
|
+ total: z.number().int(),
|
|
|
|
|
+ trafficReset: z.enum(['never', 'hourly', 'daily', 'weekly', 'monthly']),
|
|
|
|
|
+ up: z.number().int(),
|
|
|
|
|
+});
|
|
|
|
|
+export type Inbound = z.infer<typeof InboundSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const InboundClientIpsSchema = z.object({
|
|
|
|
|
+ clientEmail: z.string(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ ips: z.unknown(),
|
|
|
|
|
+});
|
|
|
|
|
+export type InboundClientIps = z.infer<typeof InboundClientIpsSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const InboundFallbackSchema = z.object({
|
|
|
|
|
+ alpn: z.string(),
|
|
|
|
|
+ childId: z.number().int(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ masterId: z.number().int(),
|
|
|
|
|
+ name: z.string(),
|
|
|
|
|
+ path: z.string(),
|
|
|
|
|
+ sortOrder: z.number().int(),
|
|
|
|
|
+ xver: z.number().int(),
|
|
|
|
|
+});
|
|
|
|
|
+export type InboundFallback = z.infer<typeof InboundFallbackSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const MsgSchema = z.object({
|
|
|
|
|
+ msg: z.string(),
|
|
|
|
|
+ obj: z.unknown(),
|
|
|
|
|
+ success: z.boolean(),
|
|
|
|
|
+});
|
|
|
|
|
+export type Msg = z.infer<typeof MsgSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const NodeSchema = z.object({
|
|
|
|
|
+ address: z.string(),
|
|
|
|
|
+ allowPrivateAddress: z.boolean(),
|
|
|
|
|
+ apiToken: z.string(),
|
|
|
|
|
+ basePath: z.string(),
|
|
|
|
|
+ clientCount: z.number().int(),
|
|
|
|
|
+ cpuPct: z.number(),
|
|
|
|
|
+ createdAt: z.number().int(),
|
|
|
|
|
+ depletedCount: z.number().int(),
|
|
|
|
|
+ enable: z.boolean(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ inboundCount: z.number().int(),
|
|
|
|
|
+ lastError: z.string(),
|
|
|
|
|
+ lastHeartbeat: z.number().int(),
|
|
|
|
|
+ latencyMs: z.number().int(),
|
|
|
|
|
+ memPct: z.number(),
|
|
|
|
|
+ name: z.string(),
|
|
|
|
|
+ onlineCount: z.number().int(),
|
|
|
|
|
+ panelVersion: z.string(),
|
|
|
|
|
+ port: z.number().int().min(1).max(65535),
|
|
|
|
|
+ remark: z.string(),
|
|
|
|
|
+ scheme: z.enum(['http', 'https']),
|
|
|
|
|
+ status: z.string(),
|
|
|
|
|
+ updatedAt: z.number().int(),
|
|
|
|
|
+ uptimeSecs: z.number().int(),
|
|
|
|
|
+ xrayVersion: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type Node = z.infer<typeof NodeSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const OutboundTrafficsSchema = z.object({
|
|
|
|
|
+ down: z.number().int(),
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ tag: z.string(),
|
|
|
|
|
+ total: z.number().int(),
|
|
|
|
|
+ up: z.number().int(),
|
|
|
|
|
+});
|
|
|
|
|
+export type OutboundTraffics = z.infer<typeof OutboundTrafficsSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const SettingSchema = z.object({
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ key: z.string(),
|
|
|
|
|
+ value: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type Setting = z.infer<typeof SettingSchema>;
|
|
|
|
|
+
|
|
|
|
|
+export const UserSchema = z.object({
|
|
|
|
|
+ id: z.number().int(),
|
|
|
|
|
+ password: z.string(),
|
|
|
|
|
+ username: z.string(),
|
|
|
|
|
+});
|
|
|
|
|
+export type User = z.infer<typeof UserSchema>;
|
|
|
|
|
+
|