@push.rocks/smartproxy 22.6.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 +18 -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/index.d.ts +0 -1
- package/dist_ts/index.js +1 -3
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/proxies/index.d.ts +0 -1
- package/dist_ts/proxies/index.js +1 -3
- package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
- 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 +35 -31
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/index.ts +0 -3
- package/ts/plugins.ts +2 -0
- package/ts/proxies/index.ts +0 -3
- package/ts/proxies/smart-proxy/models/route-types.ts +0 -2
- 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/nftables-proxy/index.d.ts +0 -6
- package/dist_ts/proxies/nftables-proxy/index.js +0 -7
- package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +0 -15
- package/dist_ts/proxies/nftables-proxy/models/errors.js +0 -28
- package/dist_ts/proxies/nftables-proxy/models/index.d.ts +0 -5
- package/dist_ts/proxies/nftables-proxy/models/index.js +0 -6
- package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +0 -75
- package/dist_ts/proxies/nftables-proxy/models/interfaces.js +0 -5
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +0 -124
- package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +0 -1374
- package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +0 -9
- package/dist_ts/proxies/nftables-proxy/utils/index.js +0 -12
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +0 -66
- package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +0 -131
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +0 -39
- package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +0 -112
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +0 -59
- package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +0 -130
- 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/nftables-proxy/index.ts +0 -6
- package/ts/proxies/nftables-proxy/models/errors.ts +0 -30
- package/ts/proxies/nftables-proxy/models/index.ts +0 -5
- package/ts/proxies/nftables-proxy/models/interfaces.ts +0 -94
- package/ts/proxies/nftables-proxy/nftables-proxy.ts +0 -1754
- package/ts/proxies/nftables-proxy/utils/index.ts +0 -38
- package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +0 -162
- package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +0 -125
- package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +0 -156
- package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TLS Protocol Detector V2
|
|
3
|
-
*
|
|
4
|
-
* Simplified TLS detection using the new architecture
|
|
5
|
-
*/
|
|
6
|
-
import { QuickProtocolDetector } from './quick-detector.js';
|
|
7
|
-
import { RoutingExtractor } from './routing-extractor.js';
|
|
8
|
-
import { DetectionFragmentManager } from '../utils/fragment-manager.js';
|
|
9
|
-
/**
|
|
10
|
-
* Simplified TLS detector
|
|
11
|
-
*/
|
|
12
|
-
export class TlsDetectorV2 {
|
|
13
|
-
constructor(fragmentManager) {
|
|
14
|
-
this.quickDetector = new QuickProtocolDetector();
|
|
15
|
-
this.fragmentManager = fragmentManager;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Check if buffer can be handled by this detector
|
|
19
|
-
*/
|
|
20
|
-
canHandle(buffer) {
|
|
21
|
-
const result = this.quickDetector.quickDetect(buffer);
|
|
22
|
-
return result.protocol === 'tls' && result.confidence > 50;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Get minimum bytes needed for detection
|
|
26
|
-
*/
|
|
27
|
-
getMinimumBytes() {
|
|
28
|
-
return 5; // TLS record header
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Detect TLS protocol from buffer
|
|
32
|
-
*/
|
|
33
|
-
detect(buffer, options) {
|
|
34
|
-
// Quick detection first
|
|
35
|
-
const quickResult = this.quickDetector.quickDetect(buffer);
|
|
36
|
-
if (quickResult.protocol !== 'tls' || quickResult.confidence < 50) {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
// If we don't need domain extraction, we can return early
|
|
40
|
-
if (quickResult.confidence >= 95 && !options?.extractFullHeaders) {
|
|
41
|
-
return {
|
|
42
|
-
protocol: 'tls',
|
|
43
|
-
connectionInfo: { protocol: 'tls' },
|
|
44
|
-
isComplete: true
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
// Extract routing information if needed
|
|
48
|
-
const routing = RoutingExtractor.extract(buffer, 'tls');
|
|
49
|
-
return {
|
|
50
|
-
protocol: 'tls',
|
|
51
|
-
connectionInfo: {
|
|
52
|
-
protocol: 'tls',
|
|
53
|
-
domain: routing?.domain,
|
|
54
|
-
sni: routing?.domain
|
|
55
|
-
},
|
|
56
|
-
isComplete: !quickResult.requiresMoreData,
|
|
57
|
-
bytesNeeded: quickResult.requiresMoreData ? buffer.length + 100 : undefined
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Handle fragmented detection
|
|
62
|
-
*/
|
|
63
|
-
detectWithContext(buffer, context, options) {
|
|
64
|
-
const handler = this.fragmentManager.getHandler('tls');
|
|
65
|
-
const connectionId = DetectionFragmentManager.createConnectionId(context);
|
|
66
|
-
// Add fragment
|
|
67
|
-
const result = handler.addFragment(connectionId, buffer);
|
|
68
|
-
if (result.error) {
|
|
69
|
-
handler.complete(connectionId);
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
// Try detection on accumulated buffer
|
|
73
|
-
const detectResult = this.detect(result.buffer, options);
|
|
74
|
-
if (detectResult && detectResult.isComplete) {
|
|
75
|
-
handler.complete(connectionId);
|
|
76
|
-
}
|
|
77
|
-
return detectResult;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxzLWRldGVjdG9yLXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZGV0ZWN0aW9uL2RldGVjdG9ycy90bHMtZGV0ZWN0b3ItdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUtILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFBWSxlQUF5QztRQUg3QyxrQkFBYSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUlsRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsTUFBYztRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0RCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBYyxFQUFFLE9BQTJCO1FBQ2hELHdCQUF3QjtRQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUzRCxJQUFJLFdBQVcsQ0FBQyxRQUFRLEtBQUssS0FBSyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDbEUsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsMERBQTBEO1FBQzFELElBQUksV0FBVyxDQUFDLFVBQVUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUNqRSxPQUFPO2dCQUNMLFFBQVEsRUFBRSxLQUFLO2dCQUNmLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7Z0JBQ25DLFVBQVUsRUFBRSxJQUFJO2FBQ2pCLENBQUM7UUFDSixDQUFDO1FBRUQsd0NBQXdDO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEQsT0FBTztZQUNMLFFBQVEsRUFBRSxLQUFLO1lBQ2YsY0FBYyxFQUFFO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2dCQUNmLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDdkIsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNO2FBQ3JCO1lBQ0QsVUFBVSxFQUFFLENBQUMsV0FBVyxDQUFDLGdCQUFnQjtZQUN6QyxXQUFXLEVBQUUsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM1RSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQ2YsTUFBYyxFQUNkLE9BQTJCLEVBQzNCLE9BQTJCO1FBRTNCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sWUFBWSxHQUFHLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFFLGVBQWU7UUFDZixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHNDQUFzQztRQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUQsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVDLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Protocol Detector V2
|
|
3
|
-
*
|
|
4
|
-
* Simplified protocol detection using the new architecture
|
|
5
|
-
*/
|
|
6
|
-
import type { IDetectionResult, IDetectionOptions } from './models/detection-types.js';
|
|
7
|
-
import type { IConnectionContext } from '../protocols/common/types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Main protocol detector class - V2
|
|
10
|
-
*/
|
|
11
|
-
export declare class ProtocolDetectorV2 {
|
|
12
|
-
private fragmentManager;
|
|
13
|
-
private tlsDetector;
|
|
14
|
-
private httpDetector;
|
|
15
|
-
constructor();
|
|
16
|
-
/**
|
|
17
|
-
* Detect protocol from buffer data
|
|
18
|
-
*/
|
|
19
|
-
detect(buffer: Buffer, options?: IDetectionOptions): Promise<IDetectionResult>;
|
|
20
|
-
/**
|
|
21
|
-
* Detect protocol with connection context for fragmented data
|
|
22
|
-
*/
|
|
23
|
-
detectWithContext(buffer: Buffer, context: IConnectionContext, options?: IDetectionOptions): Promise<IDetectionResult>;
|
|
24
|
-
/**
|
|
25
|
-
* Clean up resources
|
|
26
|
-
*/
|
|
27
|
-
cleanup(): void;
|
|
28
|
-
/**
|
|
29
|
-
* Destroy detector instance
|
|
30
|
-
*/
|
|
31
|
-
destroy(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Extract domain from connection info
|
|
34
|
-
*/
|
|
35
|
-
static extractDomain(connectionInfo: any): string | undefined;
|
|
36
|
-
/**
|
|
37
|
-
* Create a connection context from parameters
|
|
38
|
-
*/
|
|
39
|
-
static createConnectionContext(params: {
|
|
40
|
-
sourceIp?: string;
|
|
41
|
-
sourcePort?: number;
|
|
42
|
-
destIp?: string;
|
|
43
|
-
destPort?: number;
|
|
44
|
-
socketId?: string;
|
|
45
|
-
}): IConnectionContext;
|
|
46
|
-
}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Protocol Detector V2
|
|
3
|
-
*
|
|
4
|
-
* Simplified protocol detection using the new architecture
|
|
5
|
-
*/
|
|
6
|
-
import { TlsDetectorV2 } from './detectors/tls-detector-v2.js';
|
|
7
|
-
import { HttpDetectorV2 } from './detectors/http-detector-v2.js';
|
|
8
|
-
import { DetectionFragmentManager } from './utils/fragment-manager.js';
|
|
9
|
-
/**
|
|
10
|
-
* Main protocol detector class - V2
|
|
11
|
-
*/
|
|
12
|
-
export class ProtocolDetectorV2 {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.fragmentManager = new DetectionFragmentManager();
|
|
15
|
-
this.tlsDetector = new TlsDetectorV2(this.fragmentManager);
|
|
16
|
-
this.httpDetector = new HttpDetectorV2(this.fragmentManager);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Detect protocol from buffer data
|
|
20
|
-
*/
|
|
21
|
-
async detect(buffer, options) {
|
|
22
|
-
// Quick sanity check
|
|
23
|
-
if (!buffer || buffer.length === 0) {
|
|
24
|
-
return {
|
|
25
|
-
protocol: 'unknown',
|
|
26
|
-
connectionInfo: { protocol: 'unknown' },
|
|
27
|
-
isComplete: true
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
// Try TLS detection first (more specific)
|
|
31
|
-
if (this.tlsDetector.canHandle(buffer)) {
|
|
32
|
-
const tlsResult = this.tlsDetector.detect(buffer, options);
|
|
33
|
-
if (tlsResult) {
|
|
34
|
-
return tlsResult;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// Try HTTP detection
|
|
38
|
-
if (this.httpDetector.canHandle(buffer)) {
|
|
39
|
-
const httpResult = this.httpDetector.detect(buffer, options);
|
|
40
|
-
if (httpResult) {
|
|
41
|
-
return httpResult;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
// Neither TLS nor HTTP
|
|
45
|
-
return {
|
|
46
|
-
protocol: 'unknown',
|
|
47
|
-
connectionInfo: { protocol: 'unknown' },
|
|
48
|
-
isComplete: true
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Detect protocol with connection context for fragmented data
|
|
53
|
-
*/
|
|
54
|
-
async detectWithContext(buffer, context, options) {
|
|
55
|
-
// Quick sanity check
|
|
56
|
-
if (!buffer || buffer.length === 0) {
|
|
57
|
-
return {
|
|
58
|
-
protocol: 'unknown',
|
|
59
|
-
connectionInfo: { protocol: 'unknown' },
|
|
60
|
-
isComplete: true
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
// First peek to determine protocol type
|
|
64
|
-
if (this.tlsDetector.canHandle(buffer)) {
|
|
65
|
-
const result = this.tlsDetector.detectWithContext(buffer, context, options);
|
|
66
|
-
if (result) {
|
|
67
|
-
return result;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
if (this.httpDetector.canHandle(buffer)) {
|
|
71
|
-
const result = this.httpDetector.detectWithContext(buffer, context, options);
|
|
72
|
-
if (result) {
|
|
73
|
-
return result;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// Can't determine protocol
|
|
77
|
-
return {
|
|
78
|
-
protocol: 'unknown',
|
|
79
|
-
connectionInfo: { protocol: 'unknown' },
|
|
80
|
-
isComplete: false,
|
|
81
|
-
bytesNeeded: Math.max(this.tlsDetector.getMinimumBytes(), this.httpDetector.getMinimumBytes())
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Clean up resources
|
|
86
|
-
*/
|
|
87
|
-
cleanup() {
|
|
88
|
-
this.fragmentManager.cleanup();
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Destroy detector instance
|
|
92
|
-
*/
|
|
93
|
-
destroy() {
|
|
94
|
-
this.fragmentManager.destroy();
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Extract domain from connection info
|
|
98
|
-
*/
|
|
99
|
-
static extractDomain(connectionInfo) {
|
|
100
|
-
return connectionInfo.domain || connectionInfo.sni || connectionInfo.host;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Create a connection context from parameters
|
|
104
|
-
*/
|
|
105
|
-
static createConnectionContext(params) {
|
|
106
|
-
return {
|
|
107
|
-
id: params.socketId,
|
|
108
|
-
sourceIp: params.sourceIp || 'unknown',
|
|
109
|
-
sourcePort: params.sourcePort || 0,
|
|
110
|
-
destIp: params.destIp || 'unknown',
|
|
111
|
-
destPort: params.destPort || 0,
|
|
112
|
-
timestamp: Date.now()
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wtZGV0ZWN0b3ItdjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXRlY3Rpb24vcHJvdG9jb2wtZGV0ZWN0b3ItdjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUlILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFdkU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCO1FBQ0UsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFjLEVBQUUsT0FBMkI7UUFDdEQscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO2dCQUNMLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFO2dCQUN2QyxVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDO1FBQ0osQ0FBQztRQUVELDBDQUEwQztRQUMxQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FB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
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type * as plugins from '../../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* The primary forwarding types supported by SmartProxy
|
|
4
|
-
* Used for configuration compatibility
|
|
5
|
-
*/
|
|
6
|
-
export type TForwardingType = 'http-only' | 'https-passthrough' | 'https-terminate-to-http' | 'https-terminate-to-https';
|
|
7
|
-
/**
|
|
8
|
-
* Event types emitted by forwarding handlers
|
|
9
|
-
*/
|
|
10
|
-
export declare enum ForwardingHandlerEvents {
|
|
11
|
-
CONNECTED = "connected",
|
|
12
|
-
DISCONNECTED = "disconnected",
|
|
13
|
-
ERROR = "error",
|
|
14
|
-
DATA_FORWARDED = "data-forwarded",
|
|
15
|
-
HTTP_REQUEST = "http-request",
|
|
16
|
-
HTTP_RESPONSE = "http-response",
|
|
17
|
-
CERTIFICATE_NEEDED = "certificate-needed",
|
|
18
|
-
CERTIFICATE_LOADED = "certificate-loaded"
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Base interface for forwarding handlers
|
|
22
|
-
*/
|
|
23
|
-
export interface IForwardingHandler extends plugins.EventEmitter {
|
|
24
|
-
initialize(): Promise<void>;
|
|
25
|
-
handleConnection(socket: plugins.net.Socket): void;
|
|
26
|
-
handleHttpRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
|
|
27
|
-
}
|
|
28
|
-
import { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-patterns.js';
|
|
29
|
-
export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute };
|
|
30
|
-
export interface IForwardConfig {
|
|
31
|
-
type: TForwardingType;
|
|
32
|
-
target: {
|
|
33
|
-
host: string | string[];
|
|
34
|
-
port: number | 'preserve' | ((ctx: any) => number);
|
|
35
|
-
};
|
|
36
|
-
http?: any;
|
|
37
|
-
https?: any;
|
|
38
|
-
acme?: any;
|
|
39
|
-
security?: any;
|
|
40
|
-
advanced?: any;
|
|
41
|
-
[key: string]: any;
|
|
42
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Event types emitted by forwarding handlers
|
|
3
|
-
*/
|
|
4
|
-
export var ForwardingHandlerEvents;
|
|
5
|
-
(function (ForwardingHandlerEvents) {
|
|
6
|
-
ForwardingHandlerEvents["CONNECTED"] = "connected";
|
|
7
|
-
ForwardingHandlerEvents["DISCONNECTED"] = "disconnected";
|
|
8
|
-
ForwardingHandlerEvents["ERROR"] = "error";
|
|
9
|
-
ForwardingHandlerEvents["DATA_FORWARDED"] = "data-forwarded";
|
|
10
|
-
ForwardingHandlerEvents["HTTP_REQUEST"] = "http-request";
|
|
11
|
-
ForwardingHandlerEvents["HTTP_RESPONSE"] = "http-response";
|
|
12
|
-
ForwardingHandlerEvents["CERTIFICATE_NEEDED"] = "certificate-needed";
|
|
13
|
-
ForwardingHandlerEvents["CERTIFICATE_LOADED"] = "certificate-loaded";
|
|
14
|
-
})(ForwardingHandlerEvents || (ForwardingHandlerEvents = {}));
|
|
15
|
-
// Route-based helpers are now available directly from route-patterns.ts
|
|
16
|
-
import { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-patterns.js';
|
|
17
|
-
export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute };
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ZvcndhcmRpbmcvY29uZmlnL2ZvcndhcmRpbmctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx1QkFTWDtBQVRELFdBQVksdUJBQXVCO0lBQ2pDLGtEQUF1QixDQUFBO0lBQ3ZCLHdEQUE2QixDQUFBO0lBQzdCLDBDQUFlLENBQUE7SUFDZiw0REFBaUMsQ0FBQTtJQUNqQyx3REFBNkIsQ0FBQTtJQUM3QiwwREFBK0IsQ0FBQTtJQUMvQixvRUFBeUMsQ0FBQTtJQUN6QyxvRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBVFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQVNsQztBQVdELHdFQUF3RTtBQUN4RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDeEIsTUFBTSxtREFBbUQsQ0FBQztBQUUzRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDeEIsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Forwarding configuration exports
|
|
3
|
-
*
|
|
4
|
-
* Note: The legacy domain-based configuration has been replaced by route-based configuration.
|
|
5
|
-
* See /ts/proxies/smart-proxy/models/route-types.ts for the new route-based configuration.
|
|
6
|
-
*/
|
|
7
|
-
export type { TForwardingType, IForwardConfig, IForwardingHandler } from './forwarding-types.js';
|
|
8
|
-
export { ForwardingHandlerEvents } from './forwarding-types.js';
|
|
9
|
-
export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-patterns.js';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Forwarding configuration exports
|
|
3
|
-
*
|
|
4
|
-
* Note: The legacy domain-based configuration has been replaced by route-based configuration.
|
|
5
|
-
* See /ts/proxies/smart-proxy/models/route-types.ts for the new route-based configuration.
|
|
6
|
-
*/
|
|
7
|
-
export { ForwardingHandlerEvents } from './forwarding-types.js';
|
|
8
|
-
// Import route helpers from route-patterns instead of deleted route-helpers
|
|
9
|
-
export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-patterns.js';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3J3YXJkaW5nL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVFILE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQiw0RUFBNEU7QUFDNUUsT0FBTyxFQUNMLGVBQWUsRUFDZix5QkFBeUIsRUFDekIsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsdUJBQXVCLEVBQ3hCLE1BQU0sbURBQW1ELENBQUMifQ==
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { IForwardConfig } from '../config/forwarding-types.js';
|
|
2
|
-
import { ForwardingHandler } from '../handlers/base-handler.js';
|
|
3
|
-
/**
|
|
4
|
-
* Factory for creating forwarding handlers based on the configuration type
|
|
5
|
-
*/
|
|
6
|
-
export declare class ForwardingHandlerFactory {
|
|
7
|
-
/**
|
|
8
|
-
* Create a forwarding handler based on the configuration
|
|
9
|
-
* @param config The forwarding configuration
|
|
10
|
-
* @returns The appropriate forwarding handler
|
|
11
|
-
*/
|
|
12
|
-
static createHandler(config: IForwardConfig): ForwardingHandler;
|
|
13
|
-
/**
|
|
14
|
-
* Apply default values to a forwarding configuration based on its type
|
|
15
|
-
* @param config The original forwarding configuration
|
|
16
|
-
* @returns A configuration with defaults applied
|
|
17
|
-
*/
|
|
18
|
-
static applyDefaults(config: IForwardConfig): IForwardConfig;
|
|
19
|
-
/**
|
|
20
|
-
* Validate a forwarding configuration
|
|
21
|
-
* @param config The configuration to validate
|
|
22
|
-
* @throws Error if the configuration is invalid
|
|
23
|
-
*/
|
|
24
|
-
static validateConfig(config: IForwardConfig): void;
|
|
25
|
-
}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { ForwardingHandler } from '../handlers/base-handler.js';
|
|
2
|
-
import { HttpForwardingHandler } from '../handlers/http-handler.js';
|
|
3
|
-
import { HttpsPassthroughHandler } from '../handlers/https-passthrough-handler.js';
|
|
4
|
-
import { HttpsTerminateToHttpHandler } from '../handlers/https-terminate-to-http-handler.js';
|
|
5
|
-
import { HttpsTerminateToHttpsHandler } from '../handlers/https-terminate-to-https-handler.js';
|
|
6
|
-
/**
|
|
7
|
-
* Factory for creating forwarding handlers based on the configuration type
|
|
8
|
-
*/
|
|
9
|
-
export class ForwardingHandlerFactory {
|
|
10
|
-
/**
|
|
11
|
-
* Create a forwarding handler based on the configuration
|
|
12
|
-
* @param config The forwarding configuration
|
|
13
|
-
* @returns The appropriate forwarding handler
|
|
14
|
-
*/
|
|
15
|
-
static createHandler(config) {
|
|
16
|
-
// Create the appropriate handler based on the forwarding type
|
|
17
|
-
switch (config.type) {
|
|
18
|
-
case 'http-only':
|
|
19
|
-
return new HttpForwardingHandler(config);
|
|
20
|
-
case 'https-passthrough':
|
|
21
|
-
return new HttpsPassthroughHandler(config);
|
|
22
|
-
case 'https-terminate-to-http':
|
|
23
|
-
return new HttpsTerminateToHttpHandler(config);
|
|
24
|
-
case 'https-terminate-to-https':
|
|
25
|
-
return new HttpsTerminateToHttpsHandler(config);
|
|
26
|
-
default:
|
|
27
|
-
// Type system should prevent this, but just in case:
|
|
28
|
-
throw new Error(`Unknown forwarding type: ${config.type}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Apply default values to a forwarding configuration based on its type
|
|
33
|
-
* @param config The original forwarding configuration
|
|
34
|
-
* @returns A configuration with defaults applied
|
|
35
|
-
*/
|
|
36
|
-
static applyDefaults(config) {
|
|
37
|
-
// Create a deep copy of the configuration
|
|
38
|
-
const result = JSON.parse(JSON.stringify(config));
|
|
39
|
-
// Apply defaults based on forwarding type
|
|
40
|
-
switch (config.type) {
|
|
41
|
-
case 'http-only':
|
|
42
|
-
// Set defaults for HTTP-only mode
|
|
43
|
-
result.http = {
|
|
44
|
-
enabled: true,
|
|
45
|
-
...config.http
|
|
46
|
-
};
|
|
47
|
-
// Set default port and socket if not provided
|
|
48
|
-
if (!result.port) {
|
|
49
|
-
result.port = 80;
|
|
50
|
-
}
|
|
51
|
-
if (!result.socket) {
|
|
52
|
-
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
53
|
-
}
|
|
54
|
-
break;
|
|
55
|
-
case 'https-passthrough':
|
|
56
|
-
// Set defaults for HTTPS passthrough
|
|
57
|
-
result.https = {
|
|
58
|
-
forwardSni: true,
|
|
59
|
-
...config.https
|
|
60
|
-
};
|
|
61
|
-
// SNI forwarding doesn't do HTTP
|
|
62
|
-
result.http = {
|
|
63
|
-
enabled: false,
|
|
64
|
-
...config.http
|
|
65
|
-
};
|
|
66
|
-
// Set default port and socket if not provided
|
|
67
|
-
if (!result.port) {
|
|
68
|
-
result.port = 443;
|
|
69
|
-
}
|
|
70
|
-
if (!result.socket) {
|
|
71
|
-
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
72
|
-
}
|
|
73
|
-
break;
|
|
74
|
-
case 'https-terminate-to-http':
|
|
75
|
-
// Set defaults for HTTPS termination to HTTP
|
|
76
|
-
result.https = {
|
|
77
|
-
...config.https
|
|
78
|
-
};
|
|
79
|
-
// Support HTTP access by default in this mode
|
|
80
|
-
result.http = {
|
|
81
|
-
enabled: true,
|
|
82
|
-
redirectToHttps: true,
|
|
83
|
-
...config.http
|
|
84
|
-
};
|
|
85
|
-
// Enable ACME by default
|
|
86
|
-
result.acme = {
|
|
87
|
-
enabled: true,
|
|
88
|
-
maintenance: true,
|
|
89
|
-
...config.acme
|
|
90
|
-
};
|
|
91
|
-
// Set default port and socket if not provided
|
|
92
|
-
if (!result.port) {
|
|
93
|
-
result.port = 443;
|
|
94
|
-
}
|
|
95
|
-
if (!result.socket) {
|
|
96
|
-
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
97
|
-
}
|
|
98
|
-
break;
|
|
99
|
-
case 'https-terminate-to-https':
|
|
100
|
-
// Similar to terminate-to-http but with different target handling
|
|
101
|
-
result.https = {
|
|
102
|
-
...config.https
|
|
103
|
-
};
|
|
104
|
-
result.http = {
|
|
105
|
-
enabled: true,
|
|
106
|
-
redirectToHttps: true,
|
|
107
|
-
...config.http
|
|
108
|
-
};
|
|
109
|
-
result.acme = {
|
|
110
|
-
enabled: true,
|
|
111
|
-
maintenance: true,
|
|
112
|
-
...config.acme
|
|
113
|
-
};
|
|
114
|
-
// Set default port and socket if not provided
|
|
115
|
-
if (!result.port) {
|
|
116
|
-
result.port = 443;
|
|
117
|
-
}
|
|
118
|
-
if (!result.socket) {
|
|
119
|
-
result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
|
|
120
|
-
}
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
return result;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Validate a forwarding configuration
|
|
127
|
-
* @param config The configuration to validate
|
|
128
|
-
* @throws Error if the configuration is invalid
|
|
129
|
-
*/
|
|
130
|
-
static validateConfig(config) {
|
|
131
|
-
// Validate common properties
|
|
132
|
-
if (!config.target) {
|
|
133
|
-
throw new Error('Forwarding configuration must include a target');
|
|
134
|
-
}
|
|
135
|
-
if (!config.target.host || (Array.isArray(config.target.host) && config.target.host.length === 0)) {
|
|
136
|
-
throw new Error('Target must include a host or array of hosts');
|
|
137
|
-
}
|
|
138
|
-
// Validate port if it's a number
|
|
139
|
-
if (typeof config.target.port === 'number') {
|
|
140
|
-
if (config.target.port <= 0 || config.target.port > 65535) {
|
|
141
|
-
throw new Error('Target must include a valid port (1-65535)');
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else if (config.target.port !== 'preserve' && typeof config.target.port !== 'function') {
|
|
145
|
-
throw new Error('Target port must be a number, "preserve", or a function');
|
|
146
|
-
}
|
|
147
|
-
// Type-specific validation
|
|
148
|
-
switch (config.type) {
|
|
149
|
-
case 'http-only':
|
|
150
|
-
// HTTP-only needs http.enabled to be true
|
|
151
|
-
if (config.http?.enabled === false) {
|
|
152
|
-
throw new Error('HTTP-only forwarding must have HTTP enabled');
|
|
153
|
-
}
|
|
154
|
-
break;
|
|
155
|
-
case 'https-passthrough':
|
|
156
|
-
// HTTPS passthrough doesn't support HTTP
|
|
157
|
-
if (config.http?.enabled === true) {
|
|
158
|
-
throw new Error('HTTPS passthrough does not support HTTP');
|
|
159
|
-
}
|
|
160
|
-
// HTTPS passthrough doesn't work with ACME
|
|
161
|
-
if (config.acme?.enabled === true) {
|
|
162
|
-
throw new Error('HTTPS passthrough does not support ACME');
|
|
163
|
-
}
|
|
164
|
-
break;
|
|
165
|
-
case 'https-terminate-to-http':
|
|
166
|
-
case 'https-terminate-to-https':
|
|
167
|
-
// These modes support all options, nothing specific to validate
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9yd2FyZGluZy9mYWN0b3J5L2ZvcndhcmRpbmctZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUUvRjs7R0FFRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkM7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBc0I7UUFDaEQsOERBQThEO1FBQzlELFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLEtBQUssV0FBVztnQkFDZCxPQUFPLElBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFM0MsS0FBSyxtQkFBbUI7Z0JBQ3RCLE9BQU8sSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU3QyxLQUFLLHlCQUF5QjtnQkFDNUIsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpELEtBQUssMEJBQTBCO2dCQUM3QixPQUFPLElBQUksNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEQ7Z0JBQ0UscURBQXFEO2dCQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE2QixNQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQXNCO1FBQ2hE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
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Forwarding factory implementations
|
|
3
|
-
*/
|
|
4
|
-
export { ForwardingHandlerFactory } from './forwarding-factory.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3J3YXJkaW5nL2ZhY3RvcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyJ9
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IForwardConfig, IForwardingHandler } from '../config/forwarding-types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Base class for all forwarding handlers
|
|
5
|
-
*/
|
|
6
|
-
export declare abstract class ForwardingHandler extends plugins.EventEmitter implements IForwardingHandler {
|
|
7
|
-
protected config: IForwardConfig;
|
|
8
|
-
/**
|
|
9
|
-
* Create a new ForwardingHandler
|
|
10
|
-
* @param config The forwarding configuration
|
|
11
|
-
*/
|
|
12
|
-
constructor(config: IForwardConfig);
|
|
13
|
-
/**
|
|
14
|
-
* Initialize the handler
|
|
15
|
-
* Base implementation does nothing, subclasses should override as needed
|
|
16
|
-
*/
|
|
17
|
-
initialize(): Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Handle a new socket connection
|
|
20
|
-
* @param socket The incoming socket connection
|
|
21
|
-
*/
|
|
22
|
-
abstract handleConnection(socket: plugins.net.Socket): void;
|
|
23
|
-
/**
|
|
24
|
-
* Handle an HTTP request
|
|
25
|
-
* @param req The HTTP request
|
|
26
|
-
* @param res The HTTP response
|
|
27
|
-
*/
|
|
28
|
-
abstract handleHttpRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
|
|
29
|
-
/**
|
|
30
|
-
* Get a target from the configuration, supporting round-robin selection
|
|
31
|
-
* @param incomingPort Optional incoming port for 'preserve' mode
|
|
32
|
-
* @returns A resolved target object with host and port
|
|
33
|
-
*/
|
|
34
|
-
protected getTargetFromConfig(incomingPort?: number): {
|
|
35
|
-
host: string;
|
|
36
|
-
port: number;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Resolves a port value, handling 'preserve' and function ports
|
|
40
|
-
* @param port The port value to resolve
|
|
41
|
-
* @param incomingPort Optional incoming port to use for 'preserve' mode
|
|
42
|
-
*/
|
|
43
|
-
protected resolvePort(port: number | 'preserve' | ((ctx: any) => number), incomingPort?: number): number;
|
|
44
|
-
/**
|
|
45
|
-
* Redirect an HTTP request to HTTPS
|
|
46
|
-
* @param req The HTTP request
|
|
47
|
-
* @param res The HTTP response
|
|
48
|
-
*/
|
|
49
|
-
protected redirectToHttps(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
|
|
50
|
-
/**
|
|
51
|
-
* Apply custom headers from configuration
|
|
52
|
-
* @param headers The original headers
|
|
53
|
-
* @param variables Variables to replace in the headers
|
|
54
|
-
* @returns The headers with custom values applied
|
|
55
|
-
*/
|
|
56
|
-
protected applyCustomHeaders(headers: Record<string, string | string[] | undefined>, variables: Record<string, string>): Record<string, string | string[] | undefined>;
|
|
57
|
-
/**
|
|
58
|
-
* Get the timeout for this connection from configuration
|
|
59
|
-
* @returns Timeout in milliseconds
|
|
60
|
-
*/
|
|
61
|
-
protected getTimeout(): number;
|
|
62
|
-
}
|