@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.
Files changed (184) hide show
  1. package/changelog.md +15 -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/models/metrics-types.d.ts +20 -0
  18. package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.d.ts +2 -1
  19. package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.js +4 -1
  20. package/dist_ts/proxies/smart-proxy/socket-handler-server.js +6 -1
  21. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.d.ts +0 -7
  22. package/dist_ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.js +50 -51
  23. package/dist_ts/routing/index.d.ts +0 -1
  24. package/dist_ts/routing/index.js +1 -3
  25. package/package.json +1 -1
  26. package/ts/00_commitinfo_data.ts +1 -1
  27. package/ts/core/index.ts +0 -1
  28. package/ts/core/models/index.ts +0 -1
  29. package/ts/core/utils/index.ts +0 -12
  30. package/ts/index.ts +1 -7
  31. package/ts/protocols/http/index.ts +1 -2
  32. package/ts/protocols/index.ts +0 -7
  33. package/ts/proxies/smart-proxy/models/metrics-types.ts +21 -0
  34. package/ts/proxies/smart-proxy/rust-metrics-adapter.ts +4 -1
  35. package/ts/proxies/smart-proxy/socket-handler-server.ts +6 -0
  36. package/ts/proxies/smart-proxy/utils/route-helpers/socket-handlers.ts +60 -59
  37. package/ts/routing/index.ts +0 -3
  38. package/dist_ts/core/events/index.d.ts +0 -4
  39. package/dist_ts/core/events/index.js +0 -5
  40. package/dist_ts/core/models/socket-augmentation.d.ts +0 -15
  41. package/dist_ts/core/models/socket-augmentation.js +0 -18
  42. package/dist_ts/core/utils/async-utils.d.ts +0 -81
  43. package/dist_ts/core/utils/async-utils.js +0 -216
  44. package/dist_ts/core/utils/binary-heap.d.ts +0 -73
  45. package/dist_ts/core/utils/binary-heap.js +0 -193
  46. package/dist_ts/core/utils/enhanced-connection-pool.d.ts +0 -110
  47. package/dist_ts/core/utils/enhanced-connection-pool.js +0 -325
  48. package/dist_ts/core/utils/fs-utils.d.ts +0 -144
  49. package/dist_ts/core/utils/fs-utils.js +0 -252
  50. package/dist_ts/core/utils/ip-utils.d.ts +0 -69
  51. package/dist_ts/core/utils/ip-utils.js +0 -270
  52. package/dist_ts/core/utils/lifecycle-component.d.ts +0 -59
  53. package/dist_ts/core/utils/lifecycle-component.js +0 -211
  54. package/dist_ts/core/utils/log-deduplicator.d.ts +0 -39
  55. package/dist_ts/core/utils/log-deduplicator.js +0 -305
  56. package/dist_ts/core/utils/security-utils.d.ts +0 -111
  57. package/dist_ts/core/utils/security-utils.js +0 -212
  58. package/dist_ts/core/utils/shared-security-manager.d.ts +0 -128
  59. package/dist_ts/core/utils/shared-security-manager.js +0 -362
  60. package/dist_ts/core/utils/socket-utils.d.ts +0 -63
  61. package/dist_ts/core/utils/socket-utils.js +0 -249
  62. package/dist_ts/core/utils/template-utils.d.ts +0 -37
  63. package/dist_ts/core/utils/template-utils.js +0 -104
  64. package/dist_ts/core/utils/validation-utils.d.ts +0 -61
  65. package/dist_ts/core/utils/validation-utils.js +0 -149
  66. package/dist_ts/core/utils/websocket-utils.d.ts +0 -22
  67. package/dist_ts/core/utils/websocket-utils.js +0 -30
  68. package/dist_ts/detection/detectors/http-detector.d.ts +0 -33
  69. package/dist_ts/detection/detectors/http-detector.js +0 -101
  70. package/dist_ts/detection/detectors/quick-detector.d.ts +0 -28
  71. package/dist_ts/detection/detectors/quick-detector.js +0 -131
  72. package/dist_ts/detection/detectors/routing-extractor.d.ts +0 -28
  73. package/dist_ts/detection/detectors/routing-extractor.js +0 -122
  74. package/dist_ts/detection/detectors/tls-detector.d.ts +0 -47
  75. package/dist_ts/detection/detectors/tls-detector.js +0 -183
  76. package/dist_ts/detection/index.d.ts +0 -17
  77. package/dist_ts/detection/index.js +0 -22
  78. package/dist_ts/detection/models/detection-types.d.ts +0 -87
  79. package/dist_ts/detection/models/detection-types.js +0 -5
  80. package/dist_ts/detection/models/interfaces.d.ts +0 -97
  81. package/dist_ts/detection/models/interfaces.js +0 -5
  82. package/dist_ts/detection/protocol-detector.d.ts +0 -79
  83. package/dist_ts/detection/protocol-detector.js +0 -253
  84. package/dist_ts/detection/utils/buffer-utils.d.ts +0 -61
  85. package/dist_ts/detection/utils/buffer-utils.js +0 -127
  86. package/dist_ts/detection/utils/fragment-manager.d.ts +0 -31
  87. package/dist_ts/detection/utils/fragment-manager.js +0 -53
  88. package/dist_ts/detection/utils/parser-utils.d.ts +0 -42
  89. package/dist_ts/detection/utils/parser-utils.js +0 -63
  90. package/dist_ts/protocols/common/fragment-handler.d.ts +0 -73
  91. package/dist_ts/protocols/common/fragment-handler.js +0 -121
  92. package/dist_ts/protocols/common/index.d.ts +0 -7
  93. package/dist_ts/protocols/common/index.js +0 -8
  94. package/dist_ts/protocols/common/types.d.ts +0 -68
  95. package/dist_ts/protocols/common/types.js +0 -7
  96. package/dist_ts/protocols/http/parser.d.ts +0 -58
  97. package/dist_ts/protocols/http/parser.js +0 -184
  98. package/dist_ts/protocols/proxy/index.d.ts +0 -5
  99. package/dist_ts/protocols/proxy/index.js +0 -6
  100. package/dist_ts/protocols/proxy/types.d.ts +0 -47
  101. package/dist_ts/protocols/proxy/types.js +0 -6
  102. package/dist_ts/protocols/tls/alerts/index.d.ts +0 -4
  103. package/dist_ts/protocols/tls/alerts/index.js +0 -5
  104. package/dist_ts/protocols/tls/alerts/tls-alert.d.ts +0 -150
  105. package/dist_ts/protocols/tls/alerts/tls-alert.js +0 -226
  106. package/dist_ts/protocols/tls/index.d.ts +0 -12
  107. package/dist_ts/protocols/tls/index.js +0 -27
  108. package/dist_ts/protocols/tls/sni/client-hello-parser.d.ts +0 -100
  109. package/dist_ts/protocols/tls/sni/client-hello-parser.js +0 -463
  110. package/dist_ts/protocols/tls/sni/index.d.ts +0 -5
  111. package/dist_ts/protocols/tls/sni/index.js +0 -6
  112. package/dist_ts/protocols/tls/sni/sni-extraction.d.ts +0 -58
  113. package/dist_ts/protocols/tls/sni/sni-extraction.js +0 -275
  114. package/dist_ts/protocols/tls/utils/index.d.ts +0 -4
  115. package/dist_ts/protocols/tls/utils/index.js +0 -5
  116. package/dist_ts/protocols/tls/utils/tls-utils.d.ts +0 -158
  117. package/dist_ts/protocols/tls/utils/tls-utils.js +0 -187
  118. package/dist_ts/protocols/websocket/constants.d.ts +0 -55
  119. package/dist_ts/protocols/websocket/constants.js +0 -58
  120. package/dist_ts/protocols/websocket/index.d.ts +0 -7
  121. package/dist_ts/protocols/websocket/index.js +0 -8
  122. package/dist_ts/protocols/websocket/types.d.ts +0 -47
  123. package/dist_ts/protocols/websocket/types.js +0 -5
  124. package/dist_ts/protocols/websocket/utils.d.ts +0 -25
  125. package/dist_ts/protocols/websocket/utils.js +0 -103
  126. package/dist_ts/routing/router/http-router.d.ts +0 -89
  127. package/dist_ts/routing/router/http-router.js +0 -205
  128. package/dist_ts/routing/router/index.d.ts +0 -5
  129. package/dist_ts/routing/router/index.js +0 -6
  130. package/dist_ts/tls/index.d.ts +0 -16
  131. package/dist_ts/tls/index.js +0 -24
  132. package/dist_ts/tls/sni/index.d.ts +0 -4
  133. package/dist_ts/tls/sni/index.js +0 -5
  134. package/dist_ts/tls/sni/sni-handler.d.ts +0 -154
  135. package/dist_ts/tls/sni/sni-handler.js +0 -191
  136. package/ts/core/events/index.ts +0 -3
  137. package/ts/core/models/socket-augmentation.ts +0 -38
  138. package/ts/core/utils/async-utils.ts +0 -275
  139. package/ts/core/utils/binary-heap.ts +0 -225
  140. package/ts/core/utils/enhanced-connection-pool.ts +0 -425
  141. package/ts/core/utils/fs-utils.ts +0 -270
  142. package/ts/core/utils/ip-utils.ts +0 -303
  143. package/ts/core/utils/lifecycle-component.ts +0 -251
  144. package/ts/core/utils/log-deduplicator.ts +0 -370
  145. package/ts/core/utils/security-utils.ts +0 -305
  146. package/ts/core/utils/shared-security-manager.ts +0 -470
  147. package/ts/core/utils/socket-utils.ts +0 -322
  148. package/ts/core/utils/template-utils.ts +0 -124
  149. package/ts/core/utils/validation-utils.ts +0 -177
  150. package/ts/core/utils/websocket-utils.ts +0 -33
  151. package/ts/detection/detectors/http-detector.ts +0 -127
  152. package/ts/detection/detectors/quick-detector.ts +0 -148
  153. package/ts/detection/detectors/routing-extractor.ts +0 -147
  154. package/ts/detection/detectors/tls-detector.ts +0 -223
  155. package/ts/detection/index.ts +0 -25
  156. package/ts/detection/models/detection-types.ts +0 -102
  157. package/ts/detection/models/interfaces.ts +0 -115
  158. package/ts/detection/protocol-detector.ts +0 -319
  159. package/ts/detection/utils/buffer-utils.ts +0 -141
  160. package/ts/detection/utils/fragment-manager.ts +0 -64
  161. package/ts/detection/utils/parser-utils.ts +0 -77
  162. package/ts/protocols/common/fragment-handler.ts +0 -167
  163. package/ts/protocols/common/index.ts +0 -8
  164. package/ts/protocols/common/types.ts +0 -76
  165. package/ts/protocols/http/parser.ts +0 -219
  166. package/ts/protocols/proxy/index.ts +0 -6
  167. package/ts/protocols/proxy/types.ts +0 -53
  168. package/ts/protocols/tls/alerts/index.ts +0 -3
  169. package/ts/protocols/tls/alerts/tls-alert.ts +0 -259
  170. package/ts/protocols/tls/index.ts +0 -37
  171. package/ts/protocols/tls/sni/client-hello-parser.ts +0 -629
  172. package/ts/protocols/tls/sni/index.ts +0 -6
  173. package/ts/protocols/tls/sni/sni-extraction.ts +0 -353
  174. package/ts/protocols/tls/utils/index.ts +0 -3
  175. package/ts/protocols/tls/utils/tls-utils.ts +0 -201
  176. package/ts/protocols/websocket/constants.ts +0 -60
  177. package/ts/protocols/websocket/index.ts +0 -8
  178. package/ts/protocols/websocket/types.ts +0 -53
  179. package/ts/protocols/websocket/utils.ts +0 -98
  180. package/ts/routing/router/http-router.ts +0 -266
  181. package/ts/routing/router/index.ts +0 -7
  182. package/ts/tls/index.ts +0 -29
  183. package/ts/tls/sni/index.ts +0 -3
  184. package/ts/tls/sni/sni-handler.ts +0 -264
@@ -1,30 +0,0 @@
1
- /**
2
- * WebSocket utility functions
3
- *
4
- * This module provides smartproxy-specific WebSocket utilities
5
- * and re-exports protocol utilities from the protocols module
6
- */
7
- // Import and re-export from protocols
8
- import { getMessageSize as protocolGetMessageSize, toBuffer as protocolToBuffer } from '../../protocols/websocket/index.js';
9
- /**
10
- * Get the length of a WebSocket message regardless of its type
11
- * (handles all possible WebSocket message data types)
12
- *
13
- * @param data - The data message from WebSocket (could be any RawData type)
14
- * @returns The length of the data in bytes
15
- */
16
- export function getMessageSize(data) {
17
- // Delegate to protocol implementation
18
- return protocolGetMessageSize(data);
19
- }
20
- /**
21
- * Convert any raw WebSocket data to Buffer for consistent handling
22
- *
23
- * @param data - The data message from WebSocket (could be any RawData type)
24
- * @returns A Buffer containing the data
25
- */
26
- export function toBuffer(data) {
27
- // Delegate to protocol implementation
28
- return protocolToBuffer(data);
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY29yZS91dGlscy93ZWJzb2NrZXQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLGNBQWMsSUFBSSxzQkFBc0IsRUFBRSxRQUFRLElBQUksZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUc1SDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLElBQTBEO0lBQ3ZGLHNDQUFzQztJQUN0QyxPQUFPLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsSUFBMEQ7SUFDakYsc0NBQXNDO0lBQ3RDLE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQyJ9
@@ -1,33 +0,0 @@
1
- /**
2
- * HTTP Protocol Detector
3
- *
4
- * Simplified HTTP detection using the new architecture
5
- */
6
- import type { IProtocolDetector } from '../models/interfaces.js';
7
- import type { IDetectionResult, IDetectionOptions } from '../models/detection-types.js';
8
- import type { IConnectionContext } from '../../protocols/common/types.js';
9
- import { DetectionFragmentManager } from '../utils/fragment-manager.js';
10
- /**
11
- * Simplified HTTP detector
12
- */
13
- export declare class HttpDetector implements IProtocolDetector {
14
- private quickDetector;
15
- private fragmentManager;
16
- constructor(fragmentManager?: DetectionFragmentManager);
17
- /**
18
- * Check if buffer can be handled by this detector
19
- */
20
- canHandle(buffer: Buffer): boolean;
21
- /**
22
- * Get minimum bytes needed for detection
23
- */
24
- getMinimumBytes(): number;
25
- /**
26
- * Detect HTTP protocol from buffer
27
- */
28
- detect(buffer: Buffer, options?: IDetectionOptions): IDetectionResult | null;
29
- /**
30
- * Handle fragmented detection
31
- */
32
- detectWithContext(buffer: Buffer, context: IConnectionContext, options?: IDetectionOptions): IDetectionResult | null;
33
- }
@@ -1,101 +0,0 @@
1
- /**
2
- * HTTP Protocol Detector
3
- *
4
- * Simplified HTTP 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
- import { HttpParser } from '../../protocols/http/parser.js';
10
- /**
11
- * Simplified HTTP detector
12
- */
13
- export class HttpDetector {
14
- constructor(fragmentManager) {
15
- this.quickDetector = new QuickProtocolDetector();
16
- this.fragmentManager = fragmentManager || new DetectionFragmentManager();
17
- }
18
- /**
19
- * Check if buffer can be handled by this detector
20
- */
21
- canHandle(buffer) {
22
- const result = this.quickDetector.quickDetect(buffer);
23
- return result.protocol === 'http' && result.confidence > 50;
24
- }
25
- /**
26
- * Get minimum bytes needed for detection
27
- */
28
- getMinimumBytes() {
29
- return 4; // "GET " minimum
30
- }
31
- /**
32
- * Detect HTTP protocol from buffer
33
- */
34
- detect(buffer, options) {
35
- // Quick detection first
36
- const quickResult = this.quickDetector.quickDetect(buffer);
37
- if (quickResult.protocol !== 'http' || quickResult.confidence < 50) {
38
- return null;
39
- }
40
- // Check if we have complete headers first
41
- const headersEnd = buffer.indexOf('\r\n\r\n');
42
- const isComplete = headersEnd !== -1;
43
- // Extract routing information
44
- const routing = RoutingExtractor.extract(buffer, 'http');
45
- // Extract headers if requested and we have complete headers
46
- let headers;
47
- if (options?.extractFullHeaders && isComplete) {
48
- const headerSection = buffer.slice(0, headersEnd).toString();
49
- const lines = headerSection.split('\r\n');
50
- if (lines.length > 1) {
51
- // Skip the request line and parse headers
52
- headers = HttpParser.parseHeaders(lines.slice(1));
53
- }
54
- }
55
- // If we don't need full headers and we have complete headers, we can return early
56
- if (quickResult.confidence >= 95 && !options?.extractFullHeaders && isComplete) {
57
- return {
58
- protocol: 'http',
59
- connectionInfo: {
60
- protocol: 'http',
61
- method: quickResult.metadata?.method,
62
- domain: routing?.domain,
63
- path: routing?.path
64
- },
65
- isComplete: true
66
- };
67
- }
68
- return {
69
- protocol: 'http',
70
- connectionInfo: {
71
- protocol: 'http',
72
- domain: routing?.domain,
73
- path: routing?.path,
74
- method: quickResult.metadata?.method,
75
- headers: headers
76
- },
77
- isComplete,
78
- bytesNeeded: isComplete ? undefined : buffer.length + 512 // Need more for headers
79
- };
80
- }
81
- /**
82
- * Handle fragmented detection
83
- */
84
- detectWithContext(buffer, context, options) {
85
- const handler = this.fragmentManager.getHandler('http');
86
- const connectionId = DetectionFragmentManager.createConnectionId(context);
87
- // Add fragment
88
- const result = handler.addFragment(connectionId, buffer);
89
- if (result.error) {
90
- handler.complete(connectionId);
91
- return null;
92
- }
93
- // Try detection on accumulated buffer
94
- const detectResult = this.detect(result.buffer, options);
95
- if (detectResult && detectResult.isComplete) {
96
- handler.complete(connectionId);
97
- }
98
- return detectResult;
99
- }
100
- }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kZXRlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2RldGVjdGlvbi9kZXRlY3RvcnMvaHR0cC1kZXRlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBTUgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFJdkIsWUFBWSxlQUEwQztRQUg5QyxrQkFBYSxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUlsRCxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsSUFBSSxJQUFJLHdCQUF3QixFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsU0FBUyxDQUFDLE1BQWM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUI7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQWMsRUFBRSxPQUEyQjtRQUNoRCx3QkFBd0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0QsSUFBSSxXQUFXLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxXQUFXLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ25FLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sVUFBVSxHQUFHLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyQyw4QkFBOEI7UUFDOUIsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUEyQyxDQUFDO1FBQ2hELElBQUksT0FBTyxFQUFFLGtCQUFrQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzlDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdELE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDMUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNyQiwwQ0FBMEM7Z0JBQzFDLE9BQU8sR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztRQUVELGtGQUFrRjtRQUNsRixJQUFJLFdBQVcsQ0FBQyxVQUFVLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQy9FLE9BQU87Z0JBQ0wsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLGNBQWMsRUFBRTtvQkFDZCxRQUFRLEVBQUUsTUFBTTtvQkFDaEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBcUI7b0JBQ25ELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTTtvQkFDdkIsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO2lCQUNwQjtnQkFDRCxVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU87WUFDTCxRQUFRLEVBQUUsTUFBTTtZQUNoQixjQUFjLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLE1BQU07Z0JBQ2hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTTtnQkFDdkIsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJO2dCQUNuQixNQUFNLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxNQUFxQjtnQkFDbkQsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRCxVQUFVO1lBQ1YsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyx3QkFBd0I7U0FDbkYsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixDQUNmLE1BQWMsRUFDZCxPQUEyQixFQUMzQixPQUEyQjtRQUUzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxRSxlQUFlO1FBQ2YsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxzQ0FBc0M7UUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRTFELElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
@@ -1,28 +0,0 @@
1
- /**
2
- * Quick Protocol Detector
3
- *
4
- * Lightweight protocol identification based on minimal bytes
5
- * No parsing, just identification
6
- */
7
- import type { IProtocolDetector, IProtocolDetectionResult } from '../../protocols/common/types.js';
8
- /**
9
- * Quick protocol detector for fast identification
10
- */
11
- export declare class QuickProtocolDetector implements IProtocolDetector {
12
- /**
13
- * Check if this detector can handle the data
14
- */
15
- canHandle(data: Buffer): boolean;
16
- /**
17
- * Perform quick detection based on first few bytes
18
- */
19
- quickDetect(data: Buffer): IProtocolDetectionResult;
20
- /**
21
- * Check if data looks like TLS
22
- */
23
- private checkTls;
24
- /**
25
- * Check if data looks like HTTP
26
- */
27
- private checkHttp;
28
- }
@@ -1,131 +0,0 @@
1
- /**
2
- * Quick Protocol Detector
3
- *
4
- * Lightweight protocol identification based on minimal bytes
5
- * No parsing, just identification
6
- */
7
- import { TlsRecordType } from '../../protocols/tls/index.js';
8
- import { HttpParser } from '../../protocols/http/index.js';
9
- /**
10
- * Quick protocol detector for fast identification
11
- */
12
- export class QuickProtocolDetector {
13
- /**
14
- * Check if this detector can handle the data
15
- */
16
- canHandle(data) {
17
- return data.length >= 1;
18
- }
19
- /**
20
- * Perform quick detection based on first few bytes
21
- */
22
- quickDetect(data) {
23
- if (data.length === 0) {
24
- return {
25
- protocol: 'unknown',
26
- confidence: 0,
27
- requiresMoreData: true
28
- };
29
- }
30
- // Check for TLS
31
- const tlsResult = this.checkTls(data);
32
- if (tlsResult.confidence > 80) {
33
- return tlsResult;
34
- }
35
- // Check for HTTP
36
- const httpResult = this.checkHttp(data);
37
- if (httpResult.confidence > 80) {
38
- return httpResult;
39
- }
40
- // Need more data or unknown
41
- return {
42
- protocol: 'unknown',
43
- confidence: 0,
44
- requiresMoreData: data.length < 20
45
- };
46
- }
47
- /**
48
- * Check if data looks like TLS
49
- */
50
- checkTls(data) {
51
- if (data.length < 3) {
52
- return {
53
- protocol: 'tls',
54
- confidence: 0,
55
- requiresMoreData: true
56
- };
57
- }
58
- const firstByte = data[0];
59
- const secondByte = data[1];
60
- // Check for valid TLS record type
61
- const validRecordTypes = [
62
- TlsRecordType.CHANGE_CIPHER_SPEC,
63
- TlsRecordType.ALERT,
64
- TlsRecordType.HANDSHAKE,
65
- TlsRecordType.APPLICATION_DATA,
66
- TlsRecordType.HEARTBEAT
67
- ];
68
- if (!validRecordTypes.includes(firstByte)) {
69
- return {
70
- protocol: 'tls',
71
- confidence: 0
72
- };
73
- }
74
- // Check TLS version byte (0x03 for all TLS/SSL versions)
75
- if (secondByte !== 0x03) {
76
- return {
77
- protocol: 'tls',
78
- confidence: 0
79
- };
80
- }
81
- // High confidence it's TLS
82
- return {
83
- protocol: 'tls',
84
- confidence: 95,
85
- metadata: {
86
- recordType: firstByte
87
- }
88
- };
89
- }
90
- /**
91
- * Check if data looks like HTTP
92
- */
93
- checkHttp(data) {
94
- if (data.length < 3) {
95
- return {
96
- protocol: 'http',
97
- confidence: 0,
98
- requiresMoreData: true
99
- };
100
- }
101
- // Quick check for HTTP methods
102
- const start = data.subarray(0, Math.min(10, data.length)).toString('ascii');
103
- // Check common HTTP methods
104
- const httpMethods = ['GET ', 'POST ', 'PUT ', 'DELETE ', 'HEAD ', 'OPTIONS', 'PATCH ', 'CONNECT', 'TRACE '];
105
- for (const method of httpMethods) {
106
- if (start.startsWith(method)) {
107
- return {
108
- protocol: 'http',
109
- confidence: 95,
110
- metadata: {
111
- method: method.trim()
112
- }
113
- };
114
- }
115
- }
116
- // Check if it might be HTTP but need more data
117
- if (HttpParser.isPrintableAscii(data, Math.min(20, data.length))) {
118
- // Could be HTTP, but not sure
119
- return {
120
- protocol: 'http',
121
- confidence: 30,
122
- requiresMoreData: data.length < 20
123
- };
124
- }
125
- return {
126
- protocol: 'http',
127
- confidence: 0
128
- };
129
- }
130
- }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stZGV0ZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9kZXRlY3Rpb24vZGV0ZWN0b3JzL3F1aWNrLWRldGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7O09BRUc7SUFDSCxTQUFTLENBQUMsSUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixPQUFPO2dCQUNMLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixVQUFVLEVBQUUsQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQUM7UUFDSixDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzlCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLENBQUM7WUFDL0IsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixPQUFPO1lBQ0wsUUFBUSxFQUFFLFNBQVM7WUFDbkIsVUFBVSxFQUFFLENBQUM7WUFDYixnQkFB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
@@ -1,28 +0,0 @@
1
- /**
2
- * Routing Information Extractor
3
- *
4
- * Extracts minimal routing information from protocols
5
- * without full parsing
6
- */
7
- import type { IRoutingInfo, IConnectionContext, TProtocolType } from '../../protocols/common/types.js';
8
- /**
9
- * Extracts routing information from protocol data
10
- */
11
- export declare class RoutingExtractor {
12
- /**
13
- * Extract routing info based on protocol type
14
- */
15
- static extract(data: Buffer, protocol: TProtocolType, context?: IConnectionContext): IRoutingInfo | null;
16
- /**
17
- * Extract routing from TLS ClientHello (SNI)
18
- */
19
- private static extractTlsRouting;
20
- /**
21
- * Extract routing from HTTP headers (Host header)
22
- */
23
- private static extractHttpRouting;
24
- /**
25
- * Try to extract domain from any protocol
26
- */
27
- static extractDomain(data: Buffer, hint?: TProtocolType): string | null;
28
- }
@@ -1,122 +0,0 @@
1
- /**
2
- * Routing Information Extractor
3
- *
4
- * Extracts minimal routing information from protocols
5
- * without full parsing
6
- */
7
- import { SniExtraction } from '../../protocols/tls/sni/sni-extraction.js';
8
- import { HttpParser } from '../../protocols/http/index.js';
9
- /**
10
- * Extracts routing information from protocol data
11
- */
12
- export class RoutingExtractor {
13
- /**
14
- * Extract routing info based on protocol type
15
- */
16
- static extract(data, protocol, context) {
17
- switch (protocol) {
18
- case 'tls':
19
- case 'https':
20
- return this.extractTlsRouting(data, context);
21
- case 'http':
22
- return this.extractHttpRouting(data);
23
- default:
24
- return null;
25
- }
26
- }
27
- /**
28
- * Extract routing from TLS ClientHello (SNI)
29
- */
30
- static extractTlsRouting(data, context) {
31
- try {
32
- // Quick SNI extraction without full parsing
33
- const sni = SniExtraction.extractSNI(data);
34
- if (sni) {
35
- return {
36
- domain: sni,
37
- protocol: 'tls',
38
- port: 443 // Default HTTPS port
39
- };
40
- }
41
- return null;
42
- }
43
- catch (error) {
44
- // Extraction failed, return null
45
- return null;
46
- }
47
- }
48
- /**
49
- * Extract routing from HTTP headers (Host header)
50
- */
51
- static extractHttpRouting(data) {
52
- try {
53
- // Look for first line
54
- const firstLineEnd = data.indexOf('\n');
55
- if (firstLineEnd === -1) {
56
- return null;
57
- }
58
- // Parse request line
59
- const firstLine = data.subarray(0, firstLineEnd).toString('ascii').trim();
60
- const requestLine = HttpParser.parseRequestLine(firstLine);
61
- if (!requestLine) {
62
- return null;
63
- }
64
- // Look for Host header
65
- let pos = firstLineEnd + 1;
66
- const maxSearch = Math.min(data.length, 4096); // Don't search too far
67
- while (pos < maxSearch) {
68
- const lineEnd = data.indexOf('\n', pos);
69
- if (lineEnd === -1)
70
- break;
71
- const line = data.subarray(pos, lineEnd).toString('ascii').trim();
72
- // Empty line means end of headers
73
- if (line.length === 0)
74
- break;
75
- // Check for Host header
76
- if (line.toLowerCase().startsWith('host:')) {
77
- const hostValue = line.substring(5).trim();
78
- const domain = HttpParser.extractDomainFromHost(hostValue);
79
- return {
80
- domain,
81
- path: requestLine.path,
82
- protocol: 'http',
83
- port: 80 // Default HTTP port
84
- };
85
- }
86
- pos = lineEnd + 1;
87
- }
88
- // No Host header found, but we have the path
89
- return {
90
- path: requestLine.path,
91
- protocol: 'http',
92
- port: 80
93
- };
94
- }
95
- catch (error) {
96
- // Extraction failed
97
- return null;
98
- }
99
- }
100
- /**
101
- * Try to extract domain from any protocol
102
- */
103
- static extractDomain(data, hint) {
104
- // If we have a hint, use it
105
- if (hint) {
106
- const routing = this.extract(data, hint);
107
- return routing?.domain || null;
108
- }
109
- // Try TLS first (more specific)
110
- const tlsRouting = this.extractTlsRouting(data);
111
- if (tlsRouting?.domain) {
112
- return tlsRouting.domain;
113
- }
114
- // Try HTTP
115
- const httpRouting = this.extractHttpRouting(data);
116
- if (httpRouting?.domain) {
117
- return httpRouting.domain;
118
- }
119
- return null;
120
- }
121
- }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1leHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9kZXRlY3Rpb24vZGV0ZWN0b3JzL3JvdXRpbmctZXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7O09BRUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUNaLElBQVksRUFDWixRQUF1QixFQUN2QixPQUE0QjtRQUU1QixRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztZQUUvQyxLQUFLLE1BQU07Z0JBQ1QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdkM7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDOUIsSUFBWSxFQUNaLE9BQTRCO1FBRTVCLElBQUksQ0FBQztZQUNILDRDQUE0QztZQUM1QyxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTNDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsT0FBTztvQkFDTCxNQUFNLEVBQUUsR0FBRztvQkFDWCxRQUFRLEVBQUUsS0FBSztvQkFDZixJQUFJLEVBQUUsR0FBRyxDQUFFLHFCQUFxQjtpQkFDakMsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEtBQUssRUFB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
@@ -1,47 +0,0 @@
1
- /**
2
- * TLS protocol detector
3
- */
4
- import type { IProtocolDetector } from '../models/interfaces.js';
5
- import type { IDetectionResult, IDetectionOptions } from '../models/detection-types.js';
6
- /**
7
- * TLS detector implementation
8
- */
9
- export declare class TlsDetector implements IProtocolDetector {
10
- /**
11
- * Minimum bytes needed to identify TLS (record header)
12
- */
13
- private static readonly MIN_TLS_HEADER_SIZE;
14
- /**
15
- * Detect TLS protocol from buffer
16
- */
17
- detect(buffer: Buffer, options?: IDetectionOptions): IDetectionResult | null;
18
- /**
19
- * Check if buffer can be handled by this detector
20
- */
21
- canHandle(buffer: Buffer): boolean;
22
- /**
23
- * Get minimum bytes needed for detection
24
- */
25
- getMinimumBytes(): number;
26
- /**
27
- * Check if buffer contains a valid TLS record
28
- */
29
- private isTlsRecord;
30
- /**
31
- * Parse ALPN extension data
32
- */
33
- private parseAlpnExtension;
34
- /**
35
- * Parse cipher suites
36
- */
37
- private parseCipherSuites;
38
- /**
39
- * Detect with context for fragmented data
40
- */
41
- detectWithContext(buffer: Buffer, _context: {
42
- sourceIp?: string;
43
- sourcePort?: number;
44
- destIp?: string;
45
- destPort?: number;
46
- }, options?: IDetectionOptions): IDetectionResult | null;
47
- }