@push.rocks/smartproxy 21.1.6 → 22.4.2

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 (103) hide show
  1. package/changelog.md +89 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/core/utils/shared-security-manager.d.ts +17 -0
  4. package/dist_ts/core/utils/shared-security-manager.js +66 -1
  5. package/dist_ts/proxies/http-proxy/default-certificates.d.ts +54 -0
  6. package/dist_ts/proxies/http-proxy/default-certificates.js +127 -0
  7. package/dist_ts/proxies/http-proxy/http-proxy.d.ts +1 -1
  8. package/dist_ts/proxies/http-proxy/http-proxy.js +9 -14
  9. package/dist_ts/proxies/http-proxy/index.d.ts +5 -1
  10. package/dist_ts/proxies/http-proxy/index.js +6 -2
  11. package/dist_ts/proxies/http-proxy/security-manager.d.ts +4 -12
  12. package/dist_ts/proxies/http-proxy/security-manager.js +66 -99
  13. package/dist_ts/proxies/nftables-proxy/index.d.ts +1 -0
  14. package/dist_ts/proxies/nftables-proxy/index.js +2 -1
  15. package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +4 -26
  16. package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +84 -236
  17. package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +9 -0
  18. package/dist_ts/proxies/nftables-proxy/utils/index.js +12 -0
  19. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +66 -0
  20. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +131 -0
  21. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +39 -0
  22. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +112 -0
  23. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +59 -0
  24. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +130 -0
  25. package/dist_ts/proxies/smart-proxy/certificate-manager.js +4 -3
  26. package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +13 -2
  27. package/dist_ts/proxies/smart-proxy/connection-manager.js +16 -6
  28. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +35 -10
  29. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +0 -1
  30. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +17 -0
  31. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +72 -9
  32. package/dist_ts/proxies/smart-proxy/security-manager.d.ts +14 -12
  33. package/dist_ts/proxies/smart-proxy/security-manager.js +80 -74
  34. package/dist_ts/proxies/smart-proxy/smart-proxy.js +1 -2
  35. package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +2 -9
  36. package/dist_ts/proxies/smart-proxy/tls-manager.js +3 -26
  37. package/dist_ts/proxies/smart-proxy/utils/index.d.ts +1 -1
  38. package/dist_ts/proxies/smart-proxy/utils/index.js +3 -4
  39. package/dist_ts/proxies/smart-proxy/utils/route-helpers/api-helpers.d.ts +49 -0
  40. package/dist_ts/proxies/smart-proxy/utils/route-helpers/api-helpers.js +108 -0
  41. package/dist_ts/proxies/smart-proxy/utils/route-helpers/dynamic-helpers.d.ts +57 -0
  42. package/dist_ts/proxies/smart-proxy/utils/route-helpers/dynamic-helpers.js +89 -0
  43. package/dist_ts/proxies/smart-proxy/utils/route-helpers/http-helpers.d.ts +17 -0
  44. package/dist_ts/proxies/smart-proxy/utils/route-helpers/http-helpers.js +32 -0
  45. package/dist_ts/proxies/smart-proxy/utils/route-helpers/https-helpers.d.ts +68 -0
  46. package/dist_ts/proxies/smart-proxy/utils/route-helpers/https-helpers.js +117 -0
  47. package/dist_ts/proxies/smart-proxy/utils/route-helpers/index.d.ts +17 -0
  48. package/dist_ts/proxies/smart-proxy/utils/route-helpers/index.js +27 -0
  49. package/dist_ts/proxies/smart-proxy/utils/route-helpers/load-balancer-helpers.d.ts +63 -0
  50. package/dist_ts/proxies/smart-proxy/utils/route-helpers/load-balancer-helpers.js +105 -0
  51. package/dist_ts/proxies/smart-proxy/utils/route-helpers/nftables-helpers.d.ts +83 -0
  52. package/dist_ts/proxies/smart-proxy/utils/route-helpers/nftables-helpers.js +126 -0
  53. package/dist_ts/proxies/smart-proxy/utils/route-helpers/security-helpers.d.ts +47 -0
  54. package/dist_ts/proxies/smart-proxy/utils/route-helpers/security-helpers.js +66 -0
  55. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +70 -0
  56. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +287 -0
  57. package/dist_ts/proxies/smart-proxy/utils/route-helpers/websocket-helpers.d.ts +46 -0
  58. package/dist_ts/proxies/smart-proxy/utils/route-helpers/websocket-helpers.js +67 -0
  59. package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +4 -457
  60. package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +6 -950
  61. package/dist_ts/proxies/smart-proxy/utils/route-utils.js +2 -2
  62. package/dist_ts/proxies/smart-proxy/utils/route-validator.d.ts +67 -1
  63. package/dist_ts/proxies/smart-proxy/utils/route-validator.js +266 -6
  64. package/npmextra.json +12 -6
  65. package/package.json +34 -24
  66. package/readme.hints.md +184 -1
  67. package/readme.md +235 -172
  68. package/ts/00_commitinfo_data.ts +1 -1
  69. package/ts/core/utils/shared-security-manager.ts +98 -13
  70. package/ts/proxies/http-proxy/default-certificates.ts +150 -0
  71. package/ts/proxies/http-proxy/http-proxy.ts +9 -15
  72. package/ts/proxies/http-proxy/index.ts +6 -1
  73. package/ts/proxies/http-proxy/security-manager.ts +141 -161
  74. package/ts/proxies/nftables-proxy/index.ts +1 -0
  75. package/ts/proxies/nftables-proxy/nftables-proxy.ts +116 -290
  76. package/ts/proxies/nftables-proxy/utils/index.ts +38 -0
  77. package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +162 -0
  78. package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +125 -0
  79. package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +156 -0
  80. package/ts/proxies/smart-proxy/certificate-manager.ts +3 -2
  81. package/ts/proxies/smart-proxy/connection-manager.ts +21 -8
  82. package/ts/proxies/smart-proxy/http-proxy-bridge.ts +39 -13
  83. package/ts/proxies/smart-proxy/models/interfaces.ts +0 -1
  84. package/ts/proxies/smart-proxy/route-connection-handler.ts +88 -16
  85. package/ts/proxies/smart-proxy/security-manager.ts +98 -86
  86. package/ts/proxies/smart-proxy/smart-proxy.ts +0 -2
  87. package/ts/proxies/smart-proxy/tls-manager.ts +1 -37
  88. package/ts/proxies/smart-proxy/utils/index.ts +3 -5
  89. package/ts/proxies/smart-proxy/utils/route-helpers/api-helpers.ts +144 -0
  90. package/ts/proxies/smart-proxy/utils/route-helpers/dynamic-helpers.ts +124 -0
  91. package/ts/proxies/smart-proxy/utils/route-helpers/http-helpers.ts +40 -0
  92. package/ts/proxies/smart-proxy/utils/route-helpers/https-helpers.ts +163 -0
  93. package/ts/proxies/smart-proxy/utils/route-helpers/index.ts +62 -0
  94. package/ts/proxies/smart-proxy/utils/route-helpers/load-balancer-helpers.ts +154 -0
  95. package/ts/proxies/smart-proxy/utils/route-helpers/nftables-helpers.ts +202 -0
  96. package/ts/proxies/smart-proxy/utils/route-helpers/security-helpers.ts +96 -0
  97. package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +337 -0
  98. package/ts/proxies/smart-proxy/utils/route-helpers/websocket-helpers.ts +98 -0
  99. package/ts/proxies/smart-proxy/utils/route-helpers.ts +5 -1302
  100. package/ts/proxies/smart-proxy/utils/route-utils.ts +1 -1
  101. package/ts/proxies/smart-proxy/utils/route-validator.ts +289 -7
  102. package/ts/proxies/http-proxy/certificate-manager.ts +0 -244
  103. package/ts/proxies/smart-proxy/utils/route-validators.ts +0 -283
@@ -0,0 +1,108 @@
1
+ /**
2
+ * API Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating API route configurations.
5
+ */
6
+ import { mergeRouteConfigs } from '../route-utils.js';
7
+ import { createHttpRoute } from './http-helpers.js';
8
+ import { createHttpsTerminateRoute } from './https-helpers.js';
9
+ /**
10
+ * Create an API route configuration
11
+ * @param domains Domain(s) to match
12
+ * @param apiPath API base path (e.g., "/api")
13
+ * @param target Target host and port
14
+ * @param options Additional route options
15
+ * @returns Route configuration object
16
+ */
17
+ export function createApiRoute(domains, apiPath, target, options = {}) {
18
+ // Normalize API path
19
+ const normalizedPath = apiPath.startsWith('/') ? apiPath : `/${apiPath}`;
20
+ const pathWithWildcard = normalizedPath.endsWith('/')
21
+ ? `${normalizedPath}*`
22
+ : `${normalizedPath}/*`;
23
+ // Create route match
24
+ const match = {
25
+ ports: options.useTls
26
+ ? (options.httpsPort || 443)
27
+ : (options.httpPort || 80),
28
+ domains,
29
+ path: pathWithWildcard
30
+ };
31
+ // Create route action
32
+ const action = {
33
+ type: 'forward',
34
+ targets: [target]
35
+ };
36
+ // Add TLS configuration if using HTTPS
37
+ if (options.useTls) {
38
+ action.tls = {
39
+ mode: 'terminate',
40
+ certificate: options.certificate || 'auto'
41
+ };
42
+ }
43
+ // Add CORS headers if requested
44
+ const headers = {};
45
+ if (options.addCorsHeaders) {
46
+ headers.response = {
47
+ 'Access-Control-Allow-Origin': '*',
48
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
49
+ 'Access-Control-Allow-Headers': 'Content-Type, Authorization',
50
+ 'Access-Control-Max-Age': '86400'
51
+ };
52
+ }
53
+ // Create the route config
54
+ return {
55
+ match,
56
+ action,
57
+ headers: Object.keys(headers).length > 0 ? headers : undefined,
58
+ name: options.name || `API Route ${normalizedPath} for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
59
+ priority: options.priority || 100, // Higher priority for specific path matches
60
+ ...options
61
+ };
62
+ }
63
+ /**
64
+ * Create an API Gateway route pattern
65
+ * @param domains Domain(s) to match
66
+ * @param apiBasePath Base path for API endpoints (e.g., '/api')
67
+ * @param target Target host and port
68
+ * @param options Additional route options
69
+ * @returns API route configuration
70
+ */
71
+ export function createApiGatewayRoute(domains, apiBasePath, target, options = {}) {
72
+ // Normalize apiBasePath to ensure it starts with / and doesn't end with /
73
+ const normalizedPath = apiBasePath.startsWith('/')
74
+ ? apiBasePath
75
+ : `/${apiBasePath}`;
76
+ // Add wildcard to path to match all API endpoints
77
+ const apiPath = normalizedPath.endsWith('/')
78
+ ? `${normalizedPath}*`
79
+ : `${normalizedPath}/*`;
80
+ // Create base route
81
+ const baseRoute = options.useTls
82
+ ? createHttpsTerminateRoute(domains, target, {
83
+ certificate: options.certificate || 'auto'
84
+ })
85
+ : createHttpRoute(domains, target);
86
+ // Add API-specific configurations
87
+ const apiRoute = {
88
+ match: {
89
+ ...baseRoute.match,
90
+ path: apiPath
91
+ },
92
+ name: options.name || `API Gateway: ${apiPath} -> ${Array.isArray(target.host) ? target.host.join(', ') : target.host}:${target.port}`,
93
+ priority: options.priority || 100 // Higher priority for specific path matching
94
+ };
95
+ // Add CORS headers if requested
96
+ if (options.addCorsHeaders) {
97
+ apiRoute.headers = {
98
+ response: {
99
+ 'Access-Control-Allow-Origin': '*',
100
+ 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
101
+ 'Access-Control-Allow-Headers': 'Content-Type, Authorization',
102
+ 'Access-Control-Max-Age': '86400'
103
+ }
104
+ };
105
+ }
106
+ return mergeRouteConfigs(baseRoute, apiRoute);
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3V0aWxzL3JvdXRlLWhlbHBlcnMvYXBpLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsT0FBMEIsRUFDMUIsT0FBZSxFQUNmLE1BQWlELEVBQ2pELFVBUUksRUFBRTtJQUVOLHFCQUFxQjtJQUNyQixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7SUFDekUsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUNuRCxDQUFDLENBQUMsR0FBRyxjQUFjLEdBQUc7UUFDdEIsQ0FBQyxDQUFDLEdBQUcsY0FBYyxJQUFJLENBQUM7SUFFMUIscUJBQXFCO0lBQ3JCLE1BQU0sS0FBSyxHQUFnQjtRQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDbkIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDNUIsT0FBTztRQUNQLElBQUksRUFBRSxnQkFBZ0I7S0FDdkIsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixNQUFNLE1BQU0sR0FBaUI7UUFDM0IsSUFBSSxFQUFFLFNBQVM7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
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Dynamic Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating dynamic routes
5
+ * with context-based host and port mapping.
6
+ */
7
+ import type { IRouteConfig, TPortRange, IRouteContext } from '../../models/route-types.js';
8
+ /**
9
+ * Create a helper function that applies a port offset
10
+ * @param offset The offset to apply to the matched port
11
+ * @returns A function that adds the offset to the matched port
12
+ */
13
+ export declare function createPortOffset(offset: number): (context: IRouteContext) => number;
14
+ /**
15
+ * Create a port mapping route with context-based port function
16
+ * @param options Port mapping route options
17
+ * @returns Route configuration object
18
+ */
19
+ export declare function createPortMappingRoute(options: {
20
+ sourcePortRange: TPortRange;
21
+ targetHost: string | string[] | ((context: IRouteContext) => string | string[]);
22
+ portMapper: (context: IRouteContext) => number;
23
+ name?: string;
24
+ domains?: string | string[];
25
+ priority?: number;
26
+ [key: string]: any;
27
+ }): IRouteConfig;
28
+ /**
29
+ * Create a simple offset port mapping route
30
+ * @param options Offset port mapping route options
31
+ * @returns Route configuration object
32
+ */
33
+ export declare function createOffsetPortMappingRoute(options: {
34
+ ports: TPortRange;
35
+ targetHost: string | string[];
36
+ offset: number;
37
+ name?: string;
38
+ domains?: string | string[];
39
+ priority?: number;
40
+ [key: string]: any;
41
+ }): IRouteConfig;
42
+ /**
43
+ * Create a dynamic route with context-based host and port mapping
44
+ * @param options Dynamic route options
45
+ * @returns Route configuration object
46
+ */
47
+ export declare function createDynamicRoute(options: {
48
+ ports: TPortRange;
49
+ targetHost: (context: IRouteContext) => string | string[];
50
+ portMapper: (context: IRouteContext) => number;
51
+ name?: string;
52
+ domains?: string | string[];
53
+ path?: string;
54
+ clientIp?: string[];
55
+ priority?: number;
56
+ [key: string]: any;
57
+ }): IRouteConfig;
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Dynamic Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating dynamic routes
5
+ * with context-based host and port mapping.
6
+ */
7
+ /**
8
+ * Create a helper function that applies a port offset
9
+ * @param offset The offset to apply to the matched port
10
+ * @returns A function that adds the offset to the matched port
11
+ */
12
+ export function createPortOffset(offset) {
13
+ return (context) => context.port + offset;
14
+ }
15
+ /**
16
+ * Create a port mapping route with context-based port function
17
+ * @param options Port mapping route options
18
+ * @returns Route configuration object
19
+ */
20
+ export function createPortMappingRoute(options) {
21
+ // Create route match
22
+ const match = {
23
+ ports: options.sourcePortRange,
24
+ domains: options.domains
25
+ };
26
+ // Create route action
27
+ const action = {
28
+ type: 'forward',
29
+ targets: [{
30
+ host: options.targetHost,
31
+ port: options.portMapper
32
+ }]
33
+ };
34
+ // Create the route config
35
+ return {
36
+ match,
37
+ action,
38
+ name: options.name || `Port Mapping Route for ${options.domains || 'all domains'}`,
39
+ priority: options.priority,
40
+ ...options
41
+ };
42
+ }
43
+ /**
44
+ * Create a simple offset port mapping route
45
+ * @param options Offset port mapping route options
46
+ * @returns Route configuration object
47
+ */
48
+ export function createOffsetPortMappingRoute(options) {
49
+ return createPortMappingRoute({
50
+ sourcePortRange: options.ports,
51
+ targetHost: options.targetHost,
52
+ portMapper: (context) => context.port + options.offset,
53
+ name: options.name || `Offset Mapping (${options.offset > 0 ? '+' : ''}${options.offset}) for ${options.domains || 'all domains'}`,
54
+ domains: options.domains,
55
+ priority: options.priority,
56
+ ...options
57
+ });
58
+ }
59
+ /**
60
+ * Create a dynamic route with context-based host and port mapping
61
+ * @param options Dynamic route options
62
+ * @returns Route configuration object
63
+ */
64
+ export function createDynamicRoute(options) {
65
+ // Create route match
66
+ const match = {
67
+ ports: options.ports,
68
+ domains: options.domains,
69
+ path: options.path,
70
+ clientIp: options.clientIp
71
+ };
72
+ // Create route action
73
+ const action = {
74
+ type: 'forward',
75
+ targets: [{
76
+ host: options.targetHost,
77
+ port: options.portMapper
78
+ }]
79
+ };
80
+ // Create the route config
81
+ return {
82
+ match,
83
+ action,
84
+ name: options.name || `Dynamic Route for ${options.domains || 'all domains'}`,
85
+ priority: options.priority,
86
+ ...options
87
+ };
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS91dGlscy9yb3V0ZS1oZWxwZXJzL2R5bmFtaWMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUlIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYztJQUM3QyxPQUFPLENBQUMsT0FBc0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7QUFDM0QsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsT0FRdEM7SUFDQyxxQkFBcUI7SUFDckIsTUFBTSxLQUFLLEdBQWdCO1FBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsZUFBZTtRQUM5QixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87S0FDekIsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixNQUFNLE1BQU0sR0FBaUI7UUFDM0IsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsQ0FBQztnQkFDUixJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVU7Z0JBQ3hCLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTthQUN6QixDQUFDO0tBQ0gsQ0FBQztJQUVGLDBCQUEwQjtJQUMxQixPQUFPO1FBQ0wsS0FBSztRQUNMLE1BQU07UUFDTixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSwwQkFBMEIsT0FBTyxDQUFDLE9BQU8sSUFBSSxhQUFhLEVBQUU7UUFDbEYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLEdBQUcsT0FBTztLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxPQVE1QztJQUNDLE9BQU8sc0JBQXNCLENBQUM7UUFDNUIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxLQUFLO1FBQzlCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtRQUM5QixVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU07UUFDdEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksbUJBQW1CLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxTQUFTLE9BQU8sQ0FBQyxPQUFPLElBQUksYUFBYSxFQUFFO1FBQ2xJLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDMUIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsT0FVbEM7SUFDQyxxQkFBcUI7SUFDckIsTUFBTSxLQUFLLEdBQWdCO1FBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1FBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtLQUMzQixDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLE1BQU0sTUFBTSxHQUFpQjtRQUMzQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxDQUFDO2dCQUNSLElBQUksRUFBRSxPQUFPLENBQUMsVUFBVTtnQkFDeEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxVQUFVO2FBQ3pCLENBQUM7S0FDSCxDQUFDO0lBRUYsMEJBQTBCO0lBQzFCLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLHFCQUFxQixPQUFPLENBQUMsT0FBTyxJQUFJLGFBQWEsRUFBRTtRQUM3RSxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDMUIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,17 @@
1
+ /**
2
+ * HTTP Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating HTTP route configurations.
5
+ */
6
+ import type { IRouteConfig } from '../../models/route-types.js';
7
+ /**
8
+ * Create an HTTP-only route configuration
9
+ * @param domains Domain(s) to match
10
+ * @param target Target host and port
11
+ * @param options Additional route options
12
+ * @returns Route configuration object
13
+ */
14
+ export declare function createHttpRoute(domains: string | string[], target: {
15
+ host: string | string[];
16
+ port: number;
17
+ }, options?: Partial<IRouteConfig>): IRouteConfig;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * HTTP Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating HTTP route configurations.
5
+ */
6
+ /**
7
+ * Create an HTTP-only route configuration
8
+ * @param domains Domain(s) to match
9
+ * @param target Target host and port
10
+ * @param options Additional route options
11
+ * @returns Route configuration object
12
+ */
13
+ export function createHttpRoute(domains, target, options = {}) {
14
+ // Create route match
15
+ const match = {
16
+ ports: options.match?.ports || 80,
17
+ domains
18
+ };
19
+ // Create route action
20
+ const action = {
21
+ type: 'forward',
22
+ targets: [target]
23
+ };
24
+ // Create the route config
25
+ return {
26
+ match,
27
+ action,
28
+ name: options.name || `HTTP Route for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
29
+ ...options
30
+ };
31
+ }
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS91dGlscy9yb3V0ZS1oZWxwZXJzL2h0dHAtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBSUg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsT0FBMEIsRUFDMUIsTUFBaUQsRUFDakQsVUFBaUMsRUFBRTtJQUVuQyxxQkFBcUI7SUFDckIsTUFBTSxLQUFLLEdBQWdCO1FBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2pDLE9BQU87S0FDUixDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLE1BQU0sTUFBTSxHQUFpQjtRQUMzQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztLQUNsQixDQUFDO0lBRUYsMEJBQTBCO0lBQzFCLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLGtCQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7UUFDL0YsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,68 @@
1
+ /**
2
+ * HTTPS Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating HTTPS route configurations
5
+ * including TLS termination and passthrough routes.
6
+ */
7
+ import type { IRouteConfig } from '../../models/route-types.js';
8
+ /**
9
+ * Create an HTTPS route with TLS termination
10
+ * @param domains Domain(s) to match
11
+ * @param target Target host and port
12
+ * @param options Additional route options
13
+ * @returns Route configuration object
14
+ */
15
+ export declare function createHttpsTerminateRoute(domains: string | string[], target: {
16
+ host: string | string[];
17
+ port: number;
18
+ }, options?: {
19
+ certificate?: 'auto' | {
20
+ key: string;
21
+ cert: string;
22
+ };
23
+ httpPort?: number | number[];
24
+ httpsPort?: number | number[];
25
+ reencrypt?: boolean;
26
+ name?: string;
27
+ [key: string]: any;
28
+ }): IRouteConfig;
29
+ /**
30
+ * Create an HTTP to HTTPS redirect route
31
+ * @param domains Domain(s) to match
32
+ * @param httpsPort HTTPS port to redirect to (default: 443)
33
+ * @param options Additional route options
34
+ * @returns Route configuration object
35
+ */
36
+ export declare function createHttpToHttpsRedirect(domains: string | string[], httpsPort?: number, options?: Partial<IRouteConfig>): IRouteConfig;
37
+ /**
38
+ * Create an HTTPS passthrough route (SNI-based forwarding without TLS termination)
39
+ * @param domains Domain(s) to match
40
+ * @param target Target host and port
41
+ * @param options Additional route options
42
+ * @returns Route configuration object
43
+ */
44
+ export declare function createHttpsPassthroughRoute(domains: string | string[], target: {
45
+ host: string | string[];
46
+ port: number;
47
+ }, options?: Partial<IRouteConfig>): IRouteConfig;
48
+ /**
49
+ * Create a complete HTTPS server with HTTP to HTTPS redirects
50
+ * @param domains Domain(s) to match
51
+ * @param target Target host and port
52
+ * @param options Additional configuration options
53
+ * @returns Array of two route configurations (HTTPS and HTTP redirect)
54
+ */
55
+ export declare function createCompleteHttpsServer(domains: string | string[], target: {
56
+ host: string | string[];
57
+ port: number;
58
+ }, options?: {
59
+ certificate?: 'auto' | {
60
+ key: string;
61
+ cert: string;
62
+ };
63
+ httpPort?: number | number[];
64
+ httpsPort?: number | number[];
65
+ reencrypt?: boolean;
66
+ name?: string;
67
+ [key: string]: any;
68
+ }): IRouteConfig[];
@@ -0,0 +1,117 @@
1
+ /**
2
+ * HTTPS Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating HTTPS route configurations
5
+ * including TLS termination and passthrough routes.
6
+ */
7
+ import { SocketHandlers } from './socket-handlers.js';
8
+ /**
9
+ * Create an HTTPS route with TLS termination
10
+ * @param domains Domain(s) to match
11
+ * @param target Target host and port
12
+ * @param options Additional route options
13
+ * @returns Route configuration object
14
+ */
15
+ export function createHttpsTerminateRoute(domains, target, options = {}) {
16
+ // Create route match
17
+ const match = {
18
+ ports: options.httpsPort || 443,
19
+ domains
20
+ };
21
+ // Create route action
22
+ const action = {
23
+ type: 'forward',
24
+ targets: [target],
25
+ tls: {
26
+ mode: options.reencrypt ? 'terminate-and-reencrypt' : 'terminate',
27
+ certificate: options.certificate || 'auto'
28
+ }
29
+ };
30
+ // Create the route config
31
+ return {
32
+ match,
33
+ action,
34
+ name: options.name || `HTTPS Route for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
35
+ ...options
36
+ };
37
+ }
38
+ /**
39
+ * Create an HTTP to HTTPS redirect route
40
+ * @param domains Domain(s) to match
41
+ * @param httpsPort HTTPS port to redirect to (default: 443)
42
+ * @param options Additional route options
43
+ * @returns Route configuration object
44
+ */
45
+ export function createHttpToHttpsRedirect(domains, httpsPort = 443, options = {}) {
46
+ // Create route match
47
+ const match = {
48
+ ports: options.match?.ports || 80,
49
+ domains
50
+ };
51
+ // Create route action
52
+ const action = {
53
+ type: 'socket-handler',
54
+ socketHandler: SocketHandlers.httpRedirect(`https://{domain}:${httpsPort}{path}`, 301)
55
+ };
56
+ // Create the route config
57
+ return {
58
+ match,
59
+ action,
60
+ name: options.name || `HTTP to HTTPS Redirect for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
61
+ ...options
62
+ };
63
+ }
64
+ /**
65
+ * Create an HTTPS passthrough route (SNI-based forwarding without TLS termination)
66
+ * @param domains Domain(s) to match
67
+ * @param target Target host and port
68
+ * @param options Additional route options
69
+ * @returns Route configuration object
70
+ */
71
+ export function createHttpsPassthroughRoute(domains, target, options = {}) {
72
+ // Create route match
73
+ const match = {
74
+ ports: options.match?.ports || 443,
75
+ domains
76
+ };
77
+ // Create route action
78
+ const action = {
79
+ type: 'forward',
80
+ targets: [target],
81
+ tls: {
82
+ mode: 'passthrough'
83
+ }
84
+ };
85
+ // Create the route config
86
+ return {
87
+ match,
88
+ action,
89
+ name: options.name || `HTTPS Passthrough for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
90
+ ...options
91
+ };
92
+ }
93
+ /**
94
+ * Create a complete HTTPS server with HTTP to HTTPS redirects
95
+ * @param domains Domain(s) to match
96
+ * @param target Target host and port
97
+ * @param options Additional configuration options
98
+ * @returns Array of two route configurations (HTTPS and HTTP redirect)
99
+ */
100
+ export function createCompleteHttpsServer(domains, target, options = {}) {
101
+ // Create the HTTPS route
102
+ const httpsRoute = createHttpsTerminateRoute(domains, target, options);
103
+ // Create the HTTP redirect route
104
+ const httpRedirectRoute = createHttpToHttpsRedirect(domains,
105
+ // Extract the HTTPS port from the HTTPS route - ensure it's a number
106
+ typeof options.httpsPort === 'number' ? options.httpsPort :
107
+ Array.isArray(options.httpsPort) ? options.httpsPort[0] : 443, {
108
+ // Set the HTTP port
109
+ match: {
110
+ ports: options.httpPort || 80,
111
+ domains
112
+ },
113
+ name: `HTTP to HTTPS Redirect for ${Array.isArray(domains) ? domains.join(', ') : domains}`
114
+ });
115
+ return [httpsRoute, httpRedirectRoute];
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cHMtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RzL3Byb3hpZXMvc21hcnQtcHJveHkvdXRpbHMvcm91dGUtaGVscGVycy9odHRwcy1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXREOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsT0FBMEIsRUFDMUIsTUFBaUQsRUFDakQsVUFPSSxFQUFFO0lBRU4scUJBQXFCO0lBQ3JCLE1BQU0sS0FBSyxHQUFnQjtRQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHO1FBQy9CLE9BQU87S0FDUixDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLE1BQU0sTUFBTSxHQUFpQjtRQUMzQixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqQixHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLFdBQVc7WUFDakUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXLElBQUksTUFBTTtTQUMzQztLQUNGLENBQUM7SUFFRiwwQkFBMEI7SUFDMUIsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO1FBQ04sSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksbUJBQW1CLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtRQUNoRyxHQUFHLE9BQU87S0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsT0FBMEIsRUFDMUIsWUFBb0IsR0FBRyxFQUN2QixVQUFpQyxFQUFFO0lBRW5DLHFCQUFxQjtJQUNyQixNQUFNLEtBQUssR0FBZ0I7UUFDekIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakMsT0FBTztLQUNSLENBQUM7SUFFRixzQkFBc0I7SUFDdEIsTUFBTSxNQUFNLEdBQWlCO1FBQzNCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsYUFBYSxFQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUMsb0JBQW9CLFNBQVMsUUFBUSxFQUFFLEdBQUcsQ0FBQztLQUN2RixDQUFDO0lBRUYsMEJBQTBCO0lBQzFCLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLDhCQUE4QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7UUFDM0csR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLE9BQTBCLEVBQzFCLE1BQWlELEVBQ2pELFVBQWlDLEVBQUU7SUFFbkMscUJBQXFCO0lBQ3JCLE1BQU0sS0FBSyxHQUFnQjtRQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksR0FBRztRQUNsQyxPQUFPO0tBQ1IsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixNQUFNLE1BQU0sR0FBaUI7UUFDM0IsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsR0FBRyxFQUFFO1lBQ0gsSUFBSSxFQUFFLGFBQWE7U0FDcEI7S0FDRixDQUFDO0lBRUYsMEJBQTBCO0lBQzFCLE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtRQUNOLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLHlCQUF5QixLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7UUFDdEcsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLE9BQTBCLEVBQzFCLE1BQWlELEVBQ2pELFVBT0ksRUFBRTtJQUVOLHlCQUF5QjtJQUN6QixNQUFNLFVBQVUsR0FBRyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRXZFLGlDQUFpQztJQUNqQyxNQUFNLGlCQUFpQixHQUFHLHlCQUF5QixDQUNqRCxPQUFPO0lBQ1AscUVBQXFFO0lBQ3JFLE9BQU8sT0FBTyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUMvRDtRQUNFLG9CQUFvQjtRQUNwQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUNELElBQUksRUFBRSw4QkFBOEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO0tBQzVGLENBQ0YsQ0FBQztJQUVGLE9BQU8sQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztBQUN6QyxDQUFDIn0=
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating route configurations for common scenarios.
5
+ * These functions aim to simplify the creation of route configurations for typical use cases.
6
+ *
7
+ * This barrel file re-exports all helper functions for backwards compatibility.
8
+ */
9
+ export { createHttpRoute } from './http-helpers.js';
10
+ export { createHttpsTerminateRoute, createHttpToHttpsRedirect, createHttpsPassthroughRoute, createCompleteHttpsServer } from './https-helpers.js';
11
+ export { createWebSocketRoute } from './websocket-helpers.js';
12
+ export { createLoadBalancerRoute, createSmartLoadBalancer } from './load-balancer-helpers.js';
13
+ export { createNfTablesRoute, createNfTablesTerminateRoute, createCompleteNfTablesHttpsServer } from './nftables-helpers.js';
14
+ export { createPortOffset, createPortMappingRoute, createOffsetPortMappingRoute, createDynamicRoute } from './dynamic-helpers.js';
15
+ export { createApiRoute, createApiGatewayRoute } from './api-helpers.js';
16
+ export { addRateLimiting, addBasicAuth, addJwtAuth } from './security-helpers.js';
17
+ export { SocketHandlers, createSocketHandlerRoute } from './socket-handlers.js';
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating route configurations for common scenarios.
5
+ * These functions aim to simplify the creation of route configurations for typical use cases.
6
+ *
7
+ * This barrel file re-exports all helper functions for backwards compatibility.
8
+ */
9
+ // HTTP helpers
10
+ export { createHttpRoute } from './http-helpers.js';
11
+ // HTTPS helpers
12
+ export { createHttpsTerminateRoute, createHttpToHttpsRedirect, createHttpsPassthroughRoute, createCompleteHttpsServer } from './https-helpers.js';
13
+ // WebSocket helpers
14
+ export { createWebSocketRoute } from './websocket-helpers.js';
15
+ // Load balancer helpers
16
+ export { createLoadBalancerRoute, createSmartLoadBalancer } from './load-balancer-helpers.js';
17
+ // NFTables helpers
18
+ export { createNfTablesRoute, createNfTablesTerminateRoute, createCompleteNfTablesHttpsServer } from './nftables-helpers.js';
19
+ // Dynamic routing helpers
20
+ export { createPortOffset, createPortMappingRoute, createOffsetPortMappingRoute, createDynamicRoute } from './dynamic-helpers.js';
21
+ // API helpers
22
+ export { createApiRoute, createApiGatewayRoute } from './api-helpers.js';
23
+ // Security helpers
24
+ export { addRateLimiting, addBasicAuth, addJwtAuth } from './security-helpers.js';
25
+ // Socket handlers
26
+ export { SocketHandlers, createSocketHandlerRoute } from './socket-handlers.js';
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3V0aWxzL3JvdXRlLWhlbHBlcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUVILGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUQsd0JBQXdCO0FBQ3hCLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3hCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsbUJBQW1CO0FBQ25CLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLGlDQUFpQyxFQUNsQyxNQUFNLHVCQUF1QixDQUFDO0FBRS9CLDBCQUEwQjtBQUMxQixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFDNUIsa0JBQWtCLEVBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsY0FBYztBQUNkLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3RCLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsbUJBQW1CO0FBQ25CLE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLFVBQVUsRUFDWCxNQUFNLHVCQUF1QixDQUFDO0FBRS9CLGtCQUFrQjtBQUNsQixPQUFPLEVBQ0wsY0FBYyxFQUNkLHdCQUF3QixFQUN6QixNQUFNLHNCQUFzQixDQUFDIn0=
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Load Balancer Route Helper Functions
3
+ *
4
+ * This module provides utility functions for creating load balancer route configurations.
5
+ */
6
+ import type { IRouteConfig, TPortRange, IRouteContext } from '../../models/route-types.js';
7
+ /**
8
+ * Create a load balancer route (round-robin between multiple backend hosts)
9
+ * @param domains Domain(s) to match
10
+ * @param backendsOrHosts Array of backend servers OR array of host strings (legacy)
11
+ * @param portOrOptions Port number (legacy) OR options object
12
+ * @param options Additional route options (legacy)
13
+ * @returns Route configuration object
14
+ */
15
+ export declare function createLoadBalancerRoute(domains: string | string[], backendsOrHosts: Array<{
16
+ host: string;
17
+ port: number;
18
+ }> | string[], portOrOptions?: number | {
19
+ tls?: {
20
+ mode: 'passthrough' | 'terminate' | 'terminate-and-reencrypt';
21
+ certificate?: 'auto' | {
22
+ key: string;
23
+ cert: string;
24
+ };
25
+ };
26
+ useTls?: boolean;
27
+ certificate?: 'auto' | {
28
+ key: string;
29
+ cert: string;
30
+ };
31
+ algorithm?: 'round-robin' | 'least-connections' | 'ip-hash';
32
+ healthCheck?: {
33
+ path: string;
34
+ interval: number;
35
+ timeout: number;
36
+ unhealthyThreshold: number;
37
+ healthyThreshold: number;
38
+ };
39
+ [key: string]: any;
40
+ }, options?: {
41
+ tls?: {
42
+ mode: 'passthrough' | 'terminate' | 'terminate-and-reencrypt';
43
+ certificate?: 'auto' | {
44
+ key: string;
45
+ cert: string;
46
+ };
47
+ };
48
+ [key: string]: any;
49
+ }): IRouteConfig;
50
+ /**
51
+ * Create a smart load balancer with dynamic domain-based backend selection
52
+ * @param options Smart load balancer options
53
+ * @returns Route configuration object
54
+ */
55
+ export declare function createSmartLoadBalancer(options: {
56
+ ports: TPortRange;
57
+ domainTargets: Record<string, string | string[]>;
58
+ portMapper: (context: IRouteContext) => number;
59
+ name?: string;
60
+ defaultTarget?: string | string[];
61
+ priority?: number;
62
+ [key: string]: any;
63
+ }): IRouteConfig;