@push.rocks/smartproxy 15.0.2 → 16.0.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.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/certificate/index.d.ts +10 -4
- package/dist_ts/certificate/index.js +5 -7
- package/dist_ts/certificate/models/certificate-types.d.ts +35 -15
- package/dist_ts/certificate/providers/cert-provisioner.d.ts +41 -15
- package/dist_ts/certificate/providers/cert-provisioner.js +201 -41
- package/dist_ts/forwarding/config/forwarding-types.d.ts +40 -76
- package/dist_ts/forwarding/config/forwarding-types.js +19 -18
- package/dist_ts/forwarding/config/index.d.ts +4 -2
- package/dist_ts/forwarding/config/index.js +5 -3
- package/dist_ts/forwarding/handlers/base-handler.js +3 -1
- package/dist_ts/forwarding/index.d.ts +5 -6
- package/dist_ts/forwarding/index.js +3 -3
- package/dist_ts/http/models/http-types.js +1 -1
- package/dist_ts/http/port80/acme-interfaces.d.ts +30 -0
- package/dist_ts/http/port80/acme-interfaces.js +46 -1
- package/dist_ts/http/port80/port80-handler.d.ts +17 -2
- package/dist_ts/http/port80/port80-handler.js +49 -11
- package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -61
- package/dist_ts/proxies/smart-proxy/models/interfaces.js +5 -4
- package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +118 -4
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +70 -4
- package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +193 -43
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +2 -5
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +25 -146
- package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +7 -0
- package/dist_ts/proxies/smart-proxy/route-helpers/index.js +9 -0
- package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +54 -1
- package/dist_ts/proxies/smart-proxy/route-helpers.js +102 -1
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +3 -9
- package/dist_ts/proxies/smart-proxy/route-manager.js +3 -115
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +72 -10
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +135 -268
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +3 -3
- package/dist_ts/proxies/smart-proxy/utils/index.d.ts +12 -0
- package/dist_ts/proxies/smart-proxy/utils/index.js +19 -0
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +174 -0
- package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +332 -0
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +51 -0
- package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +124 -0
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +131 -0
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +217 -0
- package/dist_ts/proxies/smart-proxy/utils/route-utils.d.ts +79 -0
- package/dist_ts/proxies/smart-proxy/utils/route-utils.js +266 -0
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +73 -0
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +242 -0
- package/package.json +1 -1
- package/readme.md +139 -111
- package/readme.plan.md +164 -312
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/certificate/index.ts +17 -9
- package/ts/certificate/models/certificate-types.ts +37 -16
- package/ts/certificate/providers/cert-provisioner.ts +247 -54
- package/ts/forwarding/config/forwarding-types.ts +79 -107
- package/ts/forwarding/config/index.ts +4 -2
- package/ts/forwarding/handlers/base-handler.ts +4 -2
- package/ts/forwarding/index.ts +3 -2
- package/ts/http/models/http-types.ts +0 -1
- package/ts/http/port80/acme-interfaces.ts +84 -0
- package/ts/http/port80/port80-handler.ts +61 -15
- package/ts/proxies/smart-proxy/models/interfaces.ts +7 -64
- package/ts/proxies/smart-proxy/models/route-types.ts +152 -22
- package/ts/proxies/smart-proxy/network-proxy-bridge.ts +226 -55
- package/ts/proxies/smart-proxy/route-connection-handler.ts +36 -205
- package/ts/proxies/smart-proxy/route-helpers/index.ts +9 -0
- package/ts/proxies/smart-proxy/route-helpers.ts +165 -11
- package/ts/proxies/smart-proxy/route-manager.ts +3 -130
- package/ts/proxies/smart-proxy/smart-proxy.ts +157 -329
- package/ts/proxies/smart-proxy/timeout-manager.ts +2 -2
- package/ts/proxies/smart-proxy/utils/index.ts +40 -0
- package/ts/proxies/smart-proxy/utils/route-helpers.ts +455 -0
- package/ts/proxies/smart-proxy/utils/route-migration-utils.ts +165 -0
- package/ts/proxies/smart-proxy/utils/route-patterns.ts +309 -0
- package/ts/proxies/smart-proxy/utils/route-utils.ts +330 -0
- package/ts/proxies/smart-proxy/utils/route-validators.ts +269 -0
- package/ts/forwarding/config/domain-config.ts +0 -28
- package/ts/forwarding/config/domain-manager.ts +0 -283
- package/ts/proxies/smart-proxy/connection-handler.ts +0 -1240
- package/ts/proxies/smart-proxy/port-range-manager.ts +0 -211
- /package/ts/proxies/smart-proxy/{domain-config-manager.ts → domain-config-manager.ts.bak} +0 -0
|
@@ -50,8 +50,8 @@ export class TimeoutManager {
|
|
|
50
50
|
* Calculate effective max lifetime based on connection type
|
|
51
51
|
*/
|
|
52
52
|
getEffectiveMaxLifetime(record) {
|
|
53
|
-
// Use
|
|
54
|
-
const baseTimeout = record.
|
|
53
|
+
// Use route-specific timeout if available from the routeConfig
|
|
54
|
+
const baseTimeout = record.routeConfig?.action.advanced?.timeout ||
|
|
55
55
|
this.settings.maxConnectionLifetime ||
|
|
56
56
|
86400000; // 24 hours default
|
|
57
57
|
// For immortal keep-alive connections, use an extremely long lifetime
|
|
@@ -151,4 +151,4 @@ export class TimeoutManager {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZW91dC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS90aW1lb3V0LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFvQixRQUE0QjtRQUE1QixhQUFRLEdBQVIsUUFBUSxDQUFvQjtJQUFHLENBQUM7SUFFcEQ7O09BRUc7SUFDSSxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3RDLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLENBQUMsZ0NBQWdDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsV0FBbUIsRUFBRSxtQkFBMkIsQ0FBQztRQUN2RSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQsTUFBTSxTQUFTLEdBQUcsZUFBZSxHQUFHLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQzNCLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUN4RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0ksY0FBYyxDQUFDLE1BQXlCO1FBQzdDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRWpDLCtCQUErQjtRQUMvQixJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDekMsQ0FBQztJ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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmartProxy Route Utilities
|
|
3
|
+
*
|
|
4
|
+
* This file exports all route-related utilities for the SmartProxy module,
|
|
5
|
+
* including helpers, validators, utilities, and patterns for working with routes.
|
|
6
|
+
*/
|
|
7
|
+
export * from './route-helpers.js';
|
|
8
|
+
export * from './route-validators.js';
|
|
9
|
+
export * from './route-utils.js';
|
|
10
|
+
import { createWebSocketRoute as createWebSocketPatternRoute, createLoadBalancerRoute as createLoadBalancerPatternRoute, createApiGatewayRoute, createStaticFileServerRoute, addRateLimiting, addBasicAuth, addJwtAuth } from './route-patterns.js';
|
|
11
|
+
export { createWebSocketPatternRoute, createLoadBalancerPatternRoute, createApiGatewayRoute, createStaticFileServerRoute, addRateLimiting, addBasicAuth, addJwtAuth };
|
|
12
|
+
export * from './route-migration-utils.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmartProxy Route Utilities
|
|
3
|
+
*
|
|
4
|
+
* This file exports all route-related utilities for the SmartProxy module,
|
|
5
|
+
* including helpers, validators, utilities, and patterns for working with routes.
|
|
6
|
+
*/
|
|
7
|
+
// Export route helpers for creating routes
|
|
8
|
+
export * from './route-helpers.js';
|
|
9
|
+
// Export route validators for validating route configurations
|
|
10
|
+
export * from './route-validators.js';
|
|
11
|
+
// Export route utilities for route operations
|
|
12
|
+
export * from './route-utils.js';
|
|
13
|
+
// Export route patterns with renamed exports to avoid conflicts
|
|
14
|
+
import { createWebSocketRoute as createWebSocketPatternRoute, createLoadBalancerRoute as createLoadBalancerPatternRoute, createApiGatewayRoute, createStaticFileServerRoute, addRateLimiting, addBasicAuth, addJwtAuth } from './route-patterns.js';
|
|
15
|
+
export { createWebSocketPatternRoute, createLoadBalancerPatternRoute, createApiGatewayRoute, createStaticFileServerRoute, addRateLimiting, addBasicAuth, addJwtAuth };
|
|
16
|
+
// Export migration utilities for transitioning from domain-based to route-based configs
|
|
17
|
+
// Note: These will be removed in a future version once migration is complete
|
|
18
|
+
export * from './route-migration-utils.js';
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsMkNBQTJDO0FBQzNDLGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsOERBQThEO0FBQzlELGNBQWMsdUJBQXVCLENBQUM7QUFFdEMsOENBQThDO0FBQzlDLGNBQWMsa0JBQWtCLENBQUM7QUFFakMsZ0VBQWdFO0FBQ2hFLE9BQU8sRUFDTCxvQkFBb0IsSUFBSSwyQkFBMkIsRUFDbkQsdUJBQXVCLElBQUksOEJBQThCLEVBQ3pELHFCQUFxQixFQUNyQiwyQkFBMkIsRUFDM0IsZUFBZSxFQUNmLFlBQVksRUFDWixVQUFVLEVBQ1gsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDhCQUE4QixFQUM5QixxQkFBcUIsRUFDckIsMkJBQTJCLEVBQzNCLGVBQWUsRUFDZixZQUFZLEVBQ1osVUFBVSxFQUNYLENBQUM7QUFFRix3RkFBd0Y7QUFDeEYsNkVBQTZFO0FBQzdFLGNBQWMsNEJBQTRCLENBQUMifQ==
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* This file 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 module includes helper functions for creating:
|
|
8
|
+
* - HTTP routes (createHttpRoute)
|
|
9
|
+
* - HTTPS routes with TLS termination (createHttpsTerminateRoute)
|
|
10
|
+
* - HTTP to HTTPS redirects (createHttpToHttpsRedirect)
|
|
11
|
+
* - HTTPS passthrough routes (createHttpsPassthroughRoute)
|
|
12
|
+
* - Complete HTTPS servers with redirects (createCompleteHttpsServer)
|
|
13
|
+
* - Load balancer routes (createLoadBalancerRoute)
|
|
14
|
+
* - Static file server routes (createStaticFileRoute)
|
|
15
|
+
* - API routes (createApiRoute)
|
|
16
|
+
* - WebSocket routes (createWebSocketRoute)
|
|
17
|
+
*/
|
|
18
|
+
import type { IRouteConfig } from '../models/route-types.js';
|
|
19
|
+
/**
|
|
20
|
+
* Create an HTTP-only route configuration
|
|
21
|
+
* @param domains Domain(s) to match
|
|
22
|
+
* @param target Target host and port
|
|
23
|
+
* @param options Additional route options
|
|
24
|
+
* @returns Route configuration object
|
|
25
|
+
*/
|
|
26
|
+
export declare function createHttpRoute(domains: string | string[], target: {
|
|
27
|
+
host: string | string[];
|
|
28
|
+
port: number;
|
|
29
|
+
}, options?: Partial<IRouteConfig>): IRouteConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Create an HTTPS route with TLS termination (including HTTP redirect to HTTPS)
|
|
32
|
+
* @param domains Domain(s) to match
|
|
33
|
+
* @param target Target host and port
|
|
34
|
+
* @param options Additional route options
|
|
35
|
+
* @returns Route configuration object
|
|
36
|
+
*/
|
|
37
|
+
export declare function createHttpsTerminateRoute(domains: string | string[], target: {
|
|
38
|
+
host: string | string[];
|
|
39
|
+
port: number;
|
|
40
|
+
}, options?: {
|
|
41
|
+
certificate?: 'auto' | {
|
|
42
|
+
key: string;
|
|
43
|
+
cert: string;
|
|
44
|
+
};
|
|
45
|
+
httpPort?: number | number[];
|
|
46
|
+
httpsPort?: number | number[];
|
|
47
|
+
reencrypt?: boolean;
|
|
48
|
+
name?: string;
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}): IRouteConfig;
|
|
51
|
+
/**
|
|
52
|
+
* Create an HTTP to HTTPS redirect route
|
|
53
|
+
* @param domains Domain(s) to match
|
|
54
|
+
* @param httpsPort HTTPS port to redirect to (default: 443)
|
|
55
|
+
* @param options Additional route options
|
|
56
|
+
* @returns Route configuration object
|
|
57
|
+
*/
|
|
58
|
+
export declare function createHttpToHttpsRedirect(domains: string | string[], httpsPort?: number, options?: Partial<IRouteConfig>): IRouteConfig;
|
|
59
|
+
/**
|
|
60
|
+
* Create an HTTPS passthrough route (SNI-based forwarding without TLS termination)
|
|
61
|
+
* @param domains Domain(s) to match
|
|
62
|
+
* @param target Target host and port
|
|
63
|
+
* @param options Additional route options
|
|
64
|
+
* @returns Route configuration object
|
|
65
|
+
*/
|
|
66
|
+
export declare function createHttpsPassthroughRoute(domains: string | string[], target: {
|
|
67
|
+
host: string | string[];
|
|
68
|
+
port: number;
|
|
69
|
+
}, options?: Partial<IRouteConfig>): IRouteConfig;
|
|
70
|
+
/**
|
|
71
|
+
* Create a complete HTTPS server with HTTP to HTTPS redirects
|
|
72
|
+
* @param domains Domain(s) to match
|
|
73
|
+
* @param target Target host and port
|
|
74
|
+
* @param options Additional configuration options
|
|
75
|
+
* @returns Array of two route configurations (HTTPS and HTTP redirect)
|
|
76
|
+
*/
|
|
77
|
+
export declare function createCompleteHttpsServer(domains: string | string[], target: {
|
|
78
|
+
host: string | string[];
|
|
79
|
+
port: number;
|
|
80
|
+
}, options?: {
|
|
81
|
+
certificate?: 'auto' | {
|
|
82
|
+
key: string;
|
|
83
|
+
cert: string;
|
|
84
|
+
};
|
|
85
|
+
httpPort?: number | number[];
|
|
86
|
+
httpsPort?: number | number[];
|
|
87
|
+
reencrypt?: boolean;
|
|
88
|
+
name?: string;
|
|
89
|
+
[key: string]: any;
|
|
90
|
+
}): IRouteConfig[];
|
|
91
|
+
/**
|
|
92
|
+
* Create a load balancer route (round-robin between multiple backend hosts)
|
|
93
|
+
* @param domains Domain(s) to match
|
|
94
|
+
* @param hosts Array of backend hosts to load balance between
|
|
95
|
+
* @param port Backend port
|
|
96
|
+
* @param options Additional route options
|
|
97
|
+
* @returns Route configuration object
|
|
98
|
+
*/
|
|
99
|
+
export declare function createLoadBalancerRoute(domains: string | string[], hosts: string[], port: number, options?: {
|
|
100
|
+
tls?: {
|
|
101
|
+
mode: 'passthrough' | 'terminate' | 'terminate-and-reencrypt';
|
|
102
|
+
certificate?: 'auto' | {
|
|
103
|
+
key: string;
|
|
104
|
+
cert: string;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
[key: string]: any;
|
|
108
|
+
}): IRouteConfig;
|
|
109
|
+
/**
|
|
110
|
+
* Create a static file server route
|
|
111
|
+
* @param domains Domain(s) to match
|
|
112
|
+
* @param rootDir Root directory path for static files
|
|
113
|
+
* @param options Additional route options
|
|
114
|
+
* @returns Route configuration object
|
|
115
|
+
*/
|
|
116
|
+
export declare function createStaticFileRoute(domains: string | string[], rootDir: string, options?: {
|
|
117
|
+
indexFiles?: string[];
|
|
118
|
+
serveOnHttps?: boolean;
|
|
119
|
+
certificate?: 'auto' | {
|
|
120
|
+
key: string;
|
|
121
|
+
cert: string;
|
|
122
|
+
};
|
|
123
|
+
httpPort?: number | number[];
|
|
124
|
+
httpsPort?: number | number[];
|
|
125
|
+
name?: string;
|
|
126
|
+
[key: string]: any;
|
|
127
|
+
}): IRouteConfig;
|
|
128
|
+
/**
|
|
129
|
+
* Create an API route configuration
|
|
130
|
+
* @param domains Domain(s) to match
|
|
131
|
+
* @param apiPath API base path (e.g., "/api")
|
|
132
|
+
* @param target Target host and port
|
|
133
|
+
* @param options Additional route options
|
|
134
|
+
* @returns Route configuration object
|
|
135
|
+
*/
|
|
136
|
+
export declare function createApiRoute(domains: string | string[], apiPath: string, target: {
|
|
137
|
+
host: string | string[];
|
|
138
|
+
port: number;
|
|
139
|
+
}, options?: {
|
|
140
|
+
useTls?: boolean;
|
|
141
|
+
certificate?: 'auto' | {
|
|
142
|
+
key: string;
|
|
143
|
+
cert: string;
|
|
144
|
+
};
|
|
145
|
+
addCorsHeaders?: boolean;
|
|
146
|
+
httpPort?: number | number[];
|
|
147
|
+
httpsPort?: number | number[];
|
|
148
|
+
name?: string;
|
|
149
|
+
[key: string]: any;
|
|
150
|
+
}): IRouteConfig;
|
|
151
|
+
/**
|
|
152
|
+
* Create a WebSocket route configuration
|
|
153
|
+
* @param domains Domain(s) to match
|
|
154
|
+
* @param wsPath WebSocket path (e.g., "/ws")
|
|
155
|
+
* @param target Target WebSocket server host and port
|
|
156
|
+
* @param options Additional route options
|
|
157
|
+
* @returns Route configuration object
|
|
158
|
+
*/
|
|
159
|
+
export declare function createWebSocketRoute(domains: string | string[], wsPath: string, target: {
|
|
160
|
+
host: string | string[];
|
|
161
|
+
port: number;
|
|
162
|
+
}, options?: {
|
|
163
|
+
useTls?: boolean;
|
|
164
|
+
certificate?: 'auto' | {
|
|
165
|
+
key: string;
|
|
166
|
+
cert: string;
|
|
167
|
+
};
|
|
168
|
+
httpPort?: number | number[];
|
|
169
|
+
httpsPort?: number | number[];
|
|
170
|
+
pingInterval?: number;
|
|
171
|
+
pingTimeout?: number;
|
|
172
|
+
name?: string;
|
|
173
|
+
[key: string]: any;
|
|
174
|
+
}): IRouteConfig;
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* This file 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 module includes helper functions for creating:
|
|
8
|
+
* - HTTP routes (createHttpRoute)
|
|
9
|
+
* - HTTPS routes with TLS termination (createHttpsTerminateRoute)
|
|
10
|
+
* - HTTP to HTTPS redirects (createHttpToHttpsRedirect)
|
|
11
|
+
* - HTTPS passthrough routes (createHttpsPassthroughRoute)
|
|
12
|
+
* - Complete HTTPS servers with redirects (createCompleteHttpsServer)
|
|
13
|
+
* - Load balancer routes (createLoadBalancerRoute)
|
|
14
|
+
* - Static file server routes (createStaticFileRoute)
|
|
15
|
+
* - API routes (createApiRoute)
|
|
16
|
+
* - WebSocket routes (createWebSocketRoute)
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Create an HTTP-only route configuration
|
|
20
|
+
* @param domains Domain(s) to match
|
|
21
|
+
* @param target Target host and port
|
|
22
|
+
* @param options Additional route options
|
|
23
|
+
* @returns Route configuration object
|
|
24
|
+
*/
|
|
25
|
+
export function createHttpRoute(domains, target, options = {}) {
|
|
26
|
+
// Create route match
|
|
27
|
+
const match = {
|
|
28
|
+
ports: options.match?.ports || 80,
|
|
29
|
+
domains
|
|
30
|
+
};
|
|
31
|
+
// Create route action
|
|
32
|
+
const action = {
|
|
33
|
+
type: 'forward',
|
|
34
|
+
target
|
|
35
|
+
};
|
|
36
|
+
// Create the route config
|
|
37
|
+
return {
|
|
38
|
+
match,
|
|
39
|
+
action,
|
|
40
|
+
name: options.name || `HTTP Route for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
41
|
+
...options
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create an HTTPS route with TLS termination (including HTTP redirect to HTTPS)
|
|
46
|
+
* @param domains Domain(s) to match
|
|
47
|
+
* @param target Target host and port
|
|
48
|
+
* @param options Additional route options
|
|
49
|
+
* @returns Route configuration object
|
|
50
|
+
*/
|
|
51
|
+
export function createHttpsTerminateRoute(domains, target, options = {}) {
|
|
52
|
+
// Create route match
|
|
53
|
+
const match = {
|
|
54
|
+
ports: options.httpsPort || 443,
|
|
55
|
+
domains
|
|
56
|
+
};
|
|
57
|
+
// Create route action
|
|
58
|
+
const action = {
|
|
59
|
+
type: 'forward',
|
|
60
|
+
target,
|
|
61
|
+
tls: {
|
|
62
|
+
mode: options.reencrypt ? 'terminate-and-reencrypt' : 'terminate',
|
|
63
|
+
certificate: options.certificate || 'auto'
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
// Create the route config
|
|
67
|
+
return {
|
|
68
|
+
match,
|
|
69
|
+
action,
|
|
70
|
+
name: options.name || `HTTPS Route for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
71
|
+
...options
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create an HTTP to HTTPS redirect route
|
|
76
|
+
* @param domains Domain(s) to match
|
|
77
|
+
* @param httpsPort HTTPS port to redirect to (default: 443)
|
|
78
|
+
* @param options Additional route options
|
|
79
|
+
* @returns Route configuration object
|
|
80
|
+
*/
|
|
81
|
+
export function createHttpToHttpsRedirect(domains, httpsPort = 443, options = {}) {
|
|
82
|
+
// Create route match
|
|
83
|
+
const match = {
|
|
84
|
+
ports: options.match?.ports || 80,
|
|
85
|
+
domains
|
|
86
|
+
};
|
|
87
|
+
// Create route action
|
|
88
|
+
const action = {
|
|
89
|
+
type: 'redirect',
|
|
90
|
+
redirect: {
|
|
91
|
+
to: `https://{domain}:${httpsPort}{path}`,
|
|
92
|
+
status: 301
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
// Create the route config
|
|
96
|
+
return {
|
|
97
|
+
match,
|
|
98
|
+
action,
|
|
99
|
+
name: options.name || `HTTP to HTTPS Redirect for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
100
|
+
...options
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create an HTTPS passthrough route (SNI-based forwarding without TLS termination)
|
|
105
|
+
* @param domains Domain(s) to match
|
|
106
|
+
* @param target Target host and port
|
|
107
|
+
* @param options Additional route options
|
|
108
|
+
* @returns Route configuration object
|
|
109
|
+
*/
|
|
110
|
+
export function createHttpsPassthroughRoute(domains, target, options = {}) {
|
|
111
|
+
// Create route match
|
|
112
|
+
const match = {
|
|
113
|
+
ports: options.match?.ports || 443,
|
|
114
|
+
domains
|
|
115
|
+
};
|
|
116
|
+
// Create route action
|
|
117
|
+
const action = {
|
|
118
|
+
type: 'forward',
|
|
119
|
+
target,
|
|
120
|
+
tls: {
|
|
121
|
+
mode: 'passthrough'
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
// Create the route config
|
|
125
|
+
return {
|
|
126
|
+
match,
|
|
127
|
+
action,
|
|
128
|
+
name: options.name || `HTTPS Passthrough for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
129
|
+
...options
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a complete HTTPS server with HTTP to HTTPS redirects
|
|
134
|
+
* @param domains Domain(s) to match
|
|
135
|
+
* @param target Target host and port
|
|
136
|
+
* @param options Additional configuration options
|
|
137
|
+
* @returns Array of two route configurations (HTTPS and HTTP redirect)
|
|
138
|
+
*/
|
|
139
|
+
export function createCompleteHttpsServer(domains, target, options = {}) {
|
|
140
|
+
// Create the HTTPS route
|
|
141
|
+
const httpsRoute = createHttpsTerminateRoute(domains, target, options);
|
|
142
|
+
// Create the HTTP redirect route
|
|
143
|
+
const httpRedirectRoute = createHttpToHttpsRedirect(domains,
|
|
144
|
+
// Extract the HTTPS port from the HTTPS route - ensure it's a number
|
|
145
|
+
typeof options.httpsPort === 'number' ? options.httpsPort :
|
|
146
|
+
Array.isArray(options.httpsPort) ? options.httpsPort[0] : 443, {
|
|
147
|
+
// Set the HTTP port
|
|
148
|
+
match: {
|
|
149
|
+
ports: options.httpPort || 80,
|
|
150
|
+
domains
|
|
151
|
+
},
|
|
152
|
+
name: `HTTP to HTTPS Redirect for ${Array.isArray(domains) ? domains.join(', ') : domains}`
|
|
153
|
+
});
|
|
154
|
+
return [httpsRoute, httpRedirectRoute];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a load balancer route (round-robin between multiple backend hosts)
|
|
158
|
+
* @param domains Domain(s) to match
|
|
159
|
+
* @param hosts Array of backend hosts to load balance between
|
|
160
|
+
* @param port Backend port
|
|
161
|
+
* @param options Additional route options
|
|
162
|
+
* @returns Route configuration object
|
|
163
|
+
*/
|
|
164
|
+
export function createLoadBalancerRoute(domains, hosts, port, options = {}) {
|
|
165
|
+
// Create route match
|
|
166
|
+
const match = {
|
|
167
|
+
ports: options.match?.ports || (options.tls ? 443 : 80),
|
|
168
|
+
domains
|
|
169
|
+
};
|
|
170
|
+
// Create route target
|
|
171
|
+
const target = {
|
|
172
|
+
host: hosts,
|
|
173
|
+
port
|
|
174
|
+
};
|
|
175
|
+
// Create route action
|
|
176
|
+
const action = {
|
|
177
|
+
type: 'forward',
|
|
178
|
+
target
|
|
179
|
+
};
|
|
180
|
+
// Add TLS configuration if provided
|
|
181
|
+
if (options.tls) {
|
|
182
|
+
action.tls = {
|
|
183
|
+
mode: options.tls.mode,
|
|
184
|
+
certificate: options.tls.certificate || 'auto'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// Create the route config
|
|
188
|
+
return {
|
|
189
|
+
match,
|
|
190
|
+
action,
|
|
191
|
+
name: options.name || `Load Balancer for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
192
|
+
...options
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Create a static file server route
|
|
197
|
+
* @param domains Domain(s) to match
|
|
198
|
+
* @param rootDir Root directory path for static files
|
|
199
|
+
* @param options Additional route options
|
|
200
|
+
* @returns Route configuration object
|
|
201
|
+
*/
|
|
202
|
+
export function createStaticFileRoute(domains, rootDir, options = {}) {
|
|
203
|
+
// Create route match
|
|
204
|
+
const match = {
|
|
205
|
+
ports: options.serveOnHttps
|
|
206
|
+
? (options.httpsPort || 443)
|
|
207
|
+
: (options.httpPort || 80),
|
|
208
|
+
domains
|
|
209
|
+
};
|
|
210
|
+
// Create route action
|
|
211
|
+
const action = {
|
|
212
|
+
type: 'static',
|
|
213
|
+
static: {
|
|
214
|
+
root: rootDir,
|
|
215
|
+
index: options.indexFiles || ['index.html', 'index.htm']
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
// Add TLS configuration if serving on HTTPS
|
|
219
|
+
if (options.serveOnHttps) {
|
|
220
|
+
action.tls = {
|
|
221
|
+
mode: 'terminate',
|
|
222
|
+
certificate: options.certificate || 'auto'
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
// Create the route config
|
|
226
|
+
return {
|
|
227
|
+
match,
|
|
228
|
+
action,
|
|
229
|
+
name: options.name || `Static Files for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
230
|
+
...options
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Create an API route configuration
|
|
235
|
+
* @param domains Domain(s) to match
|
|
236
|
+
* @param apiPath API base path (e.g., "/api")
|
|
237
|
+
* @param target Target host and port
|
|
238
|
+
* @param options Additional route options
|
|
239
|
+
* @returns Route configuration object
|
|
240
|
+
*/
|
|
241
|
+
export function createApiRoute(domains, apiPath, target, options = {}) {
|
|
242
|
+
// Normalize API path
|
|
243
|
+
const normalizedPath = apiPath.startsWith('/') ? apiPath : `/${apiPath}`;
|
|
244
|
+
const pathWithWildcard = normalizedPath.endsWith('/')
|
|
245
|
+
? `${normalizedPath}*`
|
|
246
|
+
: `${normalizedPath}/*`;
|
|
247
|
+
// Create route match
|
|
248
|
+
const match = {
|
|
249
|
+
ports: options.useTls
|
|
250
|
+
? (options.httpsPort || 443)
|
|
251
|
+
: (options.httpPort || 80),
|
|
252
|
+
domains,
|
|
253
|
+
path: pathWithWildcard
|
|
254
|
+
};
|
|
255
|
+
// Create route action
|
|
256
|
+
const action = {
|
|
257
|
+
type: 'forward',
|
|
258
|
+
target
|
|
259
|
+
};
|
|
260
|
+
// Add TLS configuration if using HTTPS
|
|
261
|
+
if (options.useTls) {
|
|
262
|
+
action.tls = {
|
|
263
|
+
mode: 'terminate',
|
|
264
|
+
certificate: options.certificate || 'auto'
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
// Add CORS headers if requested
|
|
268
|
+
const headers = {};
|
|
269
|
+
if (options.addCorsHeaders) {
|
|
270
|
+
headers.response = {
|
|
271
|
+
'Access-Control-Allow-Origin': '*',
|
|
272
|
+
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
273
|
+
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
|
|
274
|
+
'Access-Control-Max-Age': '86400'
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
// Create the route config
|
|
278
|
+
return {
|
|
279
|
+
match,
|
|
280
|
+
action,
|
|
281
|
+
headers: Object.keys(headers).length > 0 ? headers : undefined,
|
|
282
|
+
name: options.name || `API Route ${normalizedPath} for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
283
|
+
priority: options.priority || 100, // Higher priority for specific path matches
|
|
284
|
+
...options
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Create a WebSocket route configuration
|
|
289
|
+
* @param domains Domain(s) to match
|
|
290
|
+
* @param wsPath WebSocket path (e.g., "/ws")
|
|
291
|
+
* @param target Target WebSocket server host and port
|
|
292
|
+
* @param options Additional route options
|
|
293
|
+
* @returns Route configuration object
|
|
294
|
+
*/
|
|
295
|
+
export function createWebSocketRoute(domains, wsPath, target, options = {}) {
|
|
296
|
+
// Normalize WebSocket path
|
|
297
|
+
const normalizedPath = wsPath.startsWith('/') ? wsPath : `/${wsPath}`;
|
|
298
|
+
// Create route match
|
|
299
|
+
const match = {
|
|
300
|
+
ports: options.useTls
|
|
301
|
+
? (options.httpsPort || 443)
|
|
302
|
+
: (options.httpPort || 80),
|
|
303
|
+
domains,
|
|
304
|
+
path: normalizedPath
|
|
305
|
+
};
|
|
306
|
+
// Create route action
|
|
307
|
+
const action = {
|
|
308
|
+
type: 'forward',
|
|
309
|
+
target,
|
|
310
|
+
websocket: {
|
|
311
|
+
enabled: true,
|
|
312
|
+
pingInterval: options.pingInterval || 30000, // 30 seconds
|
|
313
|
+
pingTimeout: options.pingTimeout || 5000 // 5 seconds
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
// Add TLS configuration if using HTTPS
|
|
317
|
+
if (options.useTls) {
|
|
318
|
+
action.tls = {
|
|
319
|
+
mode: 'terminate',
|
|
320
|
+
certificate: options.certificate || 'auto'
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
// Create the route config
|
|
324
|
+
return {
|
|
325
|
+
match,
|
|
326
|
+
action,
|
|
327
|
+
name: options.name || `WebSocket Route ${normalizedPath} for ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
328
|
+
priority: options.priority || 100, // Higher priority for WebSocket routes
|
|
329
|
+
...options
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL3Byb3hpZXMvc21hcnQtcHJveHkvdXRpbHMvcm91dGUtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUlIOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQTBCLEVBQzFCLE1BQWlELEVBQ2pELFVBQWlDLEVBQUU7SUFFbkMscUJBQXFCO0lBQ3JCLE1BQU0sS0FBSyxHQUFnQjtRQUN6QixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtRQUNqQyxPQUFPO0tBQ1IsQ0FBQztJQUVGLHNCQUFzQjtJQUN0QixNQUFNLE1BQU0sR0FBaUI7UUFDM0IsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNO0tBQ1AsQ0FBQztJQUVGLDBCQUEwQjtJQUMxQixPQUFPO1FBQ0wsS0FBSztRQUNMLE1BQU07UUFDTixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxrQkFBa0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQy9GLEdBQUcsT0FBTztLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxPQUEwQixFQUMxQixNQUFpRCxFQUNqRCxVQU9JLEVBQUU7SUFFTixxQkFBcUI7SUFDckIsTUFBTSxLQUFLLEdBQWdCO1FBQ3pCLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEdBQUc7UUFDL0IsT0FBTztLQUNSLENBQUM7SUFFRixzQkFBc0I7SUFDdEIsTUFBTSxNQUFNLEdBQWlCO1FBQzNCLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTTtRQUNOLEdB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
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Migration Utilities
|
|
3
|
+
*
|
|
4
|
+
* This file provides utility functions for migrating from legacy domain-based
|
|
5
|
+
* configuration to the new route-based configuration system. These functions
|
|
6
|
+
* are temporary and will be removed after the migration is complete.
|
|
7
|
+
*/
|
|
8
|
+
import type { TForwardingType } from '../../../forwarding/config/forwarding-types.js';
|
|
9
|
+
import type { IRouteConfig } from '../models/route-types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Legacy domain config interface (for migration only)
|
|
12
|
+
* @deprecated This interface will be removed in a future version
|
|
13
|
+
*/
|
|
14
|
+
export interface ILegacyDomainConfig {
|
|
15
|
+
domains: string[];
|
|
16
|
+
forwarding: {
|
|
17
|
+
type: TForwardingType;
|
|
18
|
+
target: {
|
|
19
|
+
host: string | string[];
|
|
20
|
+
port: number;
|
|
21
|
+
};
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a legacy domain config to a route-based config
|
|
27
|
+
* @param domainConfig Legacy domain configuration
|
|
28
|
+
* @param additionalOptions Additional options to add to the route
|
|
29
|
+
* @returns Route configuration
|
|
30
|
+
* @deprecated This function will be removed in a future version
|
|
31
|
+
*/
|
|
32
|
+
export declare function domainConfigToRouteConfig(domainConfig: ILegacyDomainConfig, additionalOptions?: Partial<IRouteConfig>): IRouteConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Convert an array of legacy domain configs to route configurations
|
|
35
|
+
* @param domainConfigs Array of legacy domain configurations
|
|
36
|
+
* @returns Array of route configurations
|
|
37
|
+
* @deprecated This function will be removed in a future version
|
|
38
|
+
*/
|
|
39
|
+
export declare function domainConfigsToRouteConfigs(domainConfigs: ILegacyDomainConfig[]): IRouteConfig[];
|
|
40
|
+
/**
|
|
41
|
+
* Extract domains from a route configuration
|
|
42
|
+
* @param route Route configuration
|
|
43
|
+
* @returns Array of domains
|
|
44
|
+
*/
|
|
45
|
+
export declare function extractDomainsFromRoute(route: IRouteConfig): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Extract domains from an array of route configurations
|
|
48
|
+
* @param routes Array of route configurations
|
|
49
|
+
* @returns Array of unique domains
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractDomainsFromRoutes(routes: IRouteConfig[]): string[];
|