@long2ice/relayx-backend 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.
Files changed (88) hide show
  1. package/README.md +13 -0
  2. package/dist/app.d.ts +8592 -0
  3. package/dist/bullmq/index.d.ts +1 -0
  4. package/dist/bullmq/jobs.d.ts +34 -0
  5. package/dist/bullmq/queue.d.ts +6 -0
  6. package/dist/bullmq/queuedash.d.ts +12 -0
  7. package/dist/bullmq/worker.d.ts +1 -0
  8. package/dist/config.d.ts +16 -0
  9. package/dist/db.d.ts +3 -0
  10. package/dist/generated/prisma/zod/index.d.ts +2289 -0
  11. package/dist/index.d.ts +1 -0
  12. package/dist/middlewares/auth.d.ts +3 -0
  13. package/dist/middlewares/ip.d.ts +2 -0
  14. package/dist/middlewares/license.d.ts +2 -0
  15. package/dist/middlewares/plan.d.ts +2 -0
  16. package/dist/routes/admin/license.d.ts +90 -0
  17. package/dist/routes/admin/node.d.ts +919 -0
  18. package/dist/routes/admin/node_group.d.ts +2115 -0
  19. package/dist/routes/admin/pay.d.ts +261 -0
  20. package/dist/routes/admin/plan.d.ts +198 -0
  21. package/dist/routes/admin/plan_coupon.d.ts +92 -0
  22. package/dist/routes/admin/stats.d.ts +77 -0
  23. package/dist/routes/admin/system_config.d.ts +68 -0
  24. package/dist/routes/admin/ticket.d.ts +113 -0
  25. package/dist/routes/admin/topup.d.ts +88 -0
  26. package/dist/routes/admin/topup_activity.d.ts +84 -0
  27. package/dist/routes/admin/tunnel.d.ts +566 -0
  28. package/dist/routes/admin/user.d.ts +299 -0
  29. package/dist/routes/admin/user_plan.d.ts +109 -0
  30. package/dist/routes/bot.d.ts +13 -0
  31. package/dist/routes/dns_provider.d.ts +240 -0
  32. package/dist/routes/health.d.ts +3 -0
  33. package/dist/routes/in_node_group_dns.d.ts +132 -0
  34. package/dist/routes/license.d.ts +50 -0
  35. package/dist/routes/node.d.ts +148 -0
  36. package/dist/routes/node_group.d.ts +1498 -0
  37. package/dist/routes/pay.d.ts +34 -0
  38. package/dist/routes/plan.d.ts +148 -0
  39. package/dist/routes/plan_coupon.d.ts +22 -0
  40. package/dist/routes/system_config.d.ts +87 -0
  41. package/dist/routes/ticket.d.ts +129 -0
  42. package/dist/routes/topup.d.ts +93 -0
  43. package/dist/routes/tunnel.d.ts +742 -0
  44. package/dist/routes/user.d.ts +293 -0
  45. package/dist/schemas/context.d.ts +9 -0
  46. package/dist/schemas/license.d.ts +7 -0
  47. package/dist/schemas/request.d.ts +1181 -0
  48. package/dist/schemas/response.d.ts +2439 -0
  49. package/dist/schemas/socket.io.d.ts +33 -0
  50. package/dist/schemas/tunnel.d.ts +10 -0
  51. package/dist/services/dns/cloudflare.d.ts +12 -0
  52. package/dist/services/dns/huawei.d.ts +12 -0
  53. package/dist/services/dns/index.d.ts +4 -0
  54. package/dist/services/dns/interface.d.ts +8 -0
  55. package/dist/services/dns_provider.d.ts +46 -0
  56. package/dist/services/email.d.ts +11 -0
  57. package/dist/services/fernet.d.ts +2 -0
  58. package/dist/services/in_node_group_dns.d.ts +65 -0
  59. package/dist/services/license.d.ts +87 -0
  60. package/dist/services/logger.d.ts +7 -0
  61. package/dist/services/node.d.ts +39 -0
  62. package/dist/services/node_group.d.ts +75 -0
  63. package/dist/services/notify.d.ts +44 -0
  64. package/dist/services/order.d.ts +3 -0
  65. package/dist/services/pay.d.ts +6 -0
  66. package/dist/services/plan.d.ts +119 -0
  67. package/dist/services/plan_coupon.d.ts +16 -0
  68. package/dist/services/redis.d.ts +59 -0
  69. package/dist/services/stackauth.d.ts +25 -0
  70. package/dist/services/sysinfo.d.ts +7 -0
  71. package/dist/services/system_config.d.ts +7 -0
  72. package/dist/services/telegram.d.ts +8 -0
  73. package/dist/services/ticket.d.ts +134 -0
  74. package/dist/services/topup.d.ts +37 -0
  75. package/dist/services/topup_activity.d.ts +21 -0
  76. package/dist/services/tunnel.d.ts +1235 -0
  77. package/dist/services/user.d.ts +25 -0
  78. package/dist/socket-io/events.d.ts +13 -0
  79. package/dist/socket-io/handlers/disconnect.d.ts +2 -0
  80. package/dist/socket-io/handlers/listen.d.ts +3 -0
  81. package/dist/socket-io/handlers/register.d.ts +2 -0
  82. package/dist/socket-io/handlers/sysinfo.d.ts +2 -0
  83. package/dist/socket-io/index.d.ts +3 -0
  84. package/dist/socket-io/utils.d.ts +8 -0
  85. package/dist/utils/date.d.ts +1 -0
  86. package/dist/utils/ip.d.ts +2 -0
  87. package/dist/utils/uuid.d.ts +1 -0
  88. package/package.json +82 -0
