feat: add BaseHysteriaUser schema and related handling in add-user and add-users commands

This commit is contained in:
kastov 2026-03-21 20:40:41 +03:00
parent 772790811c
commit 20c1dfe2fa
No known key found for this signature in database
GPG key ID: 1B27BE29057F4C90
6 changed files with 47 additions and 6 deletions

View file

@ -46,6 +46,13 @@ export namespace AddUserCommand {
password: z.string(),
});
const BaseHysteriaUser = z.object({
type: z.literal('hysteria'),
tag: z.string(),
username: z.string(),
password: z.string(),
});
export const RequestSchema = z.object({
data: z.array(
z.discriminatedUnion('type', [
@ -53,6 +60,7 @@ export namespace AddUserCommand {
BaseVlessUser,
BaseShadowsocksUser,
BaseShadowsocks22User,
BaseHysteriaUser,
]),
),
hashData: z.object({

View file

@ -26,6 +26,13 @@ export namespace AddUsersCommand {
tag: z.string(),
});
const BaseHysteriaUser = z.object({
type: z.literal('hysteria'),
tag: z.string(),
username: z.string(),
password: z.string(),
});
export const RequestSchema = z.object({
affectedInboundTags: z.array(z.string()),
users: z.array(
@ -36,6 +43,7 @@ export namespace AddUsersCommand {
BaseVlessUser,
BaseShadowsocksUser,
BaseShadowsocks22User,
BaseHysteriaUser,
]),
),

View file

@ -1,6 +1,6 @@
{
"name": "@remnawave/node-contract",
"version": "2.6.14",
"version": "2.6.15",
"description": "A node-contract library for Remnawave Panel",
"main": "build/index.js",
"types": "build/index.d.ts",

8
package-lock.json generated
View file

@ -24,7 +24,7 @@
"@remnawave/hashed-set": "^0.0.4",
"@remnawave/node-plugins": "0.4.4",
"@remnawave/supervisord-nestjs": "0.3.1",
"@remnawave/xtls-sdk": "0.11.1",
"@remnawave/xtls-sdk": "0.12.1",
"@remnawave/xtls-sdk-nestjs": "0.6.1",
"compression": "^1.8.1",
"enhanced-ms": "^4.2.0",
@ -2089,9 +2089,9 @@
}
},
"node_modules/@remnawave/xtls-sdk": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/@remnawave/xtls-sdk/-/xtls-sdk-0.11.1.tgz",
"integrity": "sha512-0m4k6syy0yrh6snR0vvDuNjfq5WLJAT/XqzTn2SOV7EvuCY6YhGE/OGBRs6xZ5DLBJDbsq+VRLKIwVj/ifGDUw==",
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/@remnawave/xtls-sdk/-/xtls-sdk-0.12.1.tgz",
"integrity": "sha512-P+Oy/G3MhgMNnFhp78Fp4vahUgTN4KFTuFaN6s59XUBEIRp36QNsyrfRoKaVSXPZ9R65mDbvg369byYjJAqHew==",
"license": "AGPL-3.0-only",
"dependencies": {
"@bufbuild/protobuf": "^2.11.0",

View file

@ -47,7 +47,7 @@
"@nestjs/cqrs": "11.0.3",
"@remnawave/node-plugins": "0.4.4",
"@remnawave/supervisord-nestjs": "0.3.1",
"@remnawave/xtls-sdk": "0.11.1",
"@remnawave/xtls-sdk": "0.12.1",
"@remnawave/xtls-sdk-nestjs": "0.6.1",
"compression": "^1.8.1",
"enhanced-ms": "^4.2.0",

View file

@ -148,6 +148,23 @@ export class HandlerService implements OnModuleInit {
);
}
response.push(tempRes);
break;
case 'hysteria':
tempRes = await this.xtlsApi.handler.addHysteriaUser({
tag: item.tag,
username: item.username,
uuid: item.password,
level: 0,
});
if (tempRes.isOk) {
await this.internalService.addUserToInbound(
item.tag,
hashData.vlessUuid,
);
}
response.push(tempRes);
break;
}
}
@ -325,6 +342,14 @@ export class HandlerService implements OnModuleInit {
);
}
break;
case 'hysteria':
tempRes = await this.xtlsApi.handler.addHysteriaUser({
tag: item.tag,
username: user.userData.userId,
uuid: user.userData.vlessUuid,
level: 0,
});
break;
}
}
}