@push.rocks/smartproxy 25.17.10 → 26.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 +15 -0
- package/dist_rust/rustproxy_linux_amd64 +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +2 -2
- package/dist_ts/core/index.d.ts +0 -1
- package/dist_ts/core/index.js +1 -2
- package/dist_ts/core/models/index.d.ts +0 -1
- package/dist_ts/core/models/index.js +1 -2
- package/dist_ts/core/utils/index.d.ts +0 -12
- package/dist_ts/core/utils/index.js +1 -13
- package/dist_ts/index.d.ts +0 -3
- package/dist_ts/index.js +2 -7
- package/dist_ts/protocols/http/index.d.ts +0 -1
- package/dist_ts/protocols/http/index.js +1 -2
- package/dist_ts/protocols/index.d.ts +0 -7
- package/dist_ts/protocols/index.js +1 -8
- package/dist_ts/proxies/smart-proxy/models/metrics-types.d.ts +20 -0
- package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.d.ts +2 -1
- package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.js +4 -1
- package/dist_ts/proxies/smart-proxy/socket-handler-server.js +6 -1
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +0 -7
- package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +50 -51
- package/dist_ts/routing/index.d.ts +0 -1
- package/dist_ts/routing/index.js +1 -3
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/core/index.ts +0 -1
- package/ts/core/models/index.ts +0 -1
- package/ts/core/utils/index.ts +0 -12
- package/ts/index.ts +1 -7
- package/ts/protocols/http/index.ts +1 -2
- package/ts/protocols/index.ts +0 -7
- package/ts/proxies/smart-proxy/models/metrics-types.ts +21 -0
- package/ts/proxies/smart-proxy/rust-metrics-adapter.ts +4 -1
- package/ts/proxies/smart-proxy/socket-handler-server.ts +6 -0
- package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +60 -59
- package/ts/routing/index.ts +0 -3
- package/dist_ts/core/events/index.d.ts +0 -4
- package/dist_ts/core/events/index.js +0 -5
- package/dist_ts/core/models/socket-augmentation.d.ts +0 -15
- package/dist_ts/core/models/socket-augmentation.js +0 -18
- package/dist_ts/core/utils/async-utils.d.ts +0 -81
- package/dist_ts/core/utils/async-utils.js +0 -216
- package/dist_ts/core/utils/binary-heap.d.ts +0 -73
- package/dist_ts/core/utils/binary-heap.js +0 -193
- package/dist_ts/core/utils/enhanced-connection-pool.d.ts +0 -110
- package/dist_ts/core/utils/enhanced-connection-pool.js +0 -325
- package/dist_ts/core/utils/fs-utils.d.ts +0 -144
- package/dist_ts/core/utils/fs-utils.js +0 -252
- package/dist_ts/core/utils/ip-utils.d.ts +0 -69
- package/dist_ts/core/utils/ip-utils.js +0 -270
- package/dist_ts/core/utils/lifecycle-component.d.ts +0 -59
- package/dist_ts/core/utils/lifecycle-component.js +0 -211
- package/dist_ts/core/utils/log-deduplicator.d.ts +0 -39
- package/dist_ts/core/utils/log-deduplicator.js +0 -305
- package/dist_ts/core/utils/security-utils.d.ts +0 -111
- package/dist_ts/core/utils/security-utils.js +0 -212
- package/dist_ts/core/utils/shared-security-manager.d.ts +0 -128
- package/dist_ts/core/utils/shared-security-manager.js +0 -362
- package/dist_ts/core/utils/socket-utils.d.ts +0 -63
- package/dist_ts/core/utils/socket-utils.js +0 -249
- package/dist_ts/core/utils/template-utils.d.ts +0 -37
- package/dist_ts/core/utils/template-utils.js +0 -104
- package/dist_ts/core/utils/validation-utils.d.ts +0 -61
- package/dist_ts/core/utils/validation-utils.js +0 -149
- package/dist_ts/core/utils/websocket-utils.d.ts +0 -22
- package/dist_ts/core/utils/websocket-utils.js +0 -30
- package/dist_ts/detection/detectors/http-detector.d.ts +0 -33
- package/dist_ts/detection/detectors/http-detector.js +0 -101
- package/dist_ts/detection/detectors/quick-detector.d.ts +0 -28
- package/dist_ts/detection/detectors/quick-detector.js +0 -131
- package/dist_ts/detection/detectors/routing-extractor.d.ts +0 -28
- package/dist_ts/detection/detectors/routing-extractor.js +0 -122
- package/dist_ts/detection/detectors/tls-detector.d.ts +0 -47
- package/dist_ts/detection/detectors/tls-detector.js +0 -183
- package/dist_ts/detection/index.d.ts +0 -17
- package/dist_ts/detection/index.js +0 -22
- package/dist_ts/detection/models/detection-types.d.ts +0 -87
- package/dist_ts/detection/models/detection-types.js +0 -5
- package/dist_ts/detection/models/interfaces.d.ts +0 -97
- package/dist_ts/detection/models/interfaces.js +0 -5
- package/dist_ts/detection/protocol-detector.d.ts +0 -79
- package/dist_ts/detection/protocol-detector.js +0 -253
- package/dist_ts/detection/utils/buffer-utils.d.ts +0 -61
- package/dist_ts/detection/utils/buffer-utils.js +0 -127
- package/dist_ts/detection/utils/fragment-manager.d.ts +0 -31
- package/dist_ts/detection/utils/fragment-manager.js +0 -53
- package/dist_ts/detection/utils/parser-utils.d.ts +0 -42
- package/dist_ts/detection/utils/parser-utils.js +0 -63
- package/dist_ts/protocols/common/fragment-handler.d.ts +0 -73
- package/dist_ts/protocols/common/fragment-handler.js +0 -121
- package/dist_ts/protocols/common/index.d.ts +0 -7
- package/dist_ts/protocols/common/index.js +0 -8
- package/dist_ts/protocols/common/types.d.ts +0 -68
- package/dist_ts/protocols/common/types.js +0 -7
- package/dist_ts/protocols/http/parser.d.ts +0 -58
- package/dist_ts/protocols/http/parser.js +0 -184
- package/dist_ts/protocols/proxy/index.d.ts +0 -5
- package/dist_ts/protocols/proxy/index.js +0 -6
- package/dist_ts/protocols/proxy/types.d.ts +0 -47
- package/dist_ts/protocols/proxy/types.js +0 -6
- package/dist_ts/protocols/tls/alerts/index.d.ts +0 -4
- package/dist_ts/protocols/tls/alerts/index.js +0 -5
- package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +0 -150
- package/dist_ts/protocols/tls/alerts/tls-alert.js +0 -226
- package/dist_ts/protocols/tls/index.d.ts +0 -12
- package/dist_ts/protocols/tls/index.js +0 -27
- package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +0 -100
- package/dist_ts/protocols/tls/sni/client-hello-parser.js +0 -463
- package/dist_ts/protocols/tls/sni/index.d.ts +0 -5
- package/dist_ts/protocols/tls/sni/index.js +0 -6
- package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +0 -58
- package/dist_ts/protocols/tls/sni/sni-extraction.js +0 -275
- package/dist_ts/protocols/tls/utils/index.d.ts +0 -4
- package/dist_ts/protocols/tls/utils/index.js +0 -5
- package/dist_ts/protocols/tls/utils/tls-utils.d.ts +0 -158
- package/dist_ts/protocols/tls/utils/tls-utils.js +0 -187
- package/dist_ts/protocols/websocket/constants.d.ts +0 -55
- package/dist_ts/protocols/websocket/constants.js +0 -58
- package/dist_ts/protocols/websocket/index.d.ts +0 -7
- package/dist_ts/protocols/websocket/index.js +0 -8
- package/dist_ts/protocols/websocket/types.d.ts +0 -47
- package/dist_ts/protocols/websocket/types.js +0 -5
- package/dist_ts/protocols/websocket/utils.d.ts +0 -25
- package/dist_ts/protocols/websocket/utils.js +0 -103
- package/dist_ts/routing/router/http-router.d.ts +0 -89
- package/dist_ts/routing/router/http-router.js +0 -205
- package/dist_ts/routing/router/index.d.ts +0 -5
- package/dist_ts/routing/router/index.js +0 -6
- package/dist_ts/tls/index.d.ts +0 -16
- package/dist_ts/tls/index.js +0 -24
- package/dist_ts/tls/sni/index.d.ts +0 -4
- package/dist_ts/tls/sni/index.js +0 -5
- package/dist_ts/tls/sni/sni-handler.d.ts +0 -154
- package/dist_ts/tls/sni/sni-handler.js +0 -191
- package/ts/core/events/index.ts +0 -3
- package/ts/core/models/socket-augmentation.ts +0 -38
- package/ts/core/utils/async-utils.ts +0 -275
- package/ts/core/utils/binary-heap.ts +0 -225
- package/ts/core/utils/enhanced-connection-pool.ts +0 -425
- package/ts/core/utils/fs-utils.ts +0 -270
- package/ts/core/utils/ip-utils.ts +0 -303
- package/ts/core/utils/lifecycle-component.ts +0 -251
- package/ts/core/utils/log-deduplicator.ts +0 -370
- package/ts/core/utils/security-utils.ts +0 -305
- package/ts/core/utils/shared-security-manager.ts +0 -470
- package/ts/core/utils/socket-utils.ts +0 -322
- package/ts/core/utils/template-utils.ts +0 -124
- package/ts/core/utils/validation-utils.ts +0 -177
- package/ts/core/utils/websocket-utils.ts +0 -33
- package/ts/detection/detectors/http-detector.ts +0 -127
- package/ts/detection/detectors/quick-detector.ts +0 -148
- package/ts/detection/detectors/routing-extractor.ts +0 -147
- package/ts/detection/detectors/tls-detector.ts +0 -223
- package/ts/detection/index.ts +0 -25
- package/ts/detection/models/detection-types.ts +0 -102
- package/ts/detection/models/interfaces.ts +0 -115
- package/ts/detection/protocol-detector.ts +0 -319
- package/ts/detection/utils/buffer-utils.ts +0 -141
- package/ts/detection/utils/fragment-manager.ts +0 -64
- package/ts/detection/utils/parser-utils.ts +0 -77
- package/ts/protocols/common/fragment-handler.ts +0 -167
- package/ts/protocols/common/index.ts +0 -8
- package/ts/protocols/common/types.ts +0 -76
- package/ts/protocols/http/parser.ts +0 -219
- package/ts/protocols/proxy/index.ts +0 -6
- package/ts/protocols/proxy/types.ts +0 -53
- package/ts/protocols/tls/alerts/index.ts +0 -3
- package/ts/protocols/tls/alerts/tls-alert.ts +0 -259
- package/ts/protocols/tls/index.ts +0 -37
- package/ts/protocols/tls/sni/client-hello-parser.ts +0 -629
- package/ts/protocols/tls/sni/index.ts +0 -6
- package/ts/protocols/tls/sni/sni-extraction.ts +0 -353
- package/ts/protocols/tls/utils/index.ts +0 -3
- package/ts/protocols/tls/utils/tls-utils.ts +0 -201
- package/ts/protocols/websocket/constants.ts +0 -60
- package/ts/protocols/websocket/index.ts +0 -8
- package/ts/protocols/websocket/types.ts +0 -53
- package/ts/protocols/websocket/utils.ts +0 -98
- package/ts/routing/router/http-router.ts +0 -266
- package/ts/routing/router/index.ts +0 -7
- package/ts/tls/index.ts +0 -29
- package/ts/tls/sni/index.ts +0 -3
- package/ts/tls/sni/sni-handler.ts +0 -264
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Constants
|
|
3
|
-
* Based on RFC 6455
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* WebSocket opcode types
|
|
7
|
-
*/
|
|
8
|
-
export declare enum WebSocketOpcode {
|
|
9
|
-
CONTINUATION = 0,
|
|
10
|
-
TEXT = 1,
|
|
11
|
-
BINARY = 2,
|
|
12
|
-
CLOSE = 8,
|
|
13
|
-
PING = 9,
|
|
14
|
-
PONG = 10
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* WebSocket close codes
|
|
18
|
-
*/
|
|
19
|
-
export declare enum WebSocketCloseCode {
|
|
20
|
-
NORMAL_CLOSURE = 1000,
|
|
21
|
-
GOING_AWAY = 1001,
|
|
22
|
-
PROTOCOL_ERROR = 1002,
|
|
23
|
-
UNSUPPORTED_DATA = 1003,
|
|
24
|
-
NO_STATUS_RECEIVED = 1005,
|
|
25
|
-
ABNORMAL_CLOSURE = 1006,
|
|
26
|
-
INVALID_FRAME_PAYLOAD_DATA = 1007,
|
|
27
|
-
POLICY_VIOLATION = 1008,
|
|
28
|
-
MESSAGE_TOO_BIG = 1009,
|
|
29
|
-
MISSING_EXTENSION = 1010,
|
|
30
|
-
INTERNAL_ERROR = 1011,
|
|
31
|
-
SERVICE_RESTART = 1012,
|
|
32
|
-
TRY_AGAIN_LATER = 1013,
|
|
33
|
-
BAD_GATEWAY = 1014,
|
|
34
|
-
TLS_HANDSHAKE = 1015
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* WebSocket protocol version
|
|
38
|
-
*/
|
|
39
|
-
export declare const WEBSOCKET_VERSION = 13;
|
|
40
|
-
/**
|
|
41
|
-
* WebSocket magic string for handshake
|
|
42
|
-
*/
|
|
43
|
-
export declare const WEBSOCKET_MAGIC_STRING = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
|
|
44
|
-
/**
|
|
45
|
-
* WebSocket headers
|
|
46
|
-
*/
|
|
47
|
-
export declare const WEBSOCKET_HEADERS: {
|
|
48
|
-
readonly UPGRADE: "upgrade";
|
|
49
|
-
readonly CONNECTION: "connection";
|
|
50
|
-
readonly SEC_WEBSOCKET_KEY: "sec-websocket-key";
|
|
51
|
-
readonly SEC_WEBSOCKET_VERSION: "sec-websocket-version";
|
|
52
|
-
readonly SEC_WEBSOCKET_ACCEPT: "sec-websocket-accept";
|
|
53
|
-
readonly SEC_WEBSOCKET_PROTOCOL: "sec-websocket-protocol";
|
|
54
|
-
readonly SEC_WEBSOCKET_EXTENSIONS: "sec-websocket-extensions";
|
|
55
|
-
};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Constants
|
|
3
|
-
* Based on RFC 6455
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* WebSocket opcode types
|
|
7
|
-
*/
|
|
8
|
-
export var WebSocketOpcode;
|
|
9
|
-
(function (WebSocketOpcode) {
|
|
10
|
-
WebSocketOpcode[WebSocketOpcode["CONTINUATION"] = 0] = "CONTINUATION";
|
|
11
|
-
WebSocketOpcode[WebSocketOpcode["TEXT"] = 1] = "TEXT";
|
|
12
|
-
WebSocketOpcode[WebSocketOpcode["BINARY"] = 2] = "BINARY";
|
|
13
|
-
WebSocketOpcode[WebSocketOpcode["CLOSE"] = 8] = "CLOSE";
|
|
14
|
-
WebSocketOpcode[WebSocketOpcode["PING"] = 9] = "PING";
|
|
15
|
-
WebSocketOpcode[WebSocketOpcode["PONG"] = 10] = "PONG";
|
|
16
|
-
})(WebSocketOpcode || (WebSocketOpcode = {}));
|
|
17
|
-
/**
|
|
18
|
-
* WebSocket close codes
|
|
19
|
-
*/
|
|
20
|
-
export var WebSocketCloseCode;
|
|
21
|
-
(function (WebSocketCloseCode) {
|
|
22
|
-
WebSocketCloseCode[WebSocketCloseCode["NORMAL_CLOSURE"] = 1000] = "NORMAL_CLOSURE";
|
|
23
|
-
WebSocketCloseCode[WebSocketCloseCode["GOING_AWAY"] = 1001] = "GOING_AWAY";
|
|
24
|
-
WebSocketCloseCode[WebSocketCloseCode["PROTOCOL_ERROR"] = 1002] = "PROTOCOL_ERROR";
|
|
25
|
-
WebSocketCloseCode[WebSocketCloseCode["UNSUPPORTED_DATA"] = 1003] = "UNSUPPORTED_DATA";
|
|
26
|
-
WebSocketCloseCode[WebSocketCloseCode["NO_STATUS_RECEIVED"] = 1005] = "NO_STATUS_RECEIVED";
|
|
27
|
-
WebSocketCloseCode[WebSocketCloseCode["ABNORMAL_CLOSURE"] = 1006] = "ABNORMAL_CLOSURE";
|
|
28
|
-
WebSocketCloseCode[WebSocketCloseCode["INVALID_FRAME_PAYLOAD_DATA"] = 1007] = "INVALID_FRAME_PAYLOAD_DATA";
|
|
29
|
-
WebSocketCloseCode[WebSocketCloseCode["POLICY_VIOLATION"] = 1008] = "POLICY_VIOLATION";
|
|
30
|
-
WebSocketCloseCode[WebSocketCloseCode["MESSAGE_TOO_BIG"] = 1009] = "MESSAGE_TOO_BIG";
|
|
31
|
-
WebSocketCloseCode[WebSocketCloseCode["MISSING_EXTENSION"] = 1010] = "MISSING_EXTENSION";
|
|
32
|
-
WebSocketCloseCode[WebSocketCloseCode["INTERNAL_ERROR"] = 1011] = "INTERNAL_ERROR";
|
|
33
|
-
WebSocketCloseCode[WebSocketCloseCode["SERVICE_RESTART"] = 1012] = "SERVICE_RESTART";
|
|
34
|
-
WebSocketCloseCode[WebSocketCloseCode["TRY_AGAIN_LATER"] = 1013] = "TRY_AGAIN_LATER";
|
|
35
|
-
WebSocketCloseCode[WebSocketCloseCode["BAD_GATEWAY"] = 1014] = "BAD_GATEWAY";
|
|
36
|
-
WebSocketCloseCode[WebSocketCloseCode["TLS_HANDSHAKE"] = 1015] = "TLS_HANDSHAKE";
|
|
37
|
-
})(WebSocketCloseCode || (WebSocketCloseCode = {}));
|
|
38
|
-
/**
|
|
39
|
-
* WebSocket protocol version
|
|
40
|
-
*/
|
|
41
|
-
export const WEBSOCKET_VERSION = 13;
|
|
42
|
-
/**
|
|
43
|
-
* WebSocket magic string for handshake
|
|
44
|
-
*/
|
|
45
|
-
export const WEBSOCKET_MAGIC_STRING = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
|
|
46
|
-
/**
|
|
47
|
-
* WebSocket headers
|
|
48
|
-
*/
|
|
49
|
-
export const WEBSOCKET_HEADERS = {
|
|
50
|
-
UPGRADE: 'upgrade',
|
|
51
|
-
CONNECTION: 'connection',
|
|
52
|
-
SEC_WEBSOCKET_KEY: 'sec-websocket-key',
|
|
53
|
-
SEC_WEBSOCKET_VERSION: 'sec-websocket-version',
|
|
54
|
-
SEC_WEBSOCKET_ACCEPT: 'sec-websocket-accept',
|
|
55
|
-
SEC_WEBSOCKET_PROTOCOL: 'sec-websocket-protocol',
|
|
56
|
-
SEC_WEBSOCKET_EXTENSIONS: 'sec-websocket-extensions',
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJvdG9jb2xzL3dlYnNvY2tldC9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQU9YO0FBUEQsV0FBWSxlQUFlO0lBQ3pCLHFFQUFrQixDQUFBO0lBQ2xCLHFEQUFVLENBQUE7SUFDVix5REFBWSxDQUFBO0lBQ1osdURBQVcsQ0FBQTtJQUNYLHFEQUFVLENBQUE7SUFDVixzREFBVSxDQUFBO0FBQ1osQ0FBQyxFQVBXLGVBQWUsS0FBZixlQUFlLFFBTzFCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFnQlg7QUFoQkQsV0FBWSxrQkFBa0I7SUFDNUIsa0ZBQXFCLENBQUE7SUFDckIsMEVBQWlCLENBQUE7SUFDakIsa0ZBQXFCLENBQUE7SUFDckIsc0ZBQXVCLENBQUE7SUFDdkIsMEZBQXlCLENBQUE7SUFDekIsc0ZBQXVCLENBQUE7SUFDdkIsMEdBQWlDLENBQUE7SUFDakMsc0ZBQXVCLENBQUE7SUFDdkIsb0ZBQXNCLENBQUE7SUFDdEIsd0ZBQXdCLENBQUE7SUFDeEIsa0ZBQXFCLENBQUE7SUFDckIsb0ZBQXNCLENBQUE7SUFDdEIsb0ZBQXNCLENBQUE7SUFDdEIsNEVBQWtCLENBQUE7SUFDbEIsZ0ZBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQWhCVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBZ0I3QjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsc0NBQXNDLENBQUM7QUFFN0U7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixPQUFPLEVBQUUsU0FBUztJQUNsQixVQUFVLEVBQUUsWUFBWTtJQUN4QixpQkFBaUIsRUFBRSxtQkFBbUI7SUFDdEMscUJBQXFCLEVBQUUsdUJBQXVCO0lBQzlDLG9CQUFvQixFQUFFLHNCQUFzQjtJQUM1QyxzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQsd0JBQXdCLEVBQUUsMEJBQTBCO0NBQzVDLENBQUMifQ==
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Module
|
|
3
|
-
* WebSocket protocol utilities and constants
|
|
4
|
-
*/
|
|
5
|
-
export * from './constants.js';
|
|
6
|
-
export * from './types.js';
|
|
7
|
-
export * from './utils.js';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvd2Vic29ja2V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Type Definitions
|
|
3
|
-
*/
|
|
4
|
-
import type { WebSocketOpcode, WebSocketCloseCode } from './constants.js';
|
|
5
|
-
/**
|
|
6
|
-
* WebSocket frame header
|
|
7
|
-
*/
|
|
8
|
-
export interface IWebSocketFrameHeader {
|
|
9
|
-
fin: boolean;
|
|
10
|
-
rsv1: boolean;
|
|
11
|
-
rsv2: boolean;
|
|
12
|
-
rsv3: boolean;
|
|
13
|
-
opcode: WebSocketOpcode;
|
|
14
|
-
masked: boolean;
|
|
15
|
-
payloadLength: number;
|
|
16
|
-
maskingKey?: Buffer;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* WebSocket frame
|
|
20
|
-
*/
|
|
21
|
-
export interface IWebSocketFrame {
|
|
22
|
-
header: IWebSocketFrameHeader;
|
|
23
|
-
payload: Buffer;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* WebSocket close frame payload
|
|
27
|
-
*/
|
|
28
|
-
export interface IWebSocketClosePayload {
|
|
29
|
-
code: WebSocketCloseCode;
|
|
30
|
-
reason?: string;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* WebSocket handshake request headers
|
|
34
|
-
*/
|
|
35
|
-
export interface IWebSocketHandshakeHeaders {
|
|
36
|
-
upgrade: string;
|
|
37
|
-
connection: string;
|
|
38
|
-
'sec-websocket-key': string;
|
|
39
|
-
'sec-websocket-version': string;
|
|
40
|
-
'sec-websocket-protocol'?: string;
|
|
41
|
-
'sec-websocket-extensions'?: string;
|
|
42
|
-
[key: string]: string | undefined;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Type for WebSocket raw data (matching ws library)
|
|
46
|
-
*/
|
|
47
|
-
export type RawData = Buffer | ArrayBuffer | Buffer[] | any;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Type Definitions
|
|
3
|
-
*/
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvd2Vic29ja2V0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHIn0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Utilities
|
|
3
|
-
*/
|
|
4
|
-
import type { RawData } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Get the length of a WebSocket message regardless of its type
|
|
7
|
-
* (handles all possible WebSocket message data types)
|
|
8
|
-
*/
|
|
9
|
-
export declare function getMessageSize(data: RawData): number;
|
|
10
|
-
/**
|
|
11
|
-
* Convert any raw WebSocket data to Buffer for consistent handling
|
|
12
|
-
*/
|
|
13
|
-
export declare function toBuffer(data: RawData): Buffer;
|
|
14
|
-
/**
|
|
15
|
-
* Generate WebSocket accept key from client key
|
|
16
|
-
*/
|
|
17
|
-
export declare function generateAcceptKey(clientKey: string): string;
|
|
18
|
-
/**
|
|
19
|
-
* Validate WebSocket upgrade request
|
|
20
|
-
*/
|
|
21
|
-
export declare function isWebSocketUpgrade(headers: Record<string, string>): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Generate random WebSocket key for client handshake
|
|
24
|
-
*/
|
|
25
|
-
export declare function generateWebSocketKey(): string;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebSocket Protocol Utilities
|
|
3
|
-
*/
|
|
4
|
-
import * as crypto from 'node:crypto';
|
|
5
|
-
import { WEBSOCKET_MAGIC_STRING } from './constants.js';
|
|
6
|
-
/**
|
|
7
|
-
* Get the length of a WebSocket message regardless of its type
|
|
8
|
-
* (handles all possible WebSocket message data types)
|
|
9
|
-
*/
|
|
10
|
-
export function getMessageSize(data) {
|
|
11
|
-
if (typeof data === 'string') {
|
|
12
|
-
// For string data, get the byte length
|
|
13
|
-
return Buffer.from(data, 'utf8').length;
|
|
14
|
-
}
|
|
15
|
-
else if (data instanceof Buffer) {
|
|
16
|
-
// For Node.js Buffer
|
|
17
|
-
return data.length;
|
|
18
|
-
}
|
|
19
|
-
else if (data instanceof ArrayBuffer) {
|
|
20
|
-
// For ArrayBuffer
|
|
21
|
-
return data.byteLength;
|
|
22
|
-
}
|
|
23
|
-
else if (Array.isArray(data)) {
|
|
24
|
-
// For array of buffers, sum their lengths
|
|
25
|
-
return data.reduce((sum, chunk) => {
|
|
26
|
-
if (chunk instanceof Buffer) {
|
|
27
|
-
return sum + chunk.length;
|
|
28
|
-
}
|
|
29
|
-
else if (chunk instanceof ArrayBuffer) {
|
|
30
|
-
return sum + chunk.byteLength;
|
|
31
|
-
}
|
|
32
|
-
return sum;
|
|
33
|
-
}, 0);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// For other types, try to determine the size or return 0
|
|
37
|
-
try {
|
|
38
|
-
return Buffer.from(data).length;
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
return 0;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Convert any raw WebSocket data to Buffer for consistent handling
|
|
47
|
-
*/
|
|
48
|
-
export function toBuffer(data) {
|
|
49
|
-
if (typeof data === 'string') {
|
|
50
|
-
return Buffer.from(data, 'utf8');
|
|
51
|
-
}
|
|
52
|
-
else if (data instanceof Buffer) {
|
|
53
|
-
return data;
|
|
54
|
-
}
|
|
55
|
-
else if (data instanceof ArrayBuffer) {
|
|
56
|
-
return Buffer.from(data);
|
|
57
|
-
}
|
|
58
|
-
else if (Array.isArray(data)) {
|
|
59
|
-
// For array of buffers, concatenate them
|
|
60
|
-
return Buffer.concat(data.map(chunk => {
|
|
61
|
-
if (chunk instanceof Buffer) {
|
|
62
|
-
return chunk;
|
|
63
|
-
}
|
|
64
|
-
else if (chunk instanceof ArrayBuffer) {
|
|
65
|
-
return Buffer.from(chunk);
|
|
66
|
-
}
|
|
67
|
-
return Buffer.from(chunk);
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// For other types, try to convert to Buffer or return empty Buffer
|
|
72
|
-
try {
|
|
73
|
-
return Buffer.from(data);
|
|
74
|
-
}
|
|
75
|
-
catch (e) {
|
|
76
|
-
return Buffer.alloc(0);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Generate WebSocket accept key from client key
|
|
82
|
-
*/
|
|
83
|
-
export function generateAcceptKey(clientKey) {
|
|
84
|
-
const hash = crypto.createHash('sha1');
|
|
85
|
-
hash.update(clientKey + WEBSOCKET_MAGIC_STRING);
|
|
86
|
-
return hash.digest('base64');
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Validate WebSocket upgrade request
|
|
90
|
-
*/
|
|
91
|
-
export function isWebSocketUpgrade(headers) {
|
|
92
|
-
const upgrade = headers['upgrade'];
|
|
93
|
-
const connection = headers['connection'];
|
|
94
|
-
return upgrade?.toLowerCase() === 'websocket' &&
|
|
95
|
-
connection?.toLowerCase().includes('upgrade');
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Generate random WebSocket key for client handshake
|
|
99
|
-
*/
|
|
100
|
-
export function generateWebSocketKey() {
|
|
101
|
-
return crypto.randomBytes(16).toString('base64');
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9wcm90b2NvbHMvd2Vic29ja2V0L3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxLQUFLLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxJQUFhO0lBQzFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDN0IsdUNBQXVDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxNQUFNLEVBQUUsQ0FBQztRQUNsQyxxQkFBcUI7UUFDckIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7U0FBTSxJQUFJLElBQUksWUFBWSxXQUFXLEVBQUUsQ0FBQztRQUN2QyxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMvQiwwQ0FBMEM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ2hDLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sSUFBSSxLQUFLLFlBQVksV0FBVyxFQUFFLENBQUM7Z0JBQ3hDLE9BQU8sR0FBRyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDaEMsQ0FBQztZQUNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FB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
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
|
|
3
|
-
/**
|
|
4
|
-
* Interface for router result with additional metadata
|
|
5
|
-
*/
|
|
6
|
-
export interface RouterResult {
|
|
7
|
-
route: IRouteConfig;
|
|
8
|
-
pathMatch?: string;
|
|
9
|
-
pathParams?: Record<string, string>;
|
|
10
|
-
pathRemainder?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Logger interface for HttpRouter
|
|
14
|
-
*/
|
|
15
|
-
export interface ILogger {
|
|
16
|
-
debug?: (message: string, data?: any) => void;
|
|
17
|
-
info: (message: string, data?: any) => void;
|
|
18
|
-
warn: (message: string, data?: any) => void;
|
|
19
|
-
error: (message: string, data?: any) => void;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Unified HTTP Router for reverse proxy requests
|
|
23
|
-
*
|
|
24
|
-
* Domain matching patterns:
|
|
25
|
-
* - Exact matches: "example.com"
|
|
26
|
-
* - Wildcard subdomains: "*.example.com" (matches any subdomain of example.com)
|
|
27
|
-
* - TLD wildcards: "example.*" (matches example.com, example.org, etc.)
|
|
28
|
-
* - Complex wildcards: "*.lossless*" (matches any subdomain of any lossless domain)
|
|
29
|
-
* - Default fallback: "*" (matches any unmatched domain)
|
|
30
|
-
*
|
|
31
|
-
* Path pattern matching:
|
|
32
|
-
* - Exact path: "/api/users"
|
|
33
|
-
* - Wildcard paths: "/api/*"
|
|
34
|
-
* - Path parameters: "/users/:id/profile"
|
|
35
|
-
*/
|
|
36
|
-
export declare class HttpRouter {
|
|
37
|
-
private routes;
|
|
38
|
-
private defaultRoute?;
|
|
39
|
-
private logger;
|
|
40
|
-
constructor(routes?: IRouteConfig[], logger?: ILogger);
|
|
41
|
-
/**
|
|
42
|
-
* Sets a new set of routes
|
|
43
|
-
* @param routes Array of route configurations
|
|
44
|
-
*/
|
|
45
|
-
setRoutes(routes: IRouteConfig[]): void;
|
|
46
|
-
/**
|
|
47
|
-
* Routes a request based on hostname and path
|
|
48
|
-
* @param req The incoming HTTP request
|
|
49
|
-
* @returns The matching route or undefined if no match found
|
|
50
|
-
*/
|
|
51
|
-
routeReq(req: plugins.http.IncomingMessage): IRouteConfig | undefined;
|
|
52
|
-
/**
|
|
53
|
-
* Routes a request with detailed matching information
|
|
54
|
-
* @param req The incoming HTTP request
|
|
55
|
-
* @returns Detailed routing result including matched route and path information
|
|
56
|
-
*/
|
|
57
|
-
routeReqWithDetails(req: plugins.http.IncomingMessage): RouterResult | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* Find the best matching route for a given hostname and path
|
|
60
|
-
*/
|
|
61
|
-
private findMatchingRoute;
|
|
62
|
-
/**
|
|
63
|
-
* Gets all currently active route configurations
|
|
64
|
-
* @returns Array of all active routes
|
|
65
|
-
*/
|
|
66
|
-
getRoutes(): IRouteConfig[];
|
|
67
|
-
/**
|
|
68
|
-
* Gets all hostnames that this router is configured to handle
|
|
69
|
-
* @returns Array of unique hostnames
|
|
70
|
-
*/
|
|
71
|
-
getHostnames(): string[];
|
|
72
|
-
/**
|
|
73
|
-
* Adds a single new route configuration
|
|
74
|
-
* @param route The route configuration to add
|
|
75
|
-
*/
|
|
76
|
-
addRoute(route: IRouteConfig): void;
|
|
77
|
-
/**
|
|
78
|
-
* Removes routes by domain pattern
|
|
79
|
-
* @param domain The domain pattern to remove routes for
|
|
80
|
-
* @returns Boolean indicating whether any routes were removed
|
|
81
|
-
*/
|
|
82
|
-
removeRoutesByDomain(domain: string): boolean;
|
|
83
|
-
/**
|
|
84
|
-
* Remove a specific route by reference
|
|
85
|
-
* @param route The route to remove
|
|
86
|
-
* @returns Boolean indicating if the route was found and removed
|
|
87
|
-
*/
|
|
88
|
-
removeRoute(route: IRouteConfig): boolean;
|
|
89
|
-
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../../plugins.js';
|
|
2
|
-
import { DomainMatcher, PathMatcher } from '../../core/routing/matchers/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Unified HTTP Router for reverse proxy requests
|
|
5
|
-
*
|
|
6
|
-
* Domain matching patterns:
|
|
7
|
-
* - Exact matches: "example.com"
|
|
8
|
-
* - Wildcard subdomains: "*.example.com" (matches any subdomain of example.com)
|
|
9
|
-
* - TLD wildcards: "example.*" (matches example.com, example.org, etc.)
|
|
10
|
-
* - Complex wildcards: "*.lossless*" (matches any subdomain of any lossless domain)
|
|
11
|
-
* - Default fallback: "*" (matches any unmatched domain)
|
|
12
|
-
*
|
|
13
|
-
* Path pattern matching:
|
|
14
|
-
* - Exact path: "/api/users"
|
|
15
|
-
* - Wildcard paths: "/api/*"
|
|
16
|
-
* - Path parameters: "/users/:id/profile"
|
|
17
|
-
*/
|
|
18
|
-
export class HttpRouter {
|
|
19
|
-
constructor(routes, logger) {
|
|
20
|
-
// Store routes sorted by priority
|
|
21
|
-
this.routes = [];
|
|
22
|
-
this.logger = logger || {
|
|
23
|
-
error: console.error.bind(console),
|
|
24
|
-
warn: console.warn.bind(console),
|
|
25
|
-
info: console.info.bind(console),
|
|
26
|
-
debug: console.debug?.bind(console)
|
|
27
|
-
};
|
|
28
|
-
if (routes) {
|
|
29
|
-
this.setRoutes(routes);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Sets a new set of routes
|
|
34
|
-
* @param routes Array of route configurations
|
|
35
|
-
*/
|
|
36
|
-
setRoutes(routes) {
|
|
37
|
-
this.routes = [...routes];
|
|
38
|
-
// Sort routes by priority (higher priority first)
|
|
39
|
-
this.routes.sort((a, b) => {
|
|
40
|
-
const priorityA = a.priority ?? 0;
|
|
41
|
-
const priorityB = b.priority ?? 0;
|
|
42
|
-
return priorityB - priorityA;
|
|
43
|
-
});
|
|
44
|
-
// Find default route if any (route with "*" as domain)
|
|
45
|
-
this.defaultRoute = this.routes.find(route => {
|
|
46
|
-
const domains = Array.isArray(route.match.domains)
|
|
47
|
-
? route.match.domains
|
|
48
|
-
: route.match.domains ? [route.match.domains] : [];
|
|
49
|
-
return domains.includes('*');
|
|
50
|
-
});
|
|
51
|
-
const uniqueDomains = this.getHostnames();
|
|
52
|
-
this.logger.info(`HttpRouter initialized with ${this.routes.length} routes (${uniqueDomains.length} unique hosts)`);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Routes a request based on hostname and path
|
|
56
|
-
* @param req The incoming HTTP request
|
|
57
|
-
* @returns The matching route or undefined if no match found
|
|
58
|
-
*/
|
|
59
|
-
routeReq(req) {
|
|
60
|
-
const result = this.routeReqWithDetails(req);
|
|
61
|
-
return result ? result.route : undefined;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Routes a request with detailed matching information
|
|
65
|
-
* @param req The incoming HTTP request
|
|
66
|
-
* @returns Detailed routing result including matched route and path information
|
|
67
|
-
*/
|
|
68
|
-
routeReqWithDetails(req) {
|
|
69
|
-
// Extract and validate host header
|
|
70
|
-
const originalHost = req.headers.host;
|
|
71
|
-
if (!originalHost) {
|
|
72
|
-
this.logger.error('No host header found in request');
|
|
73
|
-
return this.defaultRoute ? { route: this.defaultRoute } : undefined;
|
|
74
|
-
}
|
|
75
|
-
// Parse URL for path matching
|
|
76
|
-
const parsedUrl = plugins.url.parse(req.url || '/');
|
|
77
|
-
const urlPath = parsedUrl.pathname || '/';
|
|
78
|
-
// Extract hostname without port
|
|
79
|
-
const hostWithoutPort = originalHost.split(':')[0].toLowerCase();
|
|
80
|
-
// Find matching route
|
|
81
|
-
const matchingRoute = this.findMatchingRoute(hostWithoutPort, urlPath);
|
|
82
|
-
if (matchingRoute) {
|
|
83
|
-
return matchingRoute;
|
|
84
|
-
}
|
|
85
|
-
// Fall back to default route if available
|
|
86
|
-
if (this.defaultRoute) {
|
|
87
|
-
this.logger.warn(`No specific route found for host: ${hostWithoutPort}, using default`);
|
|
88
|
-
return { route: this.defaultRoute };
|
|
89
|
-
}
|
|
90
|
-
this.logger.error(`No route found for host: ${hostWithoutPort}`);
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Find the best matching route for a given hostname and path
|
|
95
|
-
*/
|
|
96
|
-
findMatchingRoute(hostname, path) {
|
|
97
|
-
// Try each route in priority order
|
|
98
|
-
for (const route of this.routes) {
|
|
99
|
-
// Skip disabled routes
|
|
100
|
-
if (route.enabled === false) {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
// Check domain match
|
|
104
|
-
if (route.match.domains) {
|
|
105
|
-
const domains = Array.isArray(route.match.domains)
|
|
106
|
-
? route.match.domains
|
|
107
|
-
: [route.match.domains];
|
|
108
|
-
// Check if any domain pattern matches
|
|
109
|
-
const domainMatches = domains.some(domain => DomainMatcher.match(domain, hostname));
|
|
110
|
-
if (!domainMatches) {
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Check path match if specified
|
|
115
|
-
if (route.match.path) {
|
|
116
|
-
const pathResult = PathMatcher.match(route.match.path, path);
|
|
117
|
-
if (pathResult.matches) {
|
|
118
|
-
return {
|
|
119
|
-
route,
|
|
120
|
-
pathMatch: pathResult.pathMatch || path,
|
|
121
|
-
pathParams: pathResult.params,
|
|
122
|
-
pathRemainder: pathResult.pathRemainder
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
// No path specified, so domain match is sufficient
|
|
128
|
-
return { route };
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return undefined;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Gets all currently active route configurations
|
|
135
|
-
* @returns Array of all active routes
|
|
136
|
-
*/
|
|
137
|
-
getRoutes() {
|
|
138
|
-
return [...this.routes];
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Gets all hostnames that this router is configured to handle
|
|
142
|
-
* @returns Array of unique hostnames
|
|
143
|
-
*/
|
|
144
|
-
getHostnames() {
|
|
145
|
-
const hostnames = new Set();
|
|
146
|
-
for (const route of this.routes) {
|
|
147
|
-
if (!route.match.domains)
|
|
148
|
-
continue;
|
|
149
|
-
const domains = Array.isArray(route.match.domains)
|
|
150
|
-
? route.match.domains
|
|
151
|
-
: [route.match.domains];
|
|
152
|
-
for (const domain of domains) {
|
|
153
|
-
if (domain !== '*') {
|
|
154
|
-
hostnames.add(domain.toLowerCase());
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return Array.from(hostnames);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Adds a single new route configuration
|
|
162
|
-
* @param route The route configuration to add
|
|
163
|
-
*/
|
|
164
|
-
addRoute(route) {
|
|
165
|
-
this.routes.push(route);
|
|
166
|
-
// Re-sort routes by priority
|
|
167
|
-
this.routes.sort((a, b) => {
|
|
168
|
-
const priorityA = a.priority ?? 0;
|
|
169
|
-
const priorityB = b.priority ?? 0;
|
|
170
|
-
return priorityB - priorityA;
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Removes routes by domain pattern
|
|
175
|
-
* @param domain The domain pattern to remove routes for
|
|
176
|
-
* @returns Boolean indicating whether any routes were removed
|
|
177
|
-
*/
|
|
178
|
-
removeRoutesByDomain(domain) {
|
|
179
|
-
const initialCount = this.routes.length;
|
|
180
|
-
// Filter out routes that match the domain
|
|
181
|
-
this.routes = this.routes.filter(route => {
|
|
182
|
-
if (!route.match.domains)
|
|
183
|
-
return true;
|
|
184
|
-
const domains = Array.isArray(route.match.domains)
|
|
185
|
-
? route.match.domains
|
|
186
|
-
: [route.match.domains];
|
|
187
|
-
return !domains.includes(domain);
|
|
188
|
-
});
|
|
189
|
-
return this.routes.length !== initialCount;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Remove a specific route by reference
|
|
193
|
-
* @param route The route to remove
|
|
194
|
-
* @returns Boolean indicating if the route was found and removed
|
|
195
|
-
*/
|
|
196
|
-
removeRoute(route) {
|
|
197
|
-
const index = this.routes.indexOf(route);
|
|
198
|
-
if (index !== -1) {
|
|
199
|
-
this.routes.splice(index, 1);
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1yb3V0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9yb3V0aW5nL3JvdXRlci9odHRwLXJvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUF1QmxGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFRckIsWUFDRSxNQUF1QixFQUN2QixNQUFnQjtRQVRsQixrQ0FBa0M7UUFDMUIsV0FBTSxHQUFtQixFQUFFLENBQUM7UUFVbEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLElBQUk7WUFDdEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2hDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDaEMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztTQUNwQyxDQUFDO1FBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxTQUFTLENBQUMsTUFBc0I7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFFMUIsa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FB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
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP routing
|
|
3
|
-
*/
|
|
4
|
-
// Export the unified HttpRouter
|
|
5
|
-
export { HttpRouter } from './http-router.js';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9yb3V0aW5nL3JvdXRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGdDQUFnQztBQUNoQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUMifQ==
|
package/dist_ts/tls/index.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TLS module for smartproxy
|
|
3
|
-
* Re-exports protocol components and provides smartproxy-specific functionality
|
|
4
|
-
*/
|
|
5
|
-
export * from '../protocols/tls/index.js';
|
|
6
|
-
export * from './sni/sni-handler.js';
|
|
7
|
-
import { SniHandler } from './sni/sni-handler.js';
|
|
8
|
-
import { SniExtraction } from '../protocols/tls/sni/sni-extraction.js';
|
|
9
|
-
import { ClientHelloParser } from '../protocols/tls/sni/client-hello-parser.js';
|
|
10
|
-
export declare const SNI: {
|
|
11
|
-
Handler: typeof SniHandler;
|
|
12
|
-
Extraction: typeof SniExtraction;
|
|
13
|
-
Parser: typeof ClientHelloParser;
|
|
14
|
-
extractSNI: typeof SniHandler.extractSNI;
|
|
15
|
-
processTlsPacket: typeof SniHandler.processTlsPacket;
|
|
16
|
-
};
|