@@ -0,0 +1,1235 @@
1
+ import { z } from "zod";
2
+ import { IpType, NodeType, Prisma, TunnelType } from "@/generated/prisma/client";
3
+ import { TunnelQuerySchema, TunnelRequestSchema, TunnelTrafficQuerySchema } from "../schemas/request";
4
+ import { ListenProtocol } from "../schemas/tunnel";
5
+ import { LicenseService } from "../services/license";
6
+ import { NodeGroupService } from "../services/node_group";
7
+ import { RedisService } from "../services/redis";
8
+ import { SystemConfigService } from "../services/system_config";
9
+ type ForwardAddress = {
10
+ address: string;
11
+ weight: number;
12
+ host?: string | null;
13
+ };
14
+ export declare class TunnelService {
15
+ private readonly redisService;
16
+ private readonly nodeGroupService;
17
+ private readonly licenseService;
18
+ private readonly systemConfigService;
19
+ constructor(redisService: RedisService, nodeGroupService: NodeGroupService, licenseService: LicenseService, systemConfigService: SystemConfigService);
20
+ resetExpiredTunnels(): Promise<number>;
21
+ getTunnels(query: z.infer<typeof TunnelQuerySchema>, user_id?: number): Promise<{
22
+ data: {
23
+ forward_addresses: ForwardAddress[];
24
+ tunnel_chains: {
25
+ node_group_id: number;
26
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
27
+ }[];
28
+ listen_protocol: ListenProtocol;
29
+ forward_addresses_protocol: ListenProtocol;
30
+ user: {
31
+ email: string;
32
+ };
33
+ in_node_group: {
34
+ name: string;
35
+ connect_ip: string | null;
36
+ admission: boolean;
37
+ traffic_rate: number;
38
+ nodes: {
39
+ connect_ip: string;
40
+ }[];
41
+ };
42
+ out_node_group: {
43
+ name: string;
44
+ traffic_rate: number;
45
+ } | null;
46
+ name: string;
47
+ id: number;
48
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
49
+ order_by: number;
50
+ created_at: Date;
51
+ updated_at: Date;
52
+ user_id: number;
53
+ status: import("../generated/prisma/client").$Enums.Status;
54
+ tunnel_type: import("../generated/prisma/client").$Enums.TunnelType;
55
+ category: import("../generated/prisma/client").$Enums.TunnelCategory;
56
+ listen_ip: string | null;
57
+ listen_port: number | null;
58
+ is_port_used: boolean;
59
+ white_list: Prisma.JsonValue | null;
60
+ ip_type: import("../generated/prisma/client").$Enums.IpType;
61
+ ip_limit: number | null;
62
+ bandwidth_limit: number | null;
63
+ traffic: number;
64
+ traffic_cost: number;
65
+ stats: Prisma.JsonValue | null;
66
+ proxy_protocol: boolean;
67
+ in_node_group_id: number;
68
+ out_node_group_id: number | null;
69
+ }[];
70
+ total: number;
71
+ }>;
72
+ getTunnelTraffics(user_id: number, query: z.infer<typeof TunnelTrafficQuerySchema>): Promise<{
73
+ data: {
74
+ id: number;
75
+ tunnel: {
76
+ name: string;
77
+ in_node_group: {
78
+ name: string;
79
+ };
80
+ out_node_group: {
81
+ name: string;
82
+ } | null;
83
+ };
84
+ traffic: number;
85
+ traffic_cost: number;
86
+ date: Date;
87
+ }[];
88
+ total: number;
89
+ }>;
90
+ getTunnelSummary(user_id: number): Promise<{
91
+ status: import("../generated/prisma/client").$Enums.Status;
92
+ count: number;
93
+ }[]>;
94
+ deleteTunnelTraffic(): Promise<number>;
95
+ resetPortUsed(node_group_id: number): Promise<void>;
96
+ pushNodeConfig(): Promise<void>;
97
+ getAllAvailableTunnels(): Promise<({
98
+ user: {
99
+ user_plan: ({
100
+ plan: {
101
+ node_groups: {
102
+ id: number;
103
+ created_at: Date;
104
+ updated_at: Date;
105
+ plan_id: number;
106
+ node_group_id: number;
107
+ }[];
108
+ } & {
109
+ name: string;
110
+ id: number;
111
+ order_by: number;
112
+ created_at: Date;
113
+ updated_at: Date;
114
+ status: import("../generated/prisma/client").$Enums.Status;
115
+ ip_limit: number | null;
116
+ bandwidth_limit: number | null;
117
+ traffic: number | null;
118
+ price: number;
119
+ max_tunnels: number | null;
120
+ description: string | null;
121
+ original_price: number | null;
122
+ allow_custom_in_node_group: boolean;
123
+ allow_custom_out_node_group: boolean;
124
+ all_in_node_groups: boolean;
125
+ all_out_node_groups: boolean;
126
+ setup_fee: number | null;
127
+ billing_cycle: import("../generated/prisma/client").$Enums.BillingCycle;
128
+ renewable: boolean;
129
+ stock: number | null;
130
+ };
131
+ } & {
132
+ id: number;
133
+ created_at: Date;
134
+ updated_at: Date;
135
+ user_id: number;
136
+ traffic: number | null;
137
+ plan_id: number;
138
+ traffic_used: number;
139
+ max_tunnels: number | null;
140
+ expired_at: Date | null;
141
+ }) | null;
142
+ } & {
143
+ id: number;
144
+ created_at: Date;
145
+ updated_at: Date;
146
+ super_admin: boolean;
147
+ email: string;
148
+ balance: number;
149
+ tg_id: string | null;
150
+ uid: string | null;
151
+ note: string | null;
152
+ parent_id: number | null;
153
+ referral_commission_rate: number | null;
154
+ referral_first_only: boolean | null;
155
+ auto_renew: boolean;
156
+ api_key: string;
157
+ notify_subscriptions: Prisma.JsonValue | null;
158
+ status: import("../generated/prisma/client").$Enums.Status;
159
+ };
160
+ in_node_group: {
161
+ nodes: {
162
+ id: number;
163
+ connect_ip: string;
164
+ order_by: number;
165
+ created_at: Date;
166
+ updated_at: Date;
167
+ status: import("../generated/prisma/client").$Enums.Status;
168
+ weight: number;
169
+ node_id: string;
170
+ version: string;
171
+ backup: boolean;
172
+ custom_line: string | null;
173
+ dns_status: boolean;
174
+ node_group_id: number;
175
+ }[];
176
+ } & {
177
+ name: string;
178
+ id: number;
179
+ token: string;
180
+ port_range: string | null;
181
+ connect_ip: string | null;
182
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
183
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
184
+ allow_listen_protocol: boolean;
185
+ allow_tunnel_types: Prisma.JsonValue | null;
186
+ bypass_type: import("../generated/prisma/client").$Enums.BypassType;
187
+ bypass_list: Prisma.JsonValue | null;
188
+ admission: boolean;
189
+ block_protocols: Prisma.JsonValue | null;
190
+ traffic_rate: number;
191
+ need_out_node_group: boolean;
192
+ allow_out_node_groups: Prisma.JsonValue | null;
193
+ allow_in_node_groups: Prisma.JsonValue | null;
194
+ order_by: number;
195
+ created_at: Date;
196
+ updated_at: Date;
197
+ user_id: number;
198
+ };
199
+ out_node_group: ({
200
+ nodes: {
201
+ id: number;
202
+ connect_ip: string;
203
+ order_by: number;
204
+ created_at: Date;
205
+ updated_at: Date;
206
+ status: import("../generated/prisma/client").$Enums.Status;
207
+ weight: number;
208
+ node_id: string;
209
+ version: string;
210
+ backup: boolean;
211
+ custom_line: string | null;
212
+ dns_status: boolean;
213
+ node_group_id: number;
214
+ }[];
215
+ } & {
216
+ name: string;
217
+ id: number;
218
+ token: string;
219
+ port_range: string | null;
220
+ connect_ip: string | null;
221
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
222
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
223
+ allow_listen_protocol: boolean;
224
+ allow_tunnel_types: Prisma.JsonValue | null;
225
+ bypass_type: import("../generated/prisma/client").$Enums.BypassType;
226
+ bypass_list: Prisma.JsonValue | null;
227
+ admission: boolean;
228
+ block_protocols: Prisma.JsonValue | null;
229
+ traffic_rate: number;
230
+ need_out_node_group: boolean;
231
+ allow_out_node_groups: Prisma.JsonValue | null;
232
+ allow_in_node_groups: Prisma.JsonValue | null;
233
+ order_by: number;
234
+ created_at: Date;
235
+ updated_at: Date;
236
+ user_id: number;
237
+ }) | null;
238
+ tunnel_chains: ({
239
+ node_group: {
240
+ nodes: {
241
+ id: number;
242
+ connect_ip: string;
243
+ order_by: number;
244
+ created_at: Date;
245
+ updated_at: Date;
246
+ status: import("../generated/prisma/client").$Enums.Status;
247
+ weight: number;
248
+ node_id: string;
249
+ version: string;
250
+ backup: boolean;
251
+ custom_line: string | null;
252
+ dns_status: boolean;
253
+ node_group_id: number;
254
+ }[];
255
+ } & {
256
+ name: string;
257
+ id: number;
258
+ token: string;
259
+ port_range: string | null;
260
+ connect_ip: string | null;
261
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
262
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
263
+ allow_listen_protocol: boolean;
264
+ allow_tunnel_types: Prisma.JsonValue | null;
265
+ bypass_type: import("../generated/prisma/client").$Enums.BypassType;
266
+ bypass_list: Prisma.JsonValue | null;
267
+ admission: boolean;
268
+ block_protocols: Prisma.JsonValue | null;
269
+ traffic_rate: number;
270
+ need_out_node_group: boolean;
271
+ allow_out_node_groups: Prisma.JsonValue | null;
272
+ allow_in_node_groups: Prisma.JsonValue | null;
273
+ order_by: number;
274
+ created_at: Date;
275
+ updated_at: Date;
276
+ user_id: number;
277
+ };
278
+ } & {
279
+ id: number;
280
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
281
+ node_group_id: number;
282
+ tunnel_id: number;
283
+ })[];
284
+ } & {
285
+ name: string;
286
+ id: number;
287
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
288
+ order_by: number;
289
+ created_at: Date;
290
+ updated_at: Date;
291
+ user_id: number;
292
+ status: import("../generated/prisma/client").$Enums.Status;
293
+ tunnel_type: import("../generated/prisma/client").$Enums.TunnelType;
294
+ category: import("../generated/prisma/client").$Enums.TunnelCategory;
295
+ listen_ip: string | null;
296
+ listen_port: number | null;
297
+ listen_protocol: Prisma.JsonValue | null;
298
+ is_port_used: boolean;
299
+ white_list: Prisma.JsonValue | null;
300
+ forward_addresses: Prisma.JsonValue;
301
+ forward_addresses_protocol: Prisma.JsonValue | null;
302
+ ip_type: import("../generated/prisma/client").$Enums.IpType;
303
+ ip_limit: number | null;
304
+ bandwidth_limit: number | null;
305
+ traffic: number;
306
+ traffic_cost: number;
307
+ stats: Prisma.JsonValue | null;
308
+ proxy_protocol: boolean;
309
+ in_node_group_id: number;
310
+ out_node_group_id: number | null;
311
+ })[]>;
312
+ filterAvailableTunnels<T extends {
313
+ user_id: number;
314
+ in_node_group: {
315
+ user_id: number | null;
316
+ };
317
+ out_node_group: {
318
+ user_id: number | null;
319
+ } | null;
320
+ user: {
321
+ user_plan: {
322
+ traffic_used: number;
323
+ max_tunnels: number | null;
324
+ traffic: number | null;
325
+ plan: {
326
+ max_tunnels: number | null;
327
+ traffic: number | null;
328
+ all_in_node_groups: boolean;
329
+ all_out_node_groups: boolean;
330
+ node_groups: {
331
+ node_group_id: number;
332
+ }[];
333
+ };
334
+ } | null;
335
+ };
336
+ }>(tunnels: T[], in_node_group_id?: number, out_node_group_id?: number): T[];
337
+ getAvailableTunnels(in_node_group_id?: number, out_node_group_id?: number): Promise<({
338
+ user: {
339
+ user_plan: ({
340
+ plan: {
341
+ node_groups: {
342
+ id: number;
343
+ created_at: Date;
344
+ updated_at: Date;
345
+ plan_id: number;
346
+ node_group_id: number;
347
+ }[];
348
+ } & {
349
+ name: string;
350
+ id: number;
351
+ order_by: number;
352
+ created_at: Date;
353
+ updated_at: Date;
354
+ status: import("../generated/prisma/client").$Enums.Status;
355
+ ip_limit: number | null;
356
+ bandwidth_limit: number | null;
357
+ traffic: number | null;
358
+ price: number;
359
+ max_tunnels: number | null;
360
+ description: string | null;
361
+ original_price: number | null;
362
+ allow_custom_in_node_group: boolean;
363
+ allow_custom_out_node_group: boolean;
364
+ all_in_node_groups: boolean;
365
+ all_out_node_groups: boolean;
366
+ setup_fee: number | null;
367
+ billing_cycle: import("../generated/prisma/client").$Enums.BillingCycle;
368
+ renewable: boolean;
369
+ stock: number | null;
370
+ };
371
+ } & {
372
+ id: number;
373
+ created_at: Date;
374
+ updated_at: Date;
375
+ user_id: number;
376
+ traffic: number | null;
377
+ plan_id: number;
378
+ traffic_used: number;
379
+ max_tunnels: number | null;
380
+ expired_at: Date | null;
381
+ }) | null;
382
+ } & {
383
+ id: number;
384
+ created_at: Date;
385
+ updated_at: Date;
386
+ super_admin: boolean;
387
+ email: string;
388
+ balance: number;
389
+ tg_id: string | null;
390
+ uid: string | null;
391
+ note: string | null;
392
+ parent_id: number | null;
393
+ referral_commission_rate: number | null;
394
+ referral_first_only: boolean | null;
395
+ auto_renew: boolean;
396
+ api_key: string;
397
+ notify_subscriptions: Prisma.JsonValue | null;
398
+ status: import("../generated/prisma/client").$Enums.Status;
399
+ };
400
+ in_node_group: {
401
+ nodes: {
402
+ id: number;
403
+ connect_ip: string;
404
+ order_by: number;
405
+ created_at: Date;
406
+ updated_at: Date;
407
+ status: import("../generated/prisma/client").$Enums.Status;
408
+ weight: number;
409
+ node_id: string;
410
+ version: string;
411
+ backup: boolean;
412
+ custom_line: string | null;
413
+ dns_status: boolean;
414
+ node_group_id: number;
415
+ }[];
416
+ } & {
417
+ name: string;
418
+ id: number;
419
+ token: string;
420
+ port_range: string | null;
421
+ connect_ip: string | null;
422
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
423
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
424
+ allow_listen_protocol: boolean;
425
+ allow_tunnel_types: Prisma.JsonValue | null;
426
+ bypass_type: import("../generated/prisma/client").$Enums.BypassType;
427
+ bypass_list: Prisma.JsonValue | null;
428
+ admission: boolean;
429
+ block_protocols: Prisma.JsonValue | null;
430
+ traffic_rate: number;
431
+ need_out_node_group: boolean;
432
+ allow_out_node_groups: Prisma.JsonValue | null;
433
+ allow_in_node_groups: Prisma.JsonValue | null;
434
+ order_by: number;
435
+ created_at: Date;
436
+ updated_at: Date;
437
+ user_id: number;
438
+ };
439
+ out_node_group: ({
440
+ nodes: {
441
+ id: number;
442
+ connect_ip: string;
443
+ order_by: number;
444
+ created_at: Date;
445
+ updated_at: Date;
446
+ status: import("../generated/prisma/client").$Enums.Status;
447
+ weight: number;
448
+ node_id: string;
449
+ version: string;
450
+ backup: boolean;
451
+ custom_line: string | null;
452
+ dns_status: boolean;
453
+ node_group_id: number;
454
+ }[];
455
+ } & {
456
+ name: string;
457
+ id: number;
458
+ token: string;
459
+ port_range: string | null;
460
+ connect_ip: string | null;
461
+ node_type: import("../generated/prisma/client").$Enums.NodeType;
462
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
463
+ allow_listen_protocol: boolean;
464
+ allow_tunnel_types: Prisma.JsonValue | null;
465
+ bypass_type: import("../generated/prisma/client").$Enums.BypassType;
466
+ bypass_list: Prisma.JsonValue | null;
467
+ admission: boolean;
468
+ block_protocols: Prisma.JsonValue | null;
469
+ traffic_rate: number;
470
+ need_out_node_group: boolean;
471
+ allow_out_node_groups: Prisma.JsonValue | null;
472
+ allow_in_node_groups: Prisma.JsonValue | null;
473
+ order_by: number;
474
+ created_at: Date;
475
+ updated_at: Date;
476
+ user_id: number;
477
+ }) | null;
478
+ } & {
479
+ name: string;
480
+ id: number;
481
+ load_balance_type: import("../generated/prisma/client").$Enums.LoadBalanceType;
482
+ order_by: number;
483
+ created_at: Date;
484
+ updated_at: Date;
485
+ user_id: number;
486
+ status: import("../generated/prisma/client").$Enums.Status;
487
+ tunnel_type: import("../generated/prisma/client").$Enums.TunnelType;
488
+ category: import("../generated/prisma/client").$Enums.TunnelCategory;
489
+ listen_ip: string | null;
490
+ listen_port: number | null;
491
+ listen_protocol: Prisma.JsonValue | null;
492
+ is_port_used: boolean;
493
+ white_list: Prisma.JsonValue | null;
494
+ forward_addresses: Prisma.JsonValue;
495
+ forward_addresses_protocol: Prisma.JsonValue | null;
496
+ ip_type: import("../generated/prisma/client").$Enums.IpType;
497
+ ip_limit: number | null;
498
+ bandwidth_limit: number | null;
499
+ traffic: number;
500
+ traffic_cost: number;
501
+ stats: Prisma.JsonValue | null;
502
+ proxy_protocol: boolean;
503
+ in_node_group_id: number;
504
+ out_node_group_id: number | null;
505
+ })[]>;
506
+ getConnectIP(connect_ip: string, ip_type: IpType): string | undefined;
507
+ getTunnelChains(tunnel_id: number, ip_type: IpType): Promise<{
508
+ in_hops: {
509
+ name: string;
510
+ selector: {
511
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
512
+ healthCheck: boolean;
513
+ };
514
+ nodes: {
515
+ name: string;
516
+ addr: string;
517
+ connector: {
518
+ type: string;
519
+ };
520
+ dialer: {
521
+ type: string;
522
+ };
523
+ metadata: {
524
+ weight: string;
525
+ backup: boolean;
526
+ };
527
+ }[];
528
+ }[];
529
+ out_hops: {
530
+ name: string;
531
+ selector: {
532
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
533
+ healthCheck: boolean;
534
+ };
535
+ nodes: {
536
+ name: string;
537
+ addr: string;
538
+ connector: {
539
+ type: string;
540
+ };
541
+ dialer: {
542
+ type: string;
543
+ };
544
+ metadata: {
545
+ weight: string;
546
+ backup: boolean;
547
+ };
548
+ }[];
549
+ }[];
550
+ }>;
551
+ getOutListenFromCache(outListens: Record<string, string>, node_id: number, type: string): string | null;
552
+ getTunnelChainsFromTunnel(tunnel: {
553
+ id: number;
554
+ ip_type: IpType;
555
+ tunnel_chains: {
556
+ id: number;
557
+ node_type: NodeType;
558
+ node_group: {
559
+ load_balance_type: string;
560
+ nodes: {
561
+ id: number;
562
+ node_id: string;
563
+ connect_ip: string;
564
+ weight: number;
565
+ backup: boolean;
566
+ }[];
567
+ };
568
+ }[];
569
+ }, outListens: Record<string, string>): {
570
+ in_hops: {
571
+ name: string;
572
+ selector: {
573
+ strategy: string;
574
+ healthCheck: boolean;
575
+ };
576
+ nodes: {
577
+ name: string;
578
+ addr: string;
579
+ connector: {
580
+ type: string;
581
+ };
582
+ dialer: {
583
+ type: string;
584
+ };
585
+ metadata: {
586
+ weight: string;
587
+ backup: boolean;
588
+ };
589
+ }[];
590
+ }[];
591
+ out_hops: {
592
+ name: string;
593
+ selector: {
594
+ strategy: string;
595
+ healthCheck: boolean;
596
+ };
597
+ nodes: {
598
+ name: string;
599
+ addr: string;
600
+ connector: {
601
+ type: string;
602
+ };
603
+ dialer: {
604
+ type: string;
605
+ };
606
+ metadata: {
607
+ weight: string;
608
+ backup: boolean;
609
+ };
610
+ }[];
611
+ }[];
612
+ };
613
+ getNodeConfig(node_group_id: number, node_type: NodeType, port_range: string | null, allow_listen_protocol: boolean, allTunnels: Awaited<ReturnType<typeof this.getAllAvailableTunnels>>, outListens: Record<string, string>): Promise<{
614
+ log: {
615
+ level: string;
616
+ };
617
+ tls: {
618
+ validity: string;
619
+ commonName: string;
620
+ organization: string;
621
+ };
622
+ services: ({
623
+ addr: string;
624
+ climiter: string | undefined;
625
+ limiter: string | undefined;
626
+ observer: string;
627
+ forwarder: {
628
+ nodes: {
629
+ name: string;
630
+ addr: string;
631
+ filter: {
632
+ host: string;
633
+ } | undefined;
634
+ metadata: {
635
+ weight: string;
636
+ };
637
+ }[];
638
+ selector: {
639
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
640
+ healthCheck: boolean;
641
+ };
642
+ } | undefined;
643
+ metadata: {
644
+ enableStats: boolean;
645
+ "observer.resetTraffic": boolean;
646
+ "observer.period": string;
647
+ proxyProtocol: number | undefined;
648
+ };
649
+ name: string;
650
+ bypass: string | undefined;
651
+ admission: string | undefined;
652
+ handler: {
653
+ type: string;
654
+ chain: string | undefined;
655
+ metadata: {
656
+ sniffing: boolean | undefined;
657
+ "block.protocol": string | number | boolean | Prisma.JsonObject | Prisma.JsonArray | undefined;
658
+ proxyProtocol: number | undefined;
659
+ bind?: undefined;
660
+ };
661
+ auth: {
662
+ username: string;
663
+ password: string;
664
+ } | undefined;
665
+ };
666
+ listener: {
667
+ type: string;
668
+ metadata?: undefined;
669
+ };
670
+ } | {
671
+ addr: string;
672
+ climiter: string | undefined;
673
+ limiter: string | undefined;
674
+ observer: string;
675
+ forwarder: {
676
+ nodes: {
677
+ name: string;
678
+ addr: string;
679
+ filter: {
680
+ host: string;
681
+ } | undefined;
682
+ metadata: {
683
+ weight: string;
684
+ };
685
+ }[];
686
+ selector: {
687
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
688
+ healthCheck: boolean;
689
+ };
690
+ } | undefined;
691
+ metadata: {
692
+ enableStats: boolean;
693
+ "observer.resetTraffic": boolean;
694
+ "observer.period": string;
695
+ proxyProtocol: number | undefined;
696
+ };
697
+ name: string;
698
+ bypass: string | undefined;
699
+ admission: string | undefined;
700
+ handler: {
701
+ type: string;
702
+ chain: string | undefined;
703
+ auth: {
704
+ username: string;
705
+ password: string;
706
+ } | undefined;
707
+ metadata?: undefined;
708
+ };
709
+ listener: {
710
+ type: string;
711
+ metadata: {
712
+ keepalive: boolean;
713
+ };
714
+ };
715
+ } | {
716
+ name: import("../generated/prisma/client").$Enums.TunnelType;
717
+ bypass: string | undefined;
718
+ addr: string;
719
+ handler: {
720
+ type: string;
721
+ metadata: {
722
+ bind: boolean;
723
+ sniffing?: undefined;
724
+ "block.protocol"?: undefined;
725
+ proxyProtocol?: undefined;
726
+ };
727
+ chain?: undefined;
728
+ auth?: undefined;
729
+ };
730
+ listener: {
731
+ type: import("../generated/prisma/client").$Enums.TunnelType;
732
+ metadata: {
733
+ keepalive: boolean | undefined;
734
+ };
735
+ };
736
+ metadata?: undefined;
737
+ } | {
738
+ name: string;
739
+ bypass: string | undefined;
740
+ addr: string;
741
+ listener: {
742
+ type: string;
743
+ metadata?: undefined;
744
+ };
745
+ handler: {
746
+ type: string;
747
+ chain?: undefined;
748
+ metadata?: undefined;
749
+ auth?: undefined;
750
+ };
751
+ metadata: {
752
+ enableStats: boolean;
753
+ "observer.resetTraffic": boolean;
754
+ "observer.period": string;
755
+ };
756
+ })[];
757
+ chains: {
758
+ name: string;
759
+ hops: {
760
+ name: string;
761
+ selector: {
762
+ strategy: string;
763
+ healthCheck: boolean;
764
+ };
765
+ nodes: {
766
+ name: string;
767
+ addr: string;
768
+ connector: {
769
+ type: string;
770
+ };
771
+ dialer: {
772
+ type: string;
773
+ };
774
+ metadata: {
775
+ weight: string;
776
+ backup: boolean;
777
+ };
778
+ }[];
779
+ }[];
780
+ }[];
781
+ climiters: {
782
+ name: string | undefined;
783
+ limits: string[];
784
+ }[];
785
+ limiters: {
786
+ name: string | undefined;
787
+ limits: string[];
788
+ }[];
789
+ bypasses: {
790
+ name: string;
791
+ whitelist: boolean;
792
+ matchers: string[];
793
+ }[];
794
+ admissions: {
795
+ name: string;
796
+ whitelist: boolean;
797
+ matchers: string[];
798
+ }[];
799
+ observers: {
800
+ name: string;
801
+ plugin: {
802
+ type: string;
803
+ addr: string;
804
+ };
805
+ }[];
806
+ } | {
807
+ log: {
808
+ level: string;
809
+ };
810
+ tls: {
811
+ validity: string;
812
+ commonName: string;
813
+ organization: string;
814
+ };
815
+ chains: {
816
+ name: string;
817
+ hops: {
818
+ name: string;
819
+ selector: {
820
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
821
+ healthCheck: boolean;
822
+ };
823
+ nodes: {
824
+ name: string;
825
+ addr: string;
826
+ connector: {
827
+ type: string;
828
+ };
829
+ dialer: {
830
+ metadata?: {
831
+ key: string;
832
+ host: string;
833
+ } | undefined;
834
+ type: import("../generated/prisma/client").$Enums.TunnelType;
835
+ };
836
+ metadata: {
837
+ weight: string;
838
+ backup: boolean;
839
+ };
840
+ }[];
841
+ }[];
842
+ }[];
843
+ climiters: {
844
+ name: string | undefined;
845
+ limits: string[];
846
+ }[];
847
+ limiters: {
848
+ name: string | undefined;
849
+ limits: string[];
850
+ }[];
851
+ services: ({
852
+ name: import("../generated/prisma/client").$Enums.TunnelType;
853
+ addr: string;
854
+ handler: {
855
+ type: string;
856
+ metadata: {
857
+ sniffing: boolean | undefined;
858
+ "block.protocol": string[] | undefined;
859
+ };
860
+ };
861
+ listener: {
862
+ type: import("../generated/prisma/client").$Enums.TunnelType;
863
+ metadata: {
864
+ key?: string | undefined;
865
+ keepalive?: boolean | undefined;
866
+ };
867
+ chain?: undefined;
868
+ };
869
+ metadata: {
870
+ enableStats: boolean;
871
+ "observer.resetTraffic": boolean;
872
+ "observer.period": string;
873
+ };
874
+ } | {
875
+ addr: string;
876
+ climiter: string | undefined;
877
+ limiter: string | undefined;
878
+ observer: string;
879
+ forwarder: {
880
+ nodes: {
881
+ name: string;
882
+ addr: string;
883
+ filter: {
884
+ host: string;
885
+ } | undefined;
886
+ metadata: {
887
+ weight: string;
888
+ };
889
+ }[];
890
+ selector: {
891
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
892
+ healthCheck: boolean;
893
+ };
894
+ };
895
+ metadata: {
896
+ enableStats: boolean;
897
+ "observer.resetTraffic": boolean;
898
+ "observer.period": string;
899
+ };
900
+ name: string;
901
+ handler: {
902
+ type: string;
903
+ metadata?: undefined;
904
+ };
905
+ listener: {
906
+ type: string;
907
+ chain: string;
908
+ metadata?: undefined;
909
+ };
910
+ })[];
911
+ observers: {
912
+ name: string;
913
+ plugin: {
914
+ type: string;
915
+ addr: string;
916
+ };
917
+ }[];
918
+ }>;
919
+ getInNodeConfig(in_node_group_id: number, port_range: string | null, allow_listen_protocol: boolean, allTunnels: Awaited<ReturnType<typeof this.getAllAvailableTunnels>>, outListens: Record<string, string>): Promise<{
920
+ log: {
921
+ level: string;
922
+ };
923
+ tls: {
924
+ validity: string;
925
+ commonName: string;
926
+ organization: string;
927
+ };
928
+ services: ({
929
+ addr: string;
930
+ climiter: string | undefined;
931
+ limiter: string | undefined;
932
+ observer: string;
933
+ forwarder: {
934
+ nodes: {
935
+ name: string;
936
+ addr: string;
937
+ filter: {
938
+ host: string;
939
+ } | undefined;
940
+ metadata: {
941
+ weight: string;
942
+ };
943
+ }[];
944
+ selector: {
945
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
946
+ healthCheck: boolean;
947
+ };
948
+ } | undefined;
949
+ metadata: {
950
+ enableStats: boolean;
951
+ "observer.resetTraffic": boolean;
952
+ "observer.period": string;
953
+ proxyProtocol: number | undefined;
954
+ };
955
+ name: string;
956
+ bypass: string | undefined;
957
+ admission: string | undefined;
958
+ handler: {
959
+ type: string;
960
+ chain: string | undefined;
961
+ metadata: {
962
+ sniffing: boolean | undefined;
963
+ "block.protocol": string | number | boolean | Prisma.JsonObject | Prisma.JsonArray | undefined;
964
+ proxyProtocol: number | undefined;
965
+ bind?: undefined;
966
+ };
967
+ auth: {
968
+ username: string;
969
+ password: string;
970
+ } | undefined;
971
+ };
972
+ listener: {
973
+ type: string;
974
+ metadata?: undefined;
975
+ };
976
+ } | {
977
+ addr: string;
978
+ climiter: string | undefined;
979
+ limiter: string | undefined;
980
+ observer: string;
981
+ forwarder: {
982
+ nodes: {
983
+ name: string;
984
+ addr: string;
985
+ filter: {
986
+ host: string;
987
+ } | undefined;
988
+ metadata: {
989
+ weight: string;
990
+ };
991
+ }[];
992
+ selector: {
993
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
994
+ healthCheck: boolean;
995
+ };
996
+ } | undefined;
997
+ metadata: {
998
+ enableStats: boolean;
999
+ "observer.resetTraffic": boolean;
1000
+ "observer.period": string;
1001
+ proxyProtocol: number | undefined;
1002
+ };
1003
+ name: string;
1004
+ bypass: string | undefined;
1005
+ admission: string | undefined;
1006
+ handler: {
1007
+ type: string;
1008
+ chain: string | undefined;
1009
+ auth: {
1010
+ username: string;
1011
+ password: string;
1012
+ } | undefined;
1013
+ metadata?: undefined;
1014
+ };
1015
+ listener: {
1016
+ type: string;
1017
+ metadata: {
1018
+ keepalive: boolean;
1019
+ };
1020
+ };
1021
+ } | {
1022
+ name: import("../generated/prisma/client").$Enums.TunnelType;
1023
+ bypass: string | undefined;
1024
+ addr: string;
1025
+ handler: {
1026
+ type: string;
1027
+ metadata: {
1028
+ bind: boolean;
1029
+ sniffing?: undefined;
1030
+ "block.protocol"?: undefined;
1031
+ proxyProtocol?: undefined;
1032
+ };
1033
+ chain?: undefined;
1034
+ auth?: undefined;
1035
+ };
1036
+ listener: {
1037
+ type: import("../generated/prisma/client").$Enums.TunnelType;
1038
+ metadata: {
1039
+ keepalive: boolean | undefined;
1040
+ };
1041
+ };
1042
+ metadata?: undefined;
1043
+ } | {
1044
+ name: string;
1045
+ bypass: string | undefined;
1046
+ addr: string;
1047
+ listener: {
1048
+ type: string;
1049
+ metadata?: undefined;
1050
+ };
1051
+ handler: {
1052
+ type: string;
1053
+ chain?: undefined;
1054
+ metadata?: undefined;
1055
+ auth?: undefined;
1056
+ };
1057
+ metadata: {
1058
+ enableStats: boolean;
1059
+ "observer.resetTraffic": boolean;
1060
+ "observer.period": string;
1061
+ };
1062
+ })[];
1063
+ chains: {
1064
+ name: string;
1065
+ hops: {
1066
+ name: string;
1067
+ selector: {
1068
+ strategy: string;
1069
+ healthCheck: boolean;
1070
+ };
1071
+ nodes: {
1072
+ name: string;
1073
+ addr: string;
1074
+ connector: {
1075
+ type: string;
1076
+ };
1077
+ dialer: {
1078
+ type: string;
1079
+ };
1080
+ metadata: {
1081
+ weight: string;
1082
+ backup: boolean;
1083
+ };
1084
+ }[];
1085
+ }[];
1086
+ }[];
1087
+ climiters: {
1088
+ name: string | undefined;
1089
+ limits: string[];
1090
+ }[];
1091
+ limiters: {
1092
+ name: string | undefined;
1093
+ limits: string[];
1094
+ }[];
1095
+ bypasses: {
1096
+ name: string;
1097
+ whitelist: boolean;
1098
+ matchers: string[];
1099
+ }[];
1100
+ admissions: {
1101
+ name: string;
1102
+ whitelist: boolean;
1103
+ matchers: string[];
1104
+ }[];
1105
+ observers: {
1106
+ name: string;
1107
+ plugin: {
1108
+ type: string;
1109
+ addr: string;
1110
+ };
1111
+ }[];
1112
+ }>;
1113
+ getOutNodeConfig(out_node_group_id: number, port_range: string | null, allTunnels: Awaited<ReturnType<typeof this.getAllAvailableTunnels>>, outListens: Record<string, string>): Promise<{
1114
+ log: {
1115
+ level: string;
1116
+ };
1117
+ tls: {
1118
+ validity: string;
1119
+ commonName: string;
1120
+ organization: string;
1121
+ };
1122
+ chains: {
1123
+ name: string;
1124
+ hops: {
1125
+ name: string;
1126
+ selector: {
1127
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
1128
+ healthCheck: boolean;
1129
+ };
1130
+ nodes: {
1131
+ name: string;
1132
+ addr: string;
1133
+ connector: {
1134
+ type: string;
1135
+ };
1136
+ dialer: {
1137
+ metadata?: {
1138
+ key: string;
1139
+ host: string;
1140
+ } | undefined;
1141
+ type: import("../generated/prisma/client").$Enums.TunnelType;
1142
+ };
1143
+ metadata: {
1144
+ weight: string;
1145
+ backup: boolean;
1146
+ };
1147
+ }[];
1148
+ }[];
1149
+ }[];
1150
+ climiters: {
1151
+ name: string | undefined;
1152
+ limits: string[];
1153
+ }[];
1154
+ limiters: {
1155
+ name: string | undefined;
1156
+ limits: string[];
1157
+ }[];
1158
+ services: ({
1159
+ name: import("../generated/prisma/client").$Enums.TunnelType;
1160
+ addr: string;
1161
+ handler: {
1162
+ type: string;
1163
+ metadata: {
1164
+ sniffing: boolean | undefined;
1165
+ "block.protocol": string[] | undefined;
1166
+ };
1167
+ };
1168
+ listener: {
1169
+ type: import("../generated/prisma/client").$Enums.TunnelType;
1170
+ metadata: {
1171
+ key?: string | undefined;
1172
+ keepalive?: boolean | undefined;
1173
+ };
1174
+ chain?: undefined;
1175
+ };
1176
+ metadata: {
1177
+ enableStats: boolean;
1178
+ "observer.resetTraffic": boolean;
1179
+ "observer.period": string;
1180
+ };
1181
+ } | {
1182
+ addr: string;
1183
+ climiter: string | undefined;
1184
+ limiter: string | undefined;
1185
+ observer: string;
1186
+ forwarder: {
1187
+ nodes: {
1188
+ name: string;
1189
+ addr: string;
1190
+ filter: {
1191
+ host: string;
1192
+ } | undefined;
1193
+ metadata: {
1194
+ weight: string;
1195
+ };
1196
+ }[];
1197
+ selector: {
1198
+ strategy: import("../generated/prisma/client").$Enums.LoadBalanceType;
1199
+ healthCheck: boolean;
1200
+ };
1201
+ };
1202
+ metadata: {
1203
+ enableStats: boolean;
1204
+ "observer.resetTraffic": boolean;
1205
+ "observer.period": string;
1206
+ };
1207
+ name: string;
1208
+ handler: {
1209
+ type: string;
1210
+ metadata?: undefined;
1211
+ };
1212
+ listener: {
1213
+ type: string;
1214
+ chain: string;
1215
+ metadata?: undefined;
1216
+ };
1217
+ })[];
1218
+ observers: {
1219
+ name: string;
1220
+ plugin: {
1221
+ type: string;
1222
+ addr: string;
1223
+ };
1224
+ }[];
1225
+ }>;
1226
+ checkTunnel(tunnel_type: TunnelType, in_node_group_id: number, out_node_group_id: number | null, listen_port: number | null, id: number | null): Promise<void>;
1227
+ updateTunnelOrder(id: number, order_by: number, user_id: number): Promise<void>;
1228
+ createTunnel(user_id: number, data: z.infer<typeof TunnelRequestSchema>, max_tunnels: number | null): Promise<void>;
1229
+ testTunnel(tunnel_id: number, ip: string, user_id?: number): Promise<{
1230
+ from: string;
1231
+ to: string;
1232
+ results: unknown[];
1233
+ }[]>;
1234
+ }
1235
+ export {};