@push.rocks/smartproxy 25.17.10 → 26.0.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.
Files changed (179) hide show
  1. package/changelog.md +8 -0
  2. package/dist_rust/rustproxy_linux_amd64 +0 -0
  3. package/dist_rust/rustproxy_linux_arm64 +0 -0
  4. package/dist_ts/00_commitinfo_data.js +2 -2
  5. package/dist_ts/core/index.d.ts +0 -1
  6. package/dist_ts/core/index.js +1 -2
  7. package/dist_ts/core/models/index.d.ts +0 -1
  8. package/dist_ts/core/models/index.js +1 -2
  9. package/dist_ts/core/utils/index.d.ts +0 -12
  10. package/dist_ts/core/utils/index.js +1 -13
  11. package/dist_ts/index.d.ts +0 -3
  12. package/dist_ts/index.js +2 -7
  13. package/dist_ts/protocols/http/index.d.ts +0 -1
  14. package/dist_ts/protocols/http/index.js +1 -2
  15. package/dist_ts/protocols/index.d.ts +0 -7
  16. package/dist_ts/protocols/index.js +1 -8
  17. package/dist_ts/proxies/smart-proxy/socket-handler-server.js +6 -1
  18. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +0 -7
  19. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +50 -51
  20. package/dist_ts/routing/index.d.ts +0 -1
  21. package/dist_ts/routing/index.js +1 -3
  22. package/package.json +1 -1
  23. package/ts/00_commitinfo_data.ts +1 -1
  24. package/ts/core/index.ts +0 -1
  25. package/ts/core/models/index.ts +0 -1
  26. package/ts/core/utils/index.ts +0 -12
  27. package/ts/index.ts +1 -7
  28. package/ts/protocols/http/index.ts +1 -2
  29. package/ts/protocols/index.ts +0 -7
  30. package/ts/proxies/smart-proxy/socket-handler-server.ts +6 -0
  31. package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +60 -59
  32. package/ts/routing/index.ts +0 -3
  33. package/dist_ts/core/events/index.d.ts +0 -4
  34. package/dist_ts/core/events/index.js +0 -5
  35. package/dist_ts/core/models/socket-augmentation.d.ts +0 -15
  36. package/dist_ts/core/models/socket-augmentation.js +0 -18
  37. package/dist_ts/core/utils/async-utils.d.ts +0 -81
  38. package/dist_ts/core/utils/async-utils.js +0 -216
  39. package/dist_ts/core/utils/binary-heap.d.ts +0 -73
  40. package/dist_ts/core/utils/binary-heap.js +0 -193
  41. package/dist_ts/core/utils/enhanced-connection-pool.d.ts +0 -110
  42. package/dist_ts/core/utils/enhanced-connection-pool.js +0 -325
  43. package/dist_ts/core/utils/fs-utils.d.ts +0 -144
  44. package/dist_ts/core/utils/fs-utils.js +0 -252
  45. package/dist_ts/core/utils/ip-utils.d.ts +0 -69
  46. package/dist_ts/core/utils/ip-utils.js +0 -270
  47. package/dist_ts/core/utils/lifecycle-component.d.ts +0 -59
  48. package/dist_ts/core/utils/lifecycle-component.js +0 -211
  49. package/dist_ts/core/utils/log-deduplicator.d.ts +0 -39
  50. package/dist_ts/core/utils/log-deduplicator.js +0 -305
  51. package/dist_ts/core/utils/security-utils.d.ts +0 -111
  52. package/dist_ts/core/utils/security-utils.js +0 -212
  53. package/dist_ts/core/utils/shared-security-manager.d.ts +0 -128
  54. package/dist_ts/core/utils/shared-security-manager.js +0 -362
  55. package/dist_ts/core/utils/socket-utils.d.ts +0 -63
  56. package/dist_ts/core/utils/socket-utils.js +0 -249
  57. package/dist_ts/core/utils/template-utils.d.ts +0 -37
  58. package/dist_ts/core/utils/template-utils.js +0 -104
  59. package/dist_ts/core/utils/validation-utils.d.ts +0 -61
  60. package/dist_ts/core/utils/validation-utils.js +0 -149
  61. package/dist_ts/core/utils/websocket-utils.d.ts +0 -22
  62. package/dist_ts/core/utils/websocket-utils.js +0 -30
  63. package/dist_ts/detection/detectors/http-detector.d.ts +0 -33
  64. package/dist_ts/detection/detectors/http-detector.js +0 -101
  65. package/dist_ts/detection/detectors/quick-detector.d.ts +0 -28
  66. package/dist_ts/detection/detectors/quick-detector.js +0 -131
  67. package/dist_ts/detection/detectors/routing-extractor.d.ts +0 -28
  68. package/dist_ts/detection/detectors/routing-extractor.js +0 -122
  69. package/dist_ts/detection/detectors/tls-detector.d.ts +0 -47
  70. package/dist_ts/detection/detectors/tls-detector.js +0 -183
  71. package/dist_ts/detection/index.d.ts +0 -17
  72. package/dist_ts/detection/index.js +0 -22
  73. package/dist_ts/detection/models/detection-types.d.ts +0 -87
  74. package/dist_ts/detection/models/detection-types.js +0 -5
  75. package/dist_ts/detection/models/interfaces.d.ts +0 -97
  76. package/dist_ts/detection/models/interfaces.js +0 -5
  77. package/dist_ts/detection/protocol-detector.d.ts +0 -79
  78. package/dist_ts/detection/protocol-detector.js +0 -253
  79. package/dist_ts/detection/utils/buffer-utils.d.ts +0 -61
  80. package/dist_ts/detection/utils/buffer-utils.js +0 -127
  81. package/dist_ts/detection/utils/fragment-manager.d.ts +0 -31
  82. package/dist_ts/detection/utils/fragment-manager.js +0 -53
  83. package/dist_ts/detection/utils/parser-utils.d.ts +0 -42
  84. package/dist_ts/detection/utils/parser-utils.js +0 -63
  85. package/dist_ts/protocols/common/fragment-handler.d.ts +0 -73
  86. package/dist_ts/protocols/common/fragment-handler.js +0 -121
  87. package/dist_ts/protocols/common/index.d.ts +0 -7
  88. package/dist_ts/protocols/common/index.js +0 -8
  89. package/dist_ts/protocols/common/types.d.ts +0 -68
  90. package/dist_ts/protocols/common/types.js +0 -7
  91. package/dist_ts/protocols/http/parser.d.ts +0 -58
  92. package/dist_ts/protocols/http/parser.js +0 -184
  93. package/dist_ts/protocols/proxy/index.d.ts +0 -5
  94. package/dist_ts/protocols/proxy/index.js +0 -6
  95. package/dist_ts/protocols/proxy/types.d.ts +0 -47
  96. package/dist_ts/protocols/proxy/types.js +0 -6
  97. package/dist_ts/protocols/tls/alerts/index.d.ts +0 -4
  98. package/dist_ts/protocols/tls/alerts/index.js +0 -5
  99. package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +0 -150
  100. package/dist_ts/protocols/tls/alerts/tls-alert.js +0 -226
  101. package/dist_ts/protocols/tls/index.d.ts +0 -12
  102. package/dist_ts/protocols/tls/index.js +0 -27
  103. package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +0 -100
  104. package/dist_ts/protocols/tls/sni/client-hello-parser.js +0 -463
  105. package/dist_ts/protocols/tls/sni/index.d.ts +0 -5
  106. package/dist_ts/protocols/tls/sni/index.js +0 -6
  107. package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +0 -58
  108. package/dist_ts/protocols/tls/sni/sni-extraction.js +0 -275
  109. package/dist_ts/protocols/tls/utils/index.d.ts +0 -4
  110. package/dist_ts/protocols/tls/utils/index.js +0 -5
  111. package/dist_ts/protocols/tls/utils/tls-utils.d.ts +0 -158
  112. package/dist_ts/protocols/tls/utils/tls-utils.js +0 -187
  113. package/dist_ts/protocols/websocket/constants.d.ts +0 -55
  114. package/dist_ts/protocols/websocket/constants.js +0 -58
  115. package/dist_ts/protocols/websocket/index.d.ts +0 -7
  116. package/dist_ts/protocols/websocket/index.js +0 -8
  117. package/dist_ts/protocols/websocket/types.d.ts +0 -47
  118. package/dist_ts/protocols/websocket/types.js +0 -5
  119. package/dist_ts/protocols/websocket/utils.d.ts +0 -25
  120. package/dist_ts/protocols/websocket/utils.js +0 -103
  121. package/dist_ts/routing/router/http-router.d.ts +0 -89
  122. package/dist_ts/routing/router/http-router.js +0 -205
  123. package/dist_ts/routing/router/index.d.ts +0 -5
  124. package/dist_ts/routing/router/index.js +0 -6
  125. package/dist_ts/tls/index.d.ts +0 -16
  126. package/dist_ts/tls/index.js +0 -24
  127. package/dist_ts/tls/sni/index.d.ts +0 -4
  128. package/dist_ts/tls/sni/index.js +0 -5
  129. package/dist_ts/tls/sni/sni-handler.d.ts +0 -154
  130. package/dist_ts/tls/sni/sni-handler.js +0 -191
  131. package/ts/core/events/index.ts +0 -3
  132. package/ts/core/models/socket-augmentation.ts +0 -38
  133. package/ts/core/utils/async-utils.ts +0 -275
  134. package/ts/core/utils/binary-heap.ts +0 -225
  135. package/ts/core/utils/enhanced-connection-pool.ts +0 -425
  136. package/ts/core/utils/fs-utils.ts +0 -270
  137. package/ts/core/utils/ip-utils.ts +0 -303
  138. package/ts/core/utils/lifecycle-component.ts +0 -251
  139. package/ts/core/utils/log-deduplicator.ts +0 -370
  140. package/ts/core/utils/security-utils.ts +0 -305
  141. package/ts/core/utils/shared-security-manager.ts +0 -470
  142. package/ts/core/utils/socket-utils.ts +0 -322
  143. package/ts/core/utils/template-utils.ts +0 -124
  144. package/ts/core/utils/validation-utils.ts +0 -177
  145. package/ts/core/utils/websocket-utils.ts +0 -33
  146. package/ts/detection/detectors/http-detector.ts +0 -127
  147. package/ts/detection/detectors/quick-detector.ts +0 -148
  148. package/ts/detection/detectors/routing-extractor.ts +0 -147
  149. package/ts/detection/detectors/tls-detector.ts +0 -223
  150. package/ts/detection/index.ts +0 -25
  151. package/ts/detection/models/detection-types.ts +0 -102
  152. package/ts/detection/models/interfaces.ts +0 -115
  153. package/ts/detection/protocol-detector.ts +0 -319
  154. package/ts/detection/utils/buffer-utils.ts +0 -141
  155. package/ts/detection/utils/fragment-manager.ts +0 -64
  156. package/ts/detection/utils/parser-utils.ts +0 -77
  157. package/ts/protocols/common/fragment-handler.ts +0 -167
  158. package/ts/protocols/common/index.ts +0 -8
  159. package/ts/protocols/common/types.ts +0 -76
  160. package/ts/protocols/http/parser.ts +0 -219
  161. package/ts/protocols/proxy/index.ts +0 -6
  162. package/ts/protocols/proxy/types.ts +0 -53
  163. package/ts/protocols/tls/alerts/index.ts +0 -3
  164. package/ts/protocols/tls/alerts/tls-alert.ts +0 -259
  165. package/ts/protocols/tls/index.ts +0 -37
  166. package/ts/protocols/tls/sni/client-hello-parser.ts +0 -629
  167. package/ts/protocols/tls/sni/index.ts +0 -6
  168. package/ts/protocols/tls/sni/sni-extraction.ts +0 -353
  169. package/ts/protocols/tls/utils/index.ts +0 -3
  170. package/ts/protocols/tls/utils/tls-utils.ts +0 -201
  171. package/ts/protocols/websocket/constants.ts +0 -60
  172. package/ts/protocols/websocket/index.ts +0 -8
  173. package/ts/protocols/websocket/types.ts +0 -53
  174. package/ts/protocols/websocket/utils.ts +0 -98
  175. package/ts/routing/router/http-router.ts +0 -266
  176. package/ts/routing/router/index.ts +0 -7
  177. package/ts/tls/index.ts +0 -29
  178. package/ts/tls/sni/index.ts +0 -3
  179. 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,7 +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';
@@ -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,5 +0,0 @@
1
- /**
2
- * HTTP routing
3
- */
4
- export { HttpRouter } from './http-router.js';
5
- export type { RouterResult, ILogger } from './http-router.js';
@@ -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==
@@ -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
- };