@remnawave/backend-contract 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/controllers/api-tokens.ts +7 -0
- package/api/controllers/auth.ts +5 -0
- package/api/controllers/hosts.ts +9 -0
- package/api/controllers/inbounds.ts +5 -0
- package/api/controllers/index.ts +9 -0
- package/api/controllers/keygen.ts +5 -0
- package/api/controllers/nodes.ts +14 -0
- package/api/controllers/subscription.ts +6 -0
- package/api/controllers/users.ts +13 -0
- package/api/controllers/xray.ts +6 -0
- package/api/index.ts +2 -0
- package/api/routes.ts +73 -0
- package/build/api/controllers/api-tokens.js +9 -0
- package/build/api/controllers/auth.js +7 -0
- package/build/api/controllers/hosts.js +11 -0
- package/build/api/controllers/inbounds.js +7 -0
- package/build/api/controllers/index.js +25 -0
- package/build/api/controllers/keygen.js +7 -0
- package/build/api/controllers/nodes.js +15 -0
- package/build/api/controllers/subscription.js +8 -0
- package/build/api/controllers/users.js +15 -0
- package/build/api/controllers/xray.js +8 -0
- package/build/api/index.js +18 -0
- package/build/api/routes.js +81 -0
- package/build/commands/api-tokens/create.command.js +19 -0
- package/build/commands/api-tokens/delete.command.js +15 -0
- package/build/commands/api-tokens/find.command.js +13 -0
- package/build/commands/api-tokens/index.js +19 -0
- package/build/commands/auth/index.js +17 -0
- package/build/commands/auth/login.command.js +18 -0
- package/build/commands/hosts/create.command.js +50 -0
- package/build/commands/hosts/delete.command.js +17 -0
- package/build/commands/hosts/index.js +18 -0
- package/build/commands/inbounds/get-inbounds.command.js +13 -0
- package/build/commands/inbounds/index.js +17 -0
- package/build/commands/index.js +25 -0
- package/build/commands/keygen/get-pubkey.command.js +14 -0
- package/build/commands/keygen/index.js +17 -0
- package/build/commands/nodes/create.command.js +36 -0
- package/build/commands/nodes/delete.command.js +17 -0
- package/build/commands/nodes/disable.command.js +16 -0
- package/build/commands/nodes/enable.command.js +16 -0
- package/build/commands/nodes/get-all.command.js +13 -0
- package/build/commands/nodes/get-one.command.js +16 -0
- package/build/commands/nodes/index.js +25 -0
- package/build/commands/nodes/restart-all.command.js +14 -0
- package/build/commands/nodes/restart.command.js +17 -0
- package/build/commands/nodes/update.command.js +38 -0
- package/build/commands/subscription/get-subscription-by-short-uuid.command.js +12 -0
- package/build/commands/subscription/get-subscription-info-by-short-uuid.command.js +28 -0
- package/build/commands/subscription/index.js +18 -0
- package/build/commands/users/create-user.command.js +94 -0
- package/build/commands/users/delete-user.command.js +17 -0
- package/build/commands/users/disable-user.command.ts.js +16 -0
- package/build/commands/users/enable-user.command.js +16 -0
- package/build/commands/users/get-all-users.command.js +23 -0
- package/build/commands/users/get-user-by-short-uuid.command.js +16 -0
- package/build/commands/users/get-user-by-subscription-uuid.command.js +16 -0
- package/build/commands/users/get-user-by-uuid.command.js +16 -0
- package/build/commands/users/index.js +25 -0
- package/build/commands/users/revoke-user-subscription.command.js +16 -0
- package/build/commands/xray/get-config.command.js +14 -0
- package/build/commands/xray/index.js +17 -0
- package/build/constants/errors/errors.js +236 -0
- package/build/constants/errors/index.js +17 -0
- package/build/constants/hosts/alpn.js +9 -0
- package/build/constants/hosts/fingerprints.js +15 -0
- package/build/constants/hosts/index.js +18 -0
- package/build/constants/index.js +22 -0
- package/build/constants/nodes/cycle/cycle.js +8 -0
- package/build/constants/nodes/cycle/index.js +17 -0
- package/build/constants/nodes/index.js +18 -0
- package/build/constants/nodes/status/index.js +17 -0
- package/build/constants/nodes/status/status.constant.js +9 -0
- package/build/constants/roles/index.js +17 -0
- package/build/constants/roles/role.js +7 -0
- package/build/constants/templates/index.js +18 -0
- package/build/constants/templates/template-keys.js +4 -0
- package/build/constants/templates/user-statuses.js +9 -0
- package/build/constants/users/index.js +18 -0
- package/build/constants/users/reset-periods/index.js +17 -0
- package/build/constants/users/reset-periods/reset-periods.constant.js +11 -0
- package/build/constants/users/status/index.js +17 -0
- package/build/constants/users/status/status.constant.js +10 -0
- package/build/index.js +20 -0
- package/build/models/api-tokens.schema.js +12 -0
- package/build/models/auth.schema.js +7 -0
- package/build/models/hosts.schema.js +19 -0
- package/build/models/inbounds.schema.js +9 -0
- package/build/models/index.js +22 -0
- package/build/models/nodes.schema.js +28 -0
- package/build/models/users.schema.js +34 -0
- package/commands/api-tokens/create.command.ts +22 -0
- package/commands/api-tokens/delete.command.ts +18 -0
- package/commands/api-tokens/find.command.ts +13 -0
- package/commands/api-tokens/index.ts +3 -0
- package/commands/auth/index.ts +1 -0
- package/commands/auth/login.command.ts +20 -0
- package/commands/hosts/create.command.ts +52 -0
- package/commands/hosts/delete.command.ts +20 -0
- package/commands/hosts/index.ts +2 -0
- package/commands/inbounds/get-inbounds.command.ts +13 -0
- package/commands/inbounds/index.ts +1 -0
- package/commands/index.ts +9 -0
- package/commands/keygen/get-pubkey.command.ts +14 -0
- package/commands/keygen/index.ts +1 -0
- package/commands/nodes/create.command.ts +39 -0
- package/commands/nodes/delete.command.ts +20 -0
- package/commands/nodes/disable.command.ts +19 -0
- package/commands/nodes/enable.command.ts +19 -0
- package/commands/nodes/get-all.command.ts +13 -0
- package/commands/nodes/get-one.command.ts +19 -0
- package/commands/nodes/index.ts +9 -0
- package/commands/nodes/restart-all.command.ts +13 -0
- package/commands/nodes/restart.command.ts +20 -0
- package/commands/nodes/update.command.ts +41 -0
- package/commands/subscription/get-subscription-by-short-uuid.command.ts +12 -0
- package/commands/subscription/get-subscription-info-by-short-uuid.command.ts +31 -0
- package/commands/subscription/index.ts +2 -0
- package/commands/users/create-user.command.ts +103 -0
- package/commands/users/delete-user.command.ts +19 -0
- package/commands/users/disable-user.command.ts.ts +18 -0
- package/commands/users/enable-user.command.ts +19 -0
- package/commands/users/get-all-users.command.ts +26 -0
- package/commands/users/get-user-by-short-uuid.command.ts +19 -0
- package/commands/users/get-user-by-subscription-uuid.command.ts +19 -0
- package/commands/users/get-user-by-uuid.command.ts +19 -0
- package/commands/users/index.ts +9 -0
- package/commands/users/revoke-user-subscription.command.ts +19 -0
- package/commands/xray/get-config.command.ts +12 -0
- package/commands/xray/index.ts +1 -0
- package/constants/errors/errors.ts +233 -0
- package/constants/errors/index.ts +1 -0
- package/constants/hosts/alpn.ts +8 -0
- package/constants/hosts/fingerprints.ts +14 -0
- package/constants/hosts/index.ts +2 -0
- package/constants/index.ts +6 -0
- package/constants/nodes/cycle/cycle.ts +7 -0
- package/constants/nodes/cycle/index.ts +1 -0
- package/constants/nodes/index.ts +2 -0
- package/constants/nodes/status/index.ts +1 -0
- package/constants/nodes/status/status.constant.ts +8 -0
- package/constants/roles/index.ts +1 -0
- package/constants/roles/role.ts +7 -0
- package/constants/templates/index.ts +2 -0
- package/constants/templates/template-keys.ts +2 -0
- package/constants/templates/user-statuses.ts +6 -0
- package/constants/users/index.ts +2 -0
- package/constants/users/reset-periods/index.ts +1 -0
- package/constants/users/reset-periods/reset-periods.constant.ts +10 -0
- package/constants/users/status/index.ts +1 -0
- package/constants/users/status/status.constant.ts +9 -0
- package/index.ts +4 -0
- package/models/api-tokens.schema.ts +11 -0
- package/models/auth.schema.ts +5 -0
- package/models/hosts.schema.ts +17 -0
- package/models/inbounds.schema.ts +7 -0
- package/models/index.ts +6 -0
- package/models/nodes.schema.ts +28 -0
- package/models/users.schema.ts +38 -0
- package/package.json +16 -0
- package/tsconfig.json +103 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
export namespace DeleteUserCommand {
|
|
4
|
+
export const url = REST_API.USERS.DELETE_USER;
|
|
5
|
+
|
|
6
|
+
export const RequestSchema = z.object({
|
|
7
|
+
uuid: z.string().uuid(),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
11
|
+
|
|
12
|
+
export const ResponseSchema = z.object({
|
|
13
|
+
response: z.object({
|
|
14
|
+
isDeleted: z.boolean(),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
export namespace DisableUserCommand {
|
|
5
|
+
export const url = REST_API.USERS.DISABLE_USER;
|
|
6
|
+
|
|
7
|
+
export const RequestSchema = z.object({
|
|
8
|
+
uuid: z.string().uuid(),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
12
|
+
|
|
13
|
+
export const ResponseSchema = z.object({
|
|
14
|
+
response: UsersSchema,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace EnableUserCommand {
|
|
6
|
+
export const url = REST_API.USERS.ENABLE_USER;
|
|
7
|
+
|
|
8
|
+
export const RequestSchema = z.object({
|
|
9
|
+
uuid: z.string().uuid(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.object({
|
|
15
|
+
response: UsersSchema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace GetAllUsersCommand {
|
|
6
|
+
export const url = REST_API.USERS.GET_ALL;
|
|
7
|
+
|
|
8
|
+
export const RequestQuerySchema = z.object({
|
|
9
|
+
limit: z
|
|
10
|
+
.string()
|
|
11
|
+
.default('10')
|
|
12
|
+
.transform((val) => parseInt(val)),
|
|
13
|
+
offset: z
|
|
14
|
+
.string()
|
|
15
|
+
.default('0')
|
|
16
|
+
.transform((val) => parseInt(val)),
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export type RequestQuery = z.infer<typeof RequestQuerySchema>;
|
|
20
|
+
|
|
21
|
+
export const ResponseSchema = z.object({
|
|
22
|
+
response: z.array(UsersSchema),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace GetUserByShortUuidCommand {
|
|
6
|
+
export const url = REST_API.USERS.GET_BY_SHORT_UUID;
|
|
7
|
+
|
|
8
|
+
export const RequestSchema = z.object({
|
|
9
|
+
shortUuid: z.string(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.object({
|
|
15
|
+
response: UsersSchema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace GetUserBySubscriptionUuidCommand {
|
|
6
|
+
export const url = REST_API.USERS.GET_BY_SUBSCRIPTION_UUID;
|
|
7
|
+
|
|
8
|
+
export const RequestSchema = z.object({
|
|
9
|
+
subscriptionUuid: z.string(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.object({
|
|
15
|
+
response: UsersSchema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace GetUserByUuidCommand {
|
|
6
|
+
export const url = REST_API.USERS.GET_BY_UUID;
|
|
7
|
+
|
|
8
|
+
export const RequestSchema = z.object({
|
|
9
|
+
uuid: z.string().uuid(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.object({
|
|
15
|
+
response: UsersSchema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './create-user.command';
|
|
2
|
+
export * from './delete-user.command';
|
|
3
|
+
export * from './disable-user.command.ts';
|
|
4
|
+
export * from './enable-user.command';
|
|
5
|
+
export * from './get-all-users.command';
|
|
6
|
+
export * from './get-user-by-short-uuid.command';
|
|
7
|
+
export * from './get-user-by-subscription-uuid.command';
|
|
8
|
+
export * from './get-user-by-uuid.command';
|
|
9
|
+
export * from './revoke-user-subscription.command';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
import { UsersSchema } from '../../models/users.schema';
|
|
4
|
+
|
|
5
|
+
export namespace RevokeUserSubscriptionCommand {
|
|
6
|
+
export const url = REST_API.USERS.REVOKE_SUBSCRIPTION;
|
|
7
|
+
|
|
8
|
+
export const RequestSchema = z.object({
|
|
9
|
+
uuid: z.string().uuid(),
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.object({
|
|
15
|
+
response: UsersSchema,
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { REST_API } from '../../api';
|
|
3
|
+
export namespace GetXrayConfigCommand {
|
|
4
|
+
export const url = REST_API.XRAY.GET_CONFIG;
|
|
5
|
+
export const ResponseSchema = z.object({
|
|
6
|
+
response: z.object({
|
|
7
|
+
config: z.record(z.any()),
|
|
8
|
+
}),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './get-config.command';
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
export const ERRORS = {
|
|
2
|
+
INTERNAL_SERVER_ERROR: { code: 'A001', message: 'Server error', httpCode: 500 },
|
|
3
|
+
LOGIN_ERROR: { code: 'A002', message: 'Login error', httpCode: 500 },
|
|
4
|
+
UNAUTHORIZED: { code: 'A003', message: 'Unauthorized', httpCode: 401 },
|
|
5
|
+
FORBIDDEN_ROLE_ERROR: { code: 'A004', message: 'Forbidden role error', httpCode: 403 },
|
|
6
|
+
CREATE_API_TOKEN_ERROR: { code: 'A005', message: 'Create API token error', httpCode: 500 },
|
|
7
|
+
DELETE_API_TOKEN_ERROR: { code: 'A006', message: 'Delete API token error', httpCode: 500 },
|
|
8
|
+
REQUESTED_TOKEN_NOT_FOUND: {
|
|
9
|
+
code: 'A007',
|
|
10
|
+
message: 'Requested token not found',
|
|
11
|
+
httpCode: 404,
|
|
12
|
+
},
|
|
13
|
+
FIND_ALL_API_TOKENS_ERROR: {
|
|
14
|
+
code: 'A008',
|
|
15
|
+
message: 'Find all API tokens error',
|
|
16
|
+
httpCode: 500,
|
|
17
|
+
},
|
|
18
|
+
GET_PUBLIC_KEY_ERROR: {
|
|
19
|
+
code: 'A009',
|
|
20
|
+
message: 'Get public key error',
|
|
21
|
+
httpCode: 500,
|
|
22
|
+
},
|
|
23
|
+
ENABLE_NODE_ERROR: {
|
|
24
|
+
code: 'A010',
|
|
25
|
+
message: 'Enable node error',
|
|
26
|
+
httpCode: 500,
|
|
27
|
+
},
|
|
28
|
+
NODE_NOT_FOUND: {
|
|
29
|
+
code: 'A011',
|
|
30
|
+
message: 'Node not found',
|
|
31
|
+
httpCode: 404,
|
|
32
|
+
},
|
|
33
|
+
CONFIG_NOT_FOUND: {
|
|
34
|
+
code: 'A012',
|
|
35
|
+
message: 'Configuration not found',
|
|
36
|
+
httpCode: 404,
|
|
37
|
+
},
|
|
38
|
+
UPDATE_CONFIG_ERROR: {
|
|
39
|
+
code: 'A013',
|
|
40
|
+
message: 'Error updating configuration',
|
|
41
|
+
httpCode: 500,
|
|
42
|
+
},
|
|
43
|
+
GET_CONFIG_ERROR: {
|
|
44
|
+
code: 'A014',
|
|
45
|
+
message: 'Error retrieving configuration',
|
|
46
|
+
httpCode: 500,
|
|
47
|
+
},
|
|
48
|
+
DELETE_MANY_INBOUNDS_ERROR: {
|
|
49
|
+
code: 'A015',
|
|
50
|
+
message: 'Delete many inbounds error',
|
|
51
|
+
httpCode: 500,
|
|
52
|
+
},
|
|
53
|
+
CREATE_MANY_INBOUNDS_ERROR: {
|
|
54
|
+
code: 'A016',
|
|
55
|
+
message: 'Create many inbounds error',
|
|
56
|
+
httpCode: 500,
|
|
57
|
+
},
|
|
58
|
+
FIND_ALL_INBOUNDS_ERROR: {
|
|
59
|
+
code: 'A017',
|
|
60
|
+
message: 'Find all inbounds error',
|
|
61
|
+
httpCode: 500,
|
|
62
|
+
},
|
|
63
|
+
CREATE_USER_ERROR: {
|
|
64
|
+
code: 'A018',
|
|
65
|
+
message: 'Failed to create user',
|
|
66
|
+
httpCode: 500,
|
|
67
|
+
},
|
|
68
|
+
USER_USERNAME_ALREADY_EXISTS: {
|
|
69
|
+
code: 'A019',
|
|
70
|
+
message: 'User username already exists',
|
|
71
|
+
httpCode: 400,
|
|
72
|
+
},
|
|
73
|
+
USER_SHORT_UUID_ALREADY_EXISTS: {
|
|
74
|
+
code: 'A020',
|
|
75
|
+
message: 'User short UUID already exists',
|
|
76
|
+
httpCode: 400,
|
|
77
|
+
},
|
|
78
|
+
USER_SUBSCRIPTION_UUID_ALREADY_EXISTS: {
|
|
79
|
+
code: 'A021',
|
|
80
|
+
message: 'User subscription UUID already exists',
|
|
81
|
+
httpCode: 400,
|
|
82
|
+
},
|
|
83
|
+
CREATE_USER_WITH_INBOUNDS_ERROR: {
|
|
84
|
+
code: 'A022',
|
|
85
|
+
message: 'User creation successful, but inbound creation failed. User not created.',
|
|
86
|
+
httpCode: 500,
|
|
87
|
+
},
|
|
88
|
+
CANT_GET_CREATED_USER_WITH_INBOUNDS: {
|
|
89
|
+
code: 'A023',
|
|
90
|
+
message: 'User creation successful, but failed to get created user with inbounds.',
|
|
91
|
+
httpCode: 500,
|
|
92
|
+
},
|
|
93
|
+
GET_ALL_USERS_ERROR: {
|
|
94
|
+
code: 'A024',
|
|
95
|
+
message: 'Get all users error',
|
|
96
|
+
httpCode: 500,
|
|
97
|
+
},
|
|
98
|
+
USER_NOT_FOUND: {
|
|
99
|
+
code: 'A025',
|
|
100
|
+
message: 'User not found',
|
|
101
|
+
httpCode: 404,
|
|
102
|
+
},
|
|
103
|
+
GET_USER_BY_ERROR: {
|
|
104
|
+
code: 'A026',
|
|
105
|
+
message: 'Get user by error',
|
|
106
|
+
httpCode: 500,
|
|
107
|
+
},
|
|
108
|
+
REVOKE_USER_SUBSCRIPTION_ERROR: {
|
|
109
|
+
code: 'A027',
|
|
110
|
+
message: 'Revoke user subscription error',
|
|
111
|
+
httpCode: 500,
|
|
112
|
+
},
|
|
113
|
+
DISABLE_USER_ERROR: {
|
|
114
|
+
code: 'A028',
|
|
115
|
+
message: 'Disable user error',
|
|
116
|
+
httpCode: 500,
|
|
117
|
+
},
|
|
118
|
+
USER_ALREADY_DISABLED: {
|
|
119
|
+
code: 'A029',
|
|
120
|
+
message: 'User already disabled',
|
|
121
|
+
httpCode: 400,
|
|
122
|
+
},
|
|
123
|
+
USER_ALREADY_ENABLED: {
|
|
124
|
+
code: 'A030',
|
|
125
|
+
message: 'User already enabled',
|
|
126
|
+
httpCode: 400,
|
|
127
|
+
},
|
|
128
|
+
ENABLE_USER_ERROR: {
|
|
129
|
+
code: 'A031',
|
|
130
|
+
message: 'Enable user error',
|
|
131
|
+
httpCode: 500,
|
|
132
|
+
},
|
|
133
|
+
CREATE_NODE_ERROR: {
|
|
134
|
+
code: 'A032',
|
|
135
|
+
message: 'Create node error',
|
|
136
|
+
httpCode: 500,
|
|
137
|
+
},
|
|
138
|
+
NODE_NAME_ALREADY_EXISTS: {
|
|
139
|
+
code: 'A033',
|
|
140
|
+
message: 'Node name already exists',
|
|
141
|
+
httpCode: 400,
|
|
142
|
+
},
|
|
143
|
+
NODE_ADDRESS_ALREADY_EXISTS: {
|
|
144
|
+
code: 'A034',
|
|
145
|
+
message: 'Node address already exists',
|
|
146
|
+
httpCode: 400,
|
|
147
|
+
},
|
|
148
|
+
NODE_ERROR_WITH_MSG: {
|
|
149
|
+
code: 'N001',
|
|
150
|
+
message: '',
|
|
151
|
+
httpCode: 500,
|
|
152
|
+
withMessage: (message: string) => ({
|
|
153
|
+
code: 'N001',
|
|
154
|
+
message,
|
|
155
|
+
httpCode: 500,
|
|
156
|
+
}),
|
|
157
|
+
},
|
|
158
|
+
NODE_ERROR_500_WITH_MSG: {
|
|
159
|
+
code: 'N002',
|
|
160
|
+
message: '',
|
|
161
|
+
httpCode: 500,
|
|
162
|
+
withMessage: (message: string) => ({
|
|
163
|
+
code: 'N002',
|
|
164
|
+
message,
|
|
165
|
+
httpCode: 500,
|
|
166
|
+
}),
|
|
167
|
+
},
|
|
168
|
+
RESTART_NODE_ERROR: {
|
|
169
|
+
code: 'A035',
|
|
170
|
+
message: 'Restart node error',
|
|
171
|
+
httpCode: 500,
|
|
172
|
+
},
|
|
173
|
+
GET_CONFIG_WITH_USERS_ERROR: {
|
|
174
|
+
code: 'A036',
|
|
175
|
+
message: 'Get config with users error',
|
|
176
|
+
httpCode: 500,
|
|
177
|
+
},
|
|
178
|
+
DELETE_USER_ERROR: {
|
|
179
|
+
code: 'A037',
|
|
180
|
+
message: 'Delete user error',
|
|
181
|
+
httpCode: 500,
|
|
182
|
+
},
|
|
183
|
+
UPDATE_NODE_ERROR: {
|
|
184
|
+
code: 'A038',
|
|
185
|
+
message: 'Update node error',
|
|
186
|
+
httpCode: 500,
|
|
187
|
+
},
|
|
188
|
+
UPDATE_USER_ERROR: {
|
|
189
|
+
code: 'A039',
|
|
190
|
+
message: 'Update user error',
|
|
191
|
+
httpCode: 500,
|
|
192
|
+
},
|
|
193
|
+
INCREMENT_USED_TRAFFIC_ERROR: {
|
|
194
|
+
code: 'A040',
|
|
195
|
+
message: 'Increment used traffic error',
|
|
196
|
+
httpCode: 500,
|
|
197
|
+
},
|
|
198
|
+
GET_ALL_NODES_ERROR: {
|
|
199
|
+
code: 'A041',
|
|
200
|
+
message: 'Get all nodes error',
|
|
201
|
+
httpCode: 500,
|
|
202
|
+
},
|
|
203
|
+
GET_ONE_NODE_ERROR: {
|
|
204
|
+
code: 'A042',
|
|
205
|
+
message: 'Get one node error',
|
|
206
|
+
httpCode: 500,
|
|
207
|
+
},
|
|
208
|
+
DELETE_NODE_ERROR: {
|
|
209
|
+
code: 'A043',
|
|
210
|
+
message: 'Delete node error',
|
|
211
|
+
httpCode: 500,
|
|
212
|
+
},
|
|
213
|
+
CREATE_HOST_ERROR: {
|
|
214
|
+
code: 'A044',
|
|
215
|
+
message: 'Create host error',
|
|
216
|
+
httpCode: 500,
|
|
217
|
+
},
|
|
218
|
+
HOST_REMARK_ALREADY_EXISTS: {
|
|
219
|
+
code: 'A045',
|
|
220
|
+
message: 'Host remark already exists',
|
|
221
|
+
httpCode: 400,
|
|
222
|
+
},
|
|
223
|
+
HOST_NOT_FOUND: {
|
|
224
|
+
code: 'A046',
|
|
225
|
+
message: 'Host not found',
|
|
226
|
+
httpCode: 404,
|
|
227
|
+
},
|
|
228
|
+
DELETE_HOST_ERROR: {
|
|
229
|
+
code: 'A047',
|
|
230
|
+
message: 'Delete host error',
|
|
231
|
+
httpCode: 500,
|
|
232
|
+
},
|
|
233
|
+
} as const;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './errors';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const FINGERPRINTS = {
|
|
2
|
+
CHROME: 'chrome',
|
|
3
|
+
FIREFOX: 'firefox',
|
|
4
|
+
SAFARI: 'safari',
|
|
5
|
+
IOS: 'ios',
|
|
6
|
+
ANDROID: 'android',
|
|
7
|
+
EDGE: 'edge',
|
|
8
|
+
QQ: 'qq',
|
|
9
|
+
RANDOM: 'random',
|
|
10
|
+
RANDOMIZED: 'randomized',
|
|
11
|
+
} as const;
|
|
12
|
+
|
|
13
|
+
export type TFingerprints = [keyof typeof FINGERPRINTS][number];
|
|
14
|
+
export const FINGERPRINTS_VALUES = Object.values(FINGERPRINTS);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './cycle';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './status.constant';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './role';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './reset-periods.constant';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const RESET_PERIODS = {
|
|
2
|
+
NO_RESET: 'NO_RESET',
|
|
3
|
+
DAY: 'DAY',
|
|
4
|
+
WEEK: 'WEEK',
|
|
5
|
+
MONTH: 'MONTH',
|
|
6
|
+
YEAR: 'YEAR',
|
|
7
|
+
} as const;
|
|
8
|
+
|
|
9
|
+
export type TResetPeriods = [keyof typeof RESET_PERIODS][number];
|
|
10
|
+
export const RESET_PERIODS_VALUES = Object.values(RESET_PERIODS);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './status.constant';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const USERS_STATUS = {
|
|
2
|
+
ACTIVE: 'ACTIVE',
|
|
3
|
+
DISABLED: 'DISABLED',
|
|
4
|
+
LIMITED: 'LIMITED',
|
|
5
|
+
EXPIRED: 'EXPIRED',
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
export type TUsersStatus = [keyof typeof USERS_STATUS][number];
|
|
9
|
+
export const USERS_STATUS_VALUES = Object.values(USERS_STATUS);
|
package/index.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const HostsSchema = z.object({
|
|
4
|
+
uuid: z.string().uuid(),
|
|
5
|
+
inboundUuid: z.string().uuid(),
|
|
6
|
+
viewPosition: z.number().int(),
|
|
7
|
+
remark: z.string(),
|
|
8
|
+
address: z.string(),
|
|
9
|
+
port: z.number().int(),
|
|
10
|
+
path: z.string().nullable(),
|
|
11
|
+
sni: z.string().nullable(),
|
|
12
|
+
host: z.string().nullable(),
|
|
13
|
+
alpn: z.string().nullable(),
|
|
14
|
+
fingerprint: z.string().nullable(),
|
|
15
|
+
allowInsecure: z.boolean().default(false),
|
|
16
|
+
isDisabled: z.boolean().default(false),
|
|
17
|
+
});
|
package/models/index.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const NodesSchema = z.object({
|
|
4
|
+
uuid: z.string().uuid(),
|
|
5
|
+
name: z.string(),
|
|
6
|
+
address: z.string(),
|
|
7
|
+
port: z.number().int().nullable(),
|
|
8
|
+
isConnected: z.boolean().default(false),
|
|
9
|
+
isDisabled: z.boolean().default(false),
|
|
10
|
+
isConnecting: z.boolean().default(false),
|
|
11
|
+
isNodeOnline: z.boolean().default(false),
|
|
12
|
+
isXrayRunning: z.boolean().default(false),
|
|
13
|
+
lastStatusChange: z.date().nullable(),
|
|
14
|
+
lastStatusMessage: z.string().nullable(),
|
|
15
|
+
xrayVersion: z.string().nullable(),
|
|
16
|
+
isTrafficTrackingActive: z.boolean().default(false),
|
|
17
|
+
trafficResetDay: z.number().int().nullable(),
|
|
18
|
+
trafficLimitBytes: z.number().nullable(),
|
|
19
|
+
trafficUsedBytes: z.number().nullable(),
|
|
20
|
+
notifyPercent: z.number().int().nullable(),
|
|
21
|
+
|
|
22
|
+
cpuCount: z.number().int().nullable(),
|
|
23
|
+
cpuModel: z.string().nullable(),
|
|
24
|
+
totalRam: z.string().nullable(),
|
|
25
|
+
|
|
26
|
+
createdAt: z.date(),
|
|
27
|
+
updatedAt: z.date(),
|
|
28
|
+
});
|