@push.rocks/smartproxy 23.0.0 → 23.1.0
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/changelog.md +10 -0
- package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +83 -212
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
- package/npmextra.json +3 -0
- package/package.json +13 -11
- package/readme.md +41 -11
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/plugins.ts +2 -0
- package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +102 -233
- package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
- package/dist_ts/common/eventUtils.d.ts +0 -14
- package/dist_ts/common/eventUtils.js +0 -20
- package/dist_ts/common/types.d.ts +0 -82
- package/dist_ts/common/types.js +0 -15
- package/dist_ts/core/utils/event-system.d.ts +0 -200
- package/dist_ts/core/utils/event-system.js +0 -224
- package/dist_ts/core/utils/event-utils.d.ts +0 -15
- package/dist_ts/core/utils/event-utils.js +0 -11
- package/dist_ts/core/utils/route-manager.d.ts +0 -88
- package/dist_ts/core/utils/route-manager.js +0 -342
- package/dist_ts/core/utils/route-utils.d.ts +0 -28
- package/dist_ts/core/utils/route-utils.js +0 -67
- package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
- package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
- package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
- package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
- package/dist_ts/detection/protocol-detector-v2.js +0 -116
- package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
- package/dist_ts/forwarding/config/forwarding-types.js +0 -18
- package/dist_ts/forwarding/config/index.d.ts +0 -9
- package/dist_ts/forwarding/config/index.js +0 -10
- package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
- package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
- package/dist_ts/forwarding/factory/index.d.ts +0 -4
- package/dist_ts/forwarding/factory/index.js +0 -5
- package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
- package/dist_ts/forwarding/handlers/base-handler.js +0 -121
- package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
- package/dist_ts/forwarding/handlers/http-handler.js +0 -143
- package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
- package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
- package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
- package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
- package/dist_ts/forwarding/handlers/index.d.ts +0 -8
- package/dist_ts/forwarding/handlers/index.js +0 -9
- package/dist_ts/forwarding/index.d.ts +0 -13
- package/dist_ts/forwarding/index.js +0 -16
- package/dist_ts/http/index.d.ts +0 -5
- package/dist_ts/http/index.js +0 -8
- package/dist_ts/http/models/http-types.d.ts +0 -6
- package/dist_ts/http/models/http-types.js +0 -7
- package/dist_ts/http/router/index.d.ts +0 -8
- package/dist_ts/http/router/index.js +0 -7
- package/dist_ts/http/router/proxy-router.d.ts +0 -115
- package/dist_ts/http/router/proxy-router.js +0 -325
- package/dist_ts/http/router/route-router.d.ts +0 -108
- package/dist_ts/http/router/route-router.js +0 -393
- package/dist_ts/protocols/tls/constants.d.ts +0 -122
- package/dist_ts/protocols/tls/constants.js +0 -135
- package/dist_ts/protocols/tls/parser.d.ts +0 -53
- package/dist_ts/protocols/tls/parser.js +0 -294
- package/dist_ts/protocols/tls/types.d.ts +0 -65
- package/dist_ts/protocols/tls/types.js +0 -5
- package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
- package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
- package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
- package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
- package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
- package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
- package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
- package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
- package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
- package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
- package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
- package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
- package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
- package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
- package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
- package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
- package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
- package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
- package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
- package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
- package/dist_ts/proxies/http-proxy/index.js +0 -16
- package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
- package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
- package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/http-proxy/models/index.js +0 -6
- package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
- package/dist_ts/proxies/http-proxy/models/types.js +0 -35
- package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
- package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
- package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
- package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
- package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
- package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
- package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
- package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
- package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
- package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
- package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
- package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
- package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
- package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
- package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
- package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
- package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
- package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
- package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
- package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
- package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
- package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
- package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
- package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
- package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
- package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
- package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
- package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
- package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
- package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
- package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
- package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
- package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
- package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
- package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
- package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
- package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
- package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
- package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
- package/dist_ts/routing/router/proxy-router.d.ts +0 -115
- package/dist_ts/routing/router/proxy-router.js +0 -325
- package/dist_ts/routing/router/route-router.d.ts +0 -108
- package/dist_ts/routing/router/route-router.js +0 -393
- package/dist_ts/tls/alerts/index.d.ts +0 -4
- package/dist_ts/tls/alerts/index.js +0 -5
- package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/tls/sni/client-hello-parser.js +0 -464
- package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/tls/utils/index.d.ts +0 -4
- package/dist_ts/tls/utils/index.js +0 -5
- package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
- package/dist_ts/tls/utils/tls-utils.js +0 -75
- package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route Patterns
|
|
3
|
-
*
|
|
4
|
-
* This file provides pre-defined route patterns for common use cases.
|
|
5
|
-
* These patterns can be used as templates for creating route configurations.
|
|
6
|
-
*/
|
|
7
|
-
import type { IRouteConfig } from '../models/route-types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Create a basic HTTP route configuration
|
|
10
|
-
*/
|
|
11
|
-
export declare function createHttpRoute(domains: string | string[], target: {
|
|
12
|
-
host: string | string[];
|
|
13
|
-
port: number | 'preserve' | ((ctx: any) => number);
|
|
14
|
-
}, options?: Partial<IRouteConfig>): IRouteConfig;
|
|
15
|
-
/**
|
|
16
|
-
* Create an HTTPS route with TLS termination
|
|
17
|
-
*/
|
|
18
|
-
export declare function createHttpsTerminateRoute(domains: string | string[], target: {
|
|
19
|
-
host: string | string[];
|
|
20
|
-
port: number | 'preserve' | ((ctx: any) => number);
|
|
21
|
-
}, options?: Partial<IRouteConfig> & {
|
|
22
|
-
certificate?: 'auto' | {
|
|
23
|
-
key: string;
|
|
24
|
-
cert: string;
|
|
25
|
-
};
|
|
26
|
-
reencrypt?: boolean;
|
|
27
|
-
}): IRouteConfig;
|
|
28
|
-
/**
|
|
29
|
-
* Create an HTTPS route with TLS passthrough
|
|
30
|
-
*/
|
|
31
|
-
export declare function createHttpsPassthroughRoute(domains: string | string[], target: {
|
|
32
|
-
host: string | string[];
|
|
33
|
-
port: number | 'preserve' | ((ctx: any) => number);
|
|
34
|
-
}, options?: Partial<IRouteConfig>): IRouteConfig;
|
|
35
|
-
/**
|
|
36
|
-
* Create an HTTP to HTTPS redirect route
|
|
37
|
-
*/
|
|
38
|
-
export declare function createHttpToHttpsRedirect(domains: string | string[], options?: Partial<IRouteConfig> & {
|
|
39
|
-
redirectCode?: 301 | 302 | 307 | 308;
|
|
40
|
-
preservePath?: boolean;
|
|
41
|
-
}): IRouteConfig;
|
|
42
|
-
/**
|
|
43
|
-
* Create a complete HTTPS server with redirect from HTTP
|
|
44
|
-
*/
|
|
45
|
-
export declare function createCompleteHttpsServer(domains: string | string[], target: {
|
|
46
|
-
host: string | string[];
|
|
47
|
-
port: number | 'preserve' | ((ctx: any) => number);
|
|
48
|
-
}, options?: Partial<IRouteConfig> & {
|
|
49
|
-
certificate?: 'auto' | {
|
|
50
|
-
key: string;
|
|
51
|
-
cert: string;
|
|
52
|
-
};
|
|
53
|
-
tlsMode?: 'terminate' | 'passthrough' | 'terminate-and-reencrypt';
|
|
54
|
-
redirectCode?: 301 | 302 | 307 | 308;
|
|
55
|
-
}): IRouteConfig[];
|
|
56
|
-
/**
|
|
57
|
-
* Create an API Gateway route pattern
|
|
58
|
-
* @param domains Domain(s) to match
|
|
59
|
-
* @param apiBasePath Base path for API endpoints (e.g., '/api')
|
|
60
|
-
* @param target Target host and port
|
|
61
|
-
* @param options Additional route options
|
|
62
|
-
* @returns API route configuration
|
|
63
|
-
*/
|
|
64
|
-
export declare function createApiGatewayRoute(domains: string | string[], apiBasePath: string, target: {
|
|
65
|
-
host: string | string[];
|
|
66
|
-
port: number;
|
|
67
|
-
}, options?: {
|
|
68
|
-
useTls?: boolean;
|
|
69
|
-
certificate?: 'auto' | {
|
|
70
|
-
key: string;
|
|
71
|
-
cert: string;
|
|
72
|
-
};
|
|
73
|
-
addCorsHeaders?: boolean;
|
|
74
|
-
[key: string]: any;
|
|
75
|
-
}): IRouteConfig;
|
|
76
|
-
/**
|
|
77
|
-
* Create a WebSocket route pattern
|
|
78
|
-
* @param domains Domain(s) to match
|
|
79
|
-
* @param target WebSocket server host and port
|
|
80
|
-
* @param options Additional route options
|
|
81
|
-
* @returns WebSocket route configuration
|
|
82
|
-
*/
|
|
83
|
-
export declare function createWebSocketRoute(domains: string | string[], target: {
|
|
84
|
-
host: string | string[];
|
|
85
|
-
port: number;
|
|
86
|
-
}, options?: {
|
|
87
|
-
useTls?: boolean;
|
|
88
|
-
certificate?: 'auto' | {
|
|
89
|
-
key: string;
|
|
90
|
-
cert: string;
|
|
91
|
-
};
|
|
92
|
-
path?: string;
|
|
93
|
-
[key: string]: any;
|
|
94
|
-
}): IRouteConfig;
|
|
95
|
-
/**
|
|
96
|
-
* Create a load balancer route pattern
|
|
97
|
-
* @param domains Domain(s) to match
|
|
98
|
-
* @param backends Array of backend servers
|
|
99
|
-
* @param options Additional route options
|
|
100
|
-
* @returns Load balancer route configuration
|
|
101
|
-
*/
|
|
102
|
-
export declare function createLoadBalancerRoute(domains: string | string[], backends: Array<{
|
|
103
|
-
host: string;
|
|
104
|
-
port: number;
|
|
105
|
-
}>, options?: {
|
|
106
|
-
useTls?: boolean;
|
|
107
|
-
certificate?: 'auto' | {
|
|
108
|
-
key: string;
|
|
109
|
-
cert: string;
|
|
110
|
-
};
|
|
111
|
-
algorithm?: 'round-robin' | 'least-connections' | 'ip-hash';
|
|
112
|
-
healthCheck?: {
|
|
113
|
-
path: string;
|
|
114
|
-
interval: number;
|
|
115
|
-
timeout: number;
|
|
116
|
-
unhealthyThreshold: number;
|
|
117
|
-
healthyThreshold: number;
|
|
118
|
-
};
|
|
119
|
-
[key: string]: any;
|
|
120
|
-
}): IRouteConfig;
|
|
121
|
-
/**
|
|
122
|
-
* Create a rate limiting route pattern
|
|
123
|
-
* @param baseRoute Base route to add rate limiting to
|
|
124
|
-
* @param rateLimit Rate limiting configuration
|
|
125
|
-
* @returns Route with rate limiting
|
|
126
|
-
*/
|
|
127
|
-
export declare function addRateLimiting(baseRoute: IRouteConfig, rateLimit: {
|
|
128
|
-
maxRequests: number;
|
|
129
|
-
window: number;
|
|
130
|
-
keyBy?: 'ip' | 'path' | 'header';
|
|
131
|
-
headerName?: string;
|
|
132
|
-
errorMessage?: string;
|
|
133
|
-
}): IRouteConfig;
|
|
134
|
-
/**
|
|
135
|
-
* Create a basic authentication route pattern
|
|
136
|
-
* @param baseRoute Base route to add authentication to
|
|
137
|
-
* @param auth Authentication configuration
|
|
138
|
-
* @returns Route with basic authentication
|
|
139
|
-
*/
|
|
140
|
-
export declare function addBasicAuth(baseRoute: IRouteConfig, auth: {
|
|
141
|
-
users: Array<{
|
|
142
|
-
username: string;
|
|
143
|
-
password: string;
|
|
144
|
-
}>;
|
|
145
|
-
realm?: string;
|
|
146
|
-
excludePaths?: string[];
|
|
147
|
-
}): IRouteConfig;
|
|
148
|
-
/**
|
|
149
|
-
* Create a JWT authentication route pattern
|
|
150
|
-
* @param baseRoute Base route to add JWT authentication to
|
|
151
|
-
* @param jwt JWT authentication configuration
|
|
152
|
-
* @returns Route with JWT authentication
|
|
153
|
-
*/
|
|
154
|
-
export declare function addJwtAuth(baseRoute: IRouteConfig, jwt: {
|
|
155
|
-
secret: string;
|
|
156
|
-
algorithm?: string;
|
|
157
|
-
issuer?: string;
|
|
158
|
-
audience?: string;
|
|
159
|
-
expiresIn?: number;
|
|
160
|
-
excludePaths?: string[];
|
|
161
|
-
}): IRouteConfig;
|
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route Patterns
|
|
3
|
-
*
|
|
4
|
-
* This file provides pre-defined route patterns for common use cases.
|
|
5
|
-
* These patterns can be used as templates for creating route configurations.
|
|
6
|
-
*/
|
|
7
|
-
import { mergeRouteConfigs } from './route-utils.js';
|
|
8
|
-
import { SocketHandlers } from './route-helpers.js';
|
|
9
|
-
/**
|
|
10
|
-
* Create a basic HTTP route configuration
|
|
11
|
-
*/
|
|
12
|
-
export function createHttpRoute(domains, target, options = {}) {
|
|
13
|
-
const route = {
|
|
14
|
-
match: {
|
|
15
|
-
domains,
|
|
16
|
-
ports: 80
|
|
17
|
-
},
|
|
18
|
-
action: {
|
|
19
|
-
type: 'forward',
|
|
20
|
-
targets: [{
|
|
21
|
-
host: target.host,
|
|
22
|
-
port: target.port
|
|
23
|
-
}]
|
|
24
|
-
},
|
|
25
|
-
name: options.name || `HTTP: ${Array.isArray(domains) ? domains.join(', ') : domains}`
|
|
26
|
-
};
|
|
27
|
-
return mergeRouteConfigs(route, options);
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Create an HTTPS route with TLS termination
|
|
31
|
-
*/
|
|
32
|
-
export function createHttpsTerminateRoute(domains, target, options = {}) {
|
|
33
|
-
const route = {
|
|
34
|
-
match: {
|
|
35
|
-
domains,
|
|
36
|
-
ports: 443
|
|
37
|
-
},
|
|
38
|
-
action: {
|
|
39
|
-
type: 'forward',
|
|
40
|
-
targets: [{
|
|
41
|
-
host: target.host,
|
|
42
|
-
port: target.port
|
|
43
|
-
}],
|
|
44
|
-
tls: {
|
|
45
|
-
mode: options.reencrypt ? 'terminate-and-reencrypt' : 'terminate',
|
|
46
|
-
certificate: options.certificate || 'auto'
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
name: options.name || `HTTPS (terminate): ${Array.isArray(domains) ? domains.join(', ') : domains}`
|
|
50
|
-
};
|
|
51
|
-
return mergeRouteConfigs(route, options);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Create an HTTPS route with TLS passthrough
|
|
55
|
-
*/
|
|
56
|
-
export function createHttpsPassthroughRoute(domains, target, options = {}) {
|
|
57
|
-
const route = {
|
|
58
|
-
match: {
|
|
59
|
-
domains,
|
|
60
|
-
ports: 443
|
|
61
|
-
},
|
|
62
|
-
action: {
|
|
63
|
-
type: 'forward',
|
|
64
|
-
targets: [{
|
|
65
|
-
host: target.host,
|
|
66
|
-
port: target.port
|
|
67
|
-
}],
|
|
68
|
-
tls: {
|
|
69
|
-
mode: 'passthrough'
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
name: options.name || `HTTPS (passthrough): ${Array.isArray(domains) ? domains.join(', ') : domains}`
|
|
73
|
-
};
|
|
74
|
-
return mergeRouteConfigs(route, options);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Create an HTTP to HTTPS redirect route
|
|
78
|
-
*/
|
|
79
|
-
export function createHttpToHttpsRedirect(domains, options = {}) {
|
|
80
|
-
const route = {
|
|
81
|
-
match: {
|
|
82
|
-
domains,
|
|
83
|
-
ports: 80
|
|
84
|
-
},
|
|
85
|
-
action: {
|
|
86
|
-
type: 'socket-handler',
|
|
87
|
-
socketHandler: SocketHandlers.httpRedirect(options.preservePath ? 'https://{domain}{path}' : 'https://{domain}', options.redirectCode || 301)
|
|
88
|
-
},
|
|
89
|
-
name: options.name || `HTTP to HTTPS redirect: ${Array.isArray(domains) ? domains.join(', ') : domains}`
|
|
90
|
-
};
|
|
91
|
-
return mergeRouteConfigs(route, options);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Create a complete HTTPS server with redirect from HTTP
|
|
95
|
-
*/
|
|
96
|
-
export function createCompleteHttpsServer(domains, target, options = {}) {
|
|
97
|
-
// Create the TLS route based on the selected mode
|
|
98
|
-
const tlsRoute = options.tlsMode === 'passthrough'
|
|
99
|
-
? createHttpsPassthroughRoute(domains, target, options)
|
|
100
|
-
: createHttpsTerminateRoute(domains, target, {
|
|
101
|
-
...options,
|
|
102
|
-
reencrypt: options.tlsMode === 'terminate-and-reencrypt'
|
|
103
|
-
});
|
|
104
|
-
// Create the HTTP to HTTPS redirect route
|
|
105
|
-
const redirectRoute = createHttpToHttpsRedirect(domains, {
|
|
106
|
-
redirectCode: options.redirectCode,
|
|
107
|
-
preservePath: true
|
|
108
|
-
});
|
|
109
|
-
return [tlsRoute, redirectRoute];
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Create an API Gateway route pattern
|
|
113
|
-
* @param domains Domain(s) to match
|
|
114
|
-
* @param apiBasePath Base path for API endpoints (e.g., '/api')
|
|
115
|
-
* @param target Target host and port
|
|
116
|
-
* @param options Additional route options
|
|
117
|
-
* @returns API route configuration
|
|
118
|
-
*/
|
|
119
|
-
export function createApiGatewayRoute(domains, apiBasePath, target, options = {}) {
|
|
120
|
-
// Normalize apiBasePath to ensure it starts with / and doesn't end with /
|
|
121
|
-
const normalizedPath = apiBasePath.startsWith('/')
|
|
122
|
-
? apiBasePath
|
|
123
|
-
: `/${apiBasePath}`;
|
|
124
|
-
// Add wildcard to path to match all API endpoints
|
|
125
|
-
const apiPath = normalizedPath.endsWith('/')
|
|
126
|
-
? `${normalizedPath}*`
|
|
127
|
-
: `${normalizedPath}/*`;
|
|
128
|
-
// Create base route
|
|
129
|
-
const baseRoute = options.useTls
|
|
130
|
-
? createHttpsTerminateRoute(domains, target, {
|
|
131
|
-
certificate: options.certificate || 'auto'
|
|
132
|
-
})
|
|
133
|
-
: createHttpRoute(domains, target);
|
|
134
|
-
// Add API-specific configurations
|
|
135
|
-
const apiRoute = {
|
|
136
|
-
match: {
|
|
137
|
-
...baseRoute.match,
|
|
138
|
-
path: apiPath
|
|
139
|
-
},
|
|
140
|
-
name: options.name || `API Gateway: ${apiPath} -> ${Array.isArray(target.host) ? target.host.join(', ') : target.host}:${target.port}`,
|
|
141
|
-
priority: options.priority || 100 // Higher priority for specific path matching
|
|
142
|
-
};
|
|
143
|
-
// Add CORS headers if requested
|
|
144
|
-
if (options.addCorsHeaders) {
|
|
145
|
-
apiRoute.headers = {
|
|
146
|
-
response: {
|
|
147
|
-
'Access-Control-Allow-Origin': '*',
|
|
148
|
-
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
|
|
149
|
-
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
|
|
150
|
-
'Access-Control-Max-Age': '86400'
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
return mergeRouteConfigs(baseRoute, apiRoute);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Create a WebSocket route pattern
|
|
158
|
-
* @param domains Domain(s) to match
|
|
159
|
-
* @param target WebSocket server host and port
|
|
160
|
-
* @param options Additional route options
|
|
161
|
-
* @returns WebSocket route configuration
|
|
162
|
-
*/
|
|
163
|
-
export function createWebSocketRoute(domains, target, options = {}) {
|
|
164
|
-
// Create base route
|
|
165
|
-
const baseRoute = options.useTls
|
|
166
|
-
? createHttpsTerminateRoute(domains, target, {
|
|
167
|
-
certificate: options.certificate || 'auto'
|
|
168
|
-
})
|
|
169
|
-
: createHttpRoute(domains, target);
|
|
170
|
-
// Add WebSocket-specific configurations
|
|
171
|
-
const wsRoute = {
|
|
172
|
-
match: {
|
|
173
|
-
...baseRoute.match,
|
|
174
|
-
path: options.path || '/ws',
|
|
175
|
-
headers: {
|
|
176
|
-
'Upgrade': 'websocket'
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
action: {
|
|
180
|
-
...baseRoute.action,
|
|
181
|
-
websocket: {
|
|
182
|
-
enabled: true,
|
|
183
|
-
pingInterval: options.pingInterval || 30000, // 30 seconds
|
|
184
|
-
pingTimeout: options.pingTimeout || 5000 // 5 seconds
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
name: options.name || `WebSocket: ${Array.isArray(domains) ? domains.join(', ') : domains} -> ${Array.isArray(target.host) ? target.host.join(', ') : target.host}:${target.port}`,
|
|
188
|
-
priority: options.priority || 100 // Higher priority for WebSocket routes
|
|
189
|
-
};
|
|
190
|
-
return mergeRouteConfigs(baseRoute, wsRoute);
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Create a load balancer route pattern
|
|
194
|
-
* @param domains Domain(s) to match
|
|
195
|
-
* @param backends Array of backend servers
|
|
196
|
-
* @param options Additional route options
|
|
197
|
-
* @returns Load balancer route configuration
|
|
198
|
-
*/
|
|
199
|
-
export function createLoadBalancerRoute(domains, backends, options = {}) {
|
|
200
|
-
// Extract hosts and ensure all backends use the same port
|
|
201
|
-
const port = backends[0].port;
|
|
202
|
-
const hosts = backends.map(backend => backend.host);
|
|
203
|
-
// Create route with multiple hosts for load balancing
|
|
204
|
-
const baseRoute = options.useTls
|
|
205
|
-
? createHttpsTerminateRoute(domains, { host: hosts, port }, {
|
|
206
|
-
certificate: options.certificate || 'auto'
|
|
207
|
-
})
|
|
208
|
-
: createHttpRoute(domains, { host: hosts, port });
|
|
209
|
-
// Add load balancing specific configurations
|
|
210
|
-
const lbRoute = {
|
|
211
|
-
action: {
|
|
212
|
-
...baseRoute.action,
|
|
213
|
-
loadBalancing: {
|
|
214
|
-
algorithm: options.algorithm || 'round-robin',
|
|
215
|
-
healthCheck: options.healthCheck
|
|
216
|
-
}
|
|
217
|
-
},
|
|
218
|
-
name: options.name || `Load Balancer: ${Array.isArray(domains) ? domains.join(', ') : domains}`,
|
|
219
|
-
priority: options.priority || 50
|
|
220
|
-
};
|
|
221
|
-
return mergeRouteConfigs(baseRoute, lbRoute);
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Create a rate limiting route pattern
|
|
225
|
-
* @param baseRoute Base route to add rate limiting to
|
|
226
|
-
* @param rateLimit Rate limiting configuration
|
|
227
|
-
* @returns Route with rate limiting
|
|
228
|
-
*/
|
|
229
|
-
export function addRateLimiting(baseRoute, rateLimit) {
|
|
230
|
-
return mergeRouteConfigs(baseRoute, {
|
|
231
|
-
security: {
|
|
232
|
-
rateLimit: {
|
|
233
|
-
enabled: true,
|
|
234
|
-
maxRequests: rateLimit.maxRequests,
|
|
235
|
-
window: rateLimit.window,
|
|
236
|
-
keyBy: rateLimit.keyBy || 'ip',
|
|
237
|
-
headerName: rateLimit.headerName,
|
|
238
|
-
errorMessage: rateLimit.errorMessage || 'Rate limit exceeded. Please try again later.'
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Create a basic authentication route pattern
|
|
245
|
-
* @param baseRoute Base route to add authentication to
|
|
246
|
-
* @param auth Authentication configuration
|
|
247
|
-
* @returns Route with basic authentication
|
|
248
|
-
*/
|
|
249
|
-
export function addBasicAuth(baseRoute, auth) {
|
|
250
|
-
return mergeRouteConfigs(baseRoute, {
|
|
251
|
-
security: {
|
|
252
|
-
basicAuth: {
|
|
253
|
-
enabled: true,
|
|
254
|
-
users: auth.users,
|
|
255
|
-
realm: auth.realm || 'Restricted Area',
|
|
256
|
-
excludePaths: auth.excludePaths || []
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Create a JWT authentication route pattern
|
|
263
|
-
* @param baseRoute Base route to add JWT authentication to
|
|
264
|
-
* @param jwt JWT authentication configuration
|
|
265
|
-
* @returns Route with JWT authentication
|
|
266
|
-
*/
|
|
267
|
-
export function addJwtAuth(baseRoute, jwt) {
|
|
268
|
-
return mergeRouteConfigs(baseRoute, {
|
|
269
|
-
security: {
|
|
270
|
-
jwtAuth: {
|
|
271
|
-
enabled: true,
|
|
272
|
-
secret: jwt.secret,
|
|
273
|
-
algorithm: jwt.algorithm || 'HS256',
|
|
274
|
-
issuer: jwt.issuer,
|
|
275
|
-
audience: jwt.audience,
|
|
276
|
-
expiresIn: jwt.expiresIn,
|
|
277
|
-
excludePaths: jwt.excludePaths || []
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGF0dGVybnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3V0aWxzL3JvdXRlLXBhdHRlcm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsT0FBMEIsRUFDMUIsTUFBdUYsRUFDdkYsVUFBaUMsRUFBRTtJQUVuQyxNQUFNLEtBQUssR0FBaUI7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxFQUFFO1NBQ1Y7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2lCQUNsQixDQUFDO1NBQ0g7UUFDRCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtLQUN2RixDQUFDO0lBRUYsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxPQUEwQixFQUMxQixNQUF1RixFQUN2RixVQUdJLEVBQUU7SUFFTixNQUFNLEtBQUssR0FBaUI7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxHQUFHO1NBQ1g7UUFDRCxNQUFNLEVB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
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Route Validators
|
|
3
|
-
*
|
|
4
|
-
* This file provides utility functions for validating route configurations.
|
|
5
|
-
* These validators help ensure that route configurations are valid and correctly structured.
|
|
6
|
-
*/
|
|
7
|
-
import type { IRouteConfig, IRouteMatch, IRouteAction } from '../models/route-types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Validates a port range or port number
|
|
10
|
-
* @param port Port number, port range, or port function
|
|
11
|
-
* @returns True if valid, false otherwise
|
|
12
|
-
*/
|
|
13
|
-
export declare function isValidPort(port: any): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Validates a domain string
|
|
16
|
-
* @param domain Domain string to validate
|
|
17
|
-
* @returns True if valid, false otherwise
|
|
18
|
-
*/
|
|
19
|
-
export declare function isValidDomain(domain: string): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Validates a route match configuration
|
|
22
|
-
* @param match Route match configuration to validate
|
|
23
|
-
* @returns { valid: boolean, errors: string[] } Validation result
|
|
24
|
-
*/
|
|
25
|
-
export declare function validateRouteMatch(match: IRouteMatch): {
|
|
26
|
-
valid: boolean;
|
|
27
|
-
errors: string[];
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Validates a route action configuration
|
|
31
|
-
* @param action Route action configuration to validate
|
|
32
|
-
* @returns { valid: boolean, errors: string[] } Validation result
|
|
33
|
-
*/
|
|
34
|
-
export declare function validateRouteAction(action: IRouteAction): {
|
|
35
|
-
valid: boolean;
|
|
36
|
-
errors: string[];
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Validates a complete route configuration
|
|
40
|
-
* @param route Route configuration to validate
|
|
41
|
-
* @returns { valid: boolean, errors: string[] } Validation result
|
|
42
|
-
*/
|
|
43
|
-
export declare function validateRouteConfig(route: IRouteConfig): {
|
|
44
|
-
valid: boolean;
|
|
45
|
-
errors: string[];
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Validate an array of route configurations
|
|
49
|
-
* @param routes Array of route configurations to validate
|
|
50
|
-
* @returns { valid: boolean, errors: { index: number, errors: string[] }[] } Validation result
|
|
51
|
-
*/
|
|
52
|
-
export declare function validateRoutes(routes: IRouteConfig[]): {
|
|
53
|
-
valid: boolean;
|
|
54
|
-
errors: {
|
|
55
|
-
index: number;
|
|
56
|
-
errors: string[];
|
|
57
|
-
}[];
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Check if a route configuration has the required properties for a specific action type
|
|
61
|
-
* @param route Route configuration to check
|
|
62
|
-
* @param actionType Expected action type
|
|
63
|
-
* @returns True if the route has the necessary properties, false otherwise
|
|
64
|
-
*/
|
|
65
|
-
export declare function hasRequiredPropertiesForAction(route: IRouteConfig, actionType: string): boolean;
|
|
66
|
-
/**
|
|
67
|
-
* Throws an error if the route config is invalid, returns the config if valid
|
|
68
|
-
* Useful for immediate validation when creating routes
|
|
69
|
-
* @param route Route configuration to validate
|
|
70
|
-
* @returns The validated route configuration
|
|
71
|
-
* @throws Error if the route configuration is invalid
|
|
72
|
-
*/
|
|
73
|
-
export declare function assertValidRoute(route: IRouteConfig): IRouteConfig;
|