@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,183 +0,0 @@
1
- /**
2
- * TLS protocol detector
3
- */
4
- import { readUInt16BE } from '../utils/buffer-utils.js';
5
- import { tlsVersionToString } from '../utils/parser-utils.js';
6
- // Import from protocols
7
- import { TlsRecordType, TlsHandshakeType, TlsExtensionType } from '../../protocols/tls/index.js';
8
- // Import TLS utilities for SNI extraction from protocols
9
- import { SniExtraction } from '../../protocols/tls/sni/sni-extraction.js';
10
- import { ClientHelloParser } from '../../protocols/tls/sni/client-hello-parser.js';
11
- /**
12
- * TLS detector implementation
13
- */
14
- export class TlsDetector {
15
- /**
16
- * Minimum bytes needed to identify TLS (record header)
17
- */
18
- static { this.MIN_TLS_HEADER_SIZE = 5; }
19
- /**
20
- * Detect TLS protocol from buffer
21
- */
22
- detect(buffer, options) {
23
- // Check if buffer is too small
24
- if (buffer.length < TlsDetector.MIN_TLS_HEADER_SIZE) {
25
- return null;
26
- }
27
- // Check if this is a TLS record
28
- if (!this.isTlsRecord(buffer)) {
29
- return null;
30
- }
31
- // Extract basic TLS info
32
- const recordType = buffer[0];
33
- const tlsMajor = buffer[1];
34
- const tlsMinor = buffer[2];
35
- const recordLength = readUInt16BE(buffer, 3);
36
- // Initialize connection info
37
- const connectionInfo = {
38
- protocol: 'tls',
39
- tlsVersion: tlsVersionToString(tlsMajor, tlsMinor) || undefined
40
- };
41
- // If it's a handshake, try to extract more info
42
- if (recordType === TlsRecordType.HANDSHAKE && buffer.length >= 6) {
43
- const handshakeType = buffer[5];
44
- // For ClientHello, extract SNI and other info
45
- if (handshakeType === TlsHandshakeType.CLIENT_HELLO) {
46
- // Check if we have the complete handshake
47
- const totalRecordLength = recordLength + 5; // Including TLS header
48
- if (buffer.length >= totalRecordLength) {
49
- // Extract SNI using existing logic
50
- const sni = SniExtraction.extractSNI(buffer);
51
- if (sni) {
52
- connectionInfo.domain = sni;
53
- connectionInfo.sni = sni;
54
- }
55
- // Parse ClientHello for additional info
56
- const parseResult = ClientHelloParser.parseClientHello(buffer);
57
- if (parseResult.isValid) {
58
- // Extract ALPN if present
59
- const alpnExtension = parseResult.extensions.find(ext => ext.type === TlsExtensionType.APPLICATION_LAYER_PROTOCOL_NEGOTIATION);
60
- if (alpnExtension) {
61
- connectionInfo.alpn = this.parseAlpnExtension(alpnExtension.data);
62
- }
63
- // Store cipher suites if needed
64
- if (parseResult.cipherSuites && options?.extractFullHeaders) {
65
- connectionInfo.cipherSuites = this.parseCipherSuites(parseResult.cipherSuites);
66
- }
67
- }
68
- // Return complete result
69
- return {
70
- protocol: 'tls',
71
- connectionInfo,
72
- remainingBuffer: buffer.length > totalRecordLength
73
- ? buffer.subarray(totalRecordLength)
74
- : undefined,
75
- isComplete: true
76
- };
77
- }
78
- else {
79
- // Incomplete handshake
80
- return {
81
- protocol: 'tls',
82
- connectionInfo,
83
- isComplete: false,
84
- bytesNeeded: totalRecordLength
85
- };
86
- }
87
- }
88
- }
89
- // For other TLS record types, just return basic info
90
- return {
91
- protocol: 'tls',
92
- connectionInfo,
93
- isComplete: true,
94
- remainingBuffer: buffer.length > recordLength + 5
95
- ? buffer.subarray(recordLength + 5)
96
- : undefined
97
- };
98
- }
99
- /**
100
- * Check if buffer can be handled by this detector
101
- */
102
- canHandle(buffer) {
103
- return buffer.length >= TlsDetector.MIN_TLS_HEADER_SIZE &&
104
- this.isTlsRecord(buffer);
105
- }
106
- /**
107
- * Get minimum bytes needed for detection
108
- */
109
- getMinimumBytes() {
110
- return TlsDetector.MIN_TLS_HEADER_SIZE;
111
- }
112
- /**
113
- * Check if buffer contains a valid TLS record
114
- */
115
- isTlsRecord(buffer) {
116
- const recordType = buffer[0];
117
- // Check for valid record type
118
- const validTypes = [
119
- TlsRecordType.CHANGE_CIPHER_SPEC,
120
- TlsRecordType.ALERT,
121
- TlsRecordType.HANDSHAKE,
122
- TlsRecordType.APPLICATION_DATA,
123
- TlsRecordType.HEARTBEAT
124
- ];
125
- if (!validTypes.includes(recordType)) {
126
- return false;
127
- }
128
- // Check TLS version bytes (should be 0x03 0x0X)
129
- if (buffer[1] !== 0x03) {
130
- return false;
131
- }
132
- // Check record length is reasonable
133
- const recordLength = readUInt16BE(buffer, 3);
134
- if (recordLength > 16384) { // Max TLS record size
135
- return false;
136
- }
137
- return true;
138
- }
139
- /**
140
- * Parse ALPN extension data
141
- */
142
- parseAlpnExtension(data) {
143
- const protocols = [];
144
- if (data.length < 2) {
145
- return protocols;
146
- }
147
- const listLength = readUInt16BE(data, 0);
148
- let offset = 2;
149
- while (offset < Math.min(2 + listLength, data.length)) {
150
- const protoLength = data[offset];
151
- offset++;
152
- if (offset + protoLength <= data.length) {
153
- const protocol = data.subarray(offset, offset + protoLength).toString('ascii');
154
- protocols.push(protocol);
155
- offset += protoLength;
156
- }
157
- else {
158
- break;
159
- }
160
- }
161
- return protocols;
162
- }
163
- /**
164
- * Parse cipher suites
165
- */
166
- parseCipherSuites(cipherData) {
167
- const suites = [];
168
- for (let i = 0; i < cipherData.length - 1; i += 2) {
169
- const suite = readUInt16BE(cipherData, i);
170
- suites.push(suite);
171
- }
172
- return suites;
173
- }
174
- /**
175
- * Detect with context for fragmented data
176
- */
177
- detectWithContext(buffer, _context, options) {
178
- // This method is deprecated - TLS detection should use the fragment manager
179
- // from the parent detector system, not maintain its own fragments
180
- return this.detect(buffer, options);
181
- }
182
- }
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxzLWRldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZGV0ZWN0aW9uL2RldGVjdG9ycy90bHMtZGV0ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFLSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUQsd0JBQXdCO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVqRyx5REFBeUQ7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRW5GOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDdEI7O09BRUc7YUFDcUIsd0JBQW1CLEdBQUcsQ0FBQyxDQUFDO0lBR2hEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQWMsRUFBRSxPQUEyQjtRQUNoRCwrQkFBK0I7UUFDL0IsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixNQUFNLFlBQVks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
@@ -1,17 +0,0 @@
1
- /**
2
- * Centralized Protocol Detection Module
3
- *
4
- * This module provides unified protocol detection capabilities for
5
- * both TLS and HTTP protocols, extracting connection information
6
- * without consuming the data stream.
7
- */
8
- export * from './protocol-detector.js';
9
- export * from './models/detection-types.js';
10
- export * from './models/interfaces.js';
11
- export * from './detectors/tls-detector.js';
12
- export * from './detectors/http-detector.js';
13
- export * from './detectors/quick-detector.js';
14
- export * from './detectors/routing-extractor.js';
15
- export * from './utils/buffer-utils.js';
16
- export * from './utils/parser-utils.js';
17
- export * from './utils/fragment-manager.js';
@@ -1,22 +0,0 @@
1
- /**
2
- * Centralized Protocol Detection Module
3
- *
4
- * This module provides unified protocol detection capabilities for
5
- * both TLS and HTTP protocols, extracting connection information
6
- * without consuming the data stream.
7
- */
8
- // Main detector
9
- export * from './protocol-detector.js';
10
- // Models
11
- export * from './models/detection-types.js';
12
- export * from './models/interfaces.js';
13
- // Individual detectors
14
- export * from './detectors/tls-detector.js';
15
- export * from './detectors/http-detector.js';
16
- export * from './detectors/quick-detector.js';
17
- export * from './detectors/routing-extractor.js';
18
- // Utilities
19
- export * from './utils/buffer-utils.js';
20
- export * from './utils/parser-utils.js';
21
- export * from './utils/fragment-manager.js';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXRlY3Rpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsZ0JBQWdCO0FBQ2hCLGNBQWMsd0JBQXdCLENBQUM7QUFFdkMsU0FBUztBQUNULGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2Qyx1QkFBdUI7QUFDdkIsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxZQUFZO0FBQ1osY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsNkJBQTZCLENBQUMifQ==
@@ -1,87 +0,0 @@
1
- /**
2
- * Type definitions for protocol detection
3
- */
4
- /**
5
- * Supported protocol types that can be detected
6
- */
7
- export type TProtocolType = 'tls' | 'http' | 'unknown';
8
- /**
9
- * HTTP method types
10
- */
11
- export type THttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE';
12
- /**
13
- * TLS version identifiers
14
- */
15
- export type TTlsVersion = 'SSLv3' | 'TLSv1.0' | 'TLSv1.1' | 'TLSv1.2' | 'TLSv1.3';
16
- /**
17
- * Connection information extracted from protocol detection
18
- */
19
- export interface IConnectionInfo {
20
- /**
21
- * The detected protocol type
22
- */
23
- protocol: TProtocolType;
24
- /**
25
- * Domain/hostname extracted from the connection
26
- * - For TLS: from SNI extension
27
- * - For HTTP: from Host header
28
- */
29
- domain?: string;
30
- /**
31
- * HTTP-specific fields
32
- */
33
- method?: THttpMethod;
34
- path?: string;
35
- httpVersion?: string;
36
- headers?: Record<string, string>;
37
- /**
38
- * TLS-specific fields
39
- */
40
- tlsVersion?: TTlsVersion;
41
- sni?: string;
42
- alpn?: string[];
43
- cipherSuites?: number[];
44
- }
45
- /**
46
- * Result of protocol detection
47
- */
48
- export interface IDetectionResult {
49
- /**
50
- * The detected protocol type
51
- */
52
- protocol: TProtocolType;
53
- /**
54
- * Extracted connection information
55
- */
56
- connectionInfo: IConnectionInfo;
57
- /**
58
- * Any remaining buffer data after detection headers
59
- * This can be used to continue processing the stream
60
- */
61
- remainingBuffer?: Buffer;
62
- /**
63
- * Whether the detection is complete or needs more data
64
- */
65
- isComplete: boolean;
66
- /**
67
- * Minimum bytes needed for complete detection (if incomplete)
68
- */
69
- bytesNeeded?: number;
70
- }
71
- /**
72
- * Options for protocol detection
73
- */
74
- export interface IDetectionOptions {
75
- /**
76
- * Maximum bytes to buffer for detection (default: 8192)
77
- */
78
- maxBufferSize?: number;
79
- /**
80
- * Timeout for detection in milliseconds (default: 5000)
81
- */
82
- timeout?: number;
83
- /**
84
- * Whether to extract full headers or just essential info
85
- */
86
- extractFullHeaders?: boolean;
87
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Type definitions for protocol detection
3
- */
4
- export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0ZWN0aW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZGV0ZWN0aW9uL21vZGVscy9kZXRlY3Rpb24tdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUcifQ==
@@ -1,97 +0,0 @@
1
- /**
2
- * Interface definitions for protocol detection components
3
- */
4
- import type { IDetectionResult, IDetectionOptions } from './detection-types.js';
5
- /**
6
- * Interface for protocol detectors
7
- */
8
- export interface IProtocolDetector {
9
- /**
10
- * Detect protocol from buffer data
11
- * @param buffer The buffer to analyze
12
- * @param options Detection options
13
- * @returns Detection result or null if protocol cannot be determined
14
- */
15
- detect(buffer: Buffer, options?: IDetectionOptions): IDetectionResult | null;
16
- /**
17
- * Check if buffer potentially contains this protocol
18
- * @param buffer The buffer to check
19
- * @returns True if buffer might contain this protocol
20
- */
21
- canHandle(buffer: Buffer): boolean;
22
- /**
23
- * Get the minimum bytes needed for detection
24
- */
25
- getMinimumBytes(): number;
26
- }
27
- /**
28
- * Interface for connection tracking during fragmented detection
29
- */
30
- export interface IConnectionTracker {
31
- /**
32
- * Connection identifier
33
- */
34
- id: string;
35
- /**
36
- * Accumulated buffer data
37
- */
38
- buffer: Buffer;
39
- /**
40
- * Timestamp of first data
41
- */
42
- startTime: number;
43
- /**
44
- * Current detection state
45
- */
46
- state: 'detecting' | 'complete' | 'failed';
47
- /**
48
- * Partial detection result (if any)
49
- */
50
- partialResult?: Partial<IDetectionResult>;
51
- }
52
- /**
53
- * Interface for buffer accumulator (handles fragmented data)
54
- */
55
- export interface IBufferAccumulator {
56
- /**
57
- * Add data to accumulator
58
- */
59
- append(data: Buffer): void;
60
- /**
61
- * Get accumulated buffer
62
- */
63
- getBuffer(): Buffer;
64
- /**
65
- * Get buffer length
66
- */
67
- length(): number;
68
- /**
69
- * Clear accumulated data
70
- */
71
- clear(): void;
72
- /**
73
- * Check if accumulator has enough data
74
- */
75
- hasMinimumBytes(minBytes: number): boolean;
76
- }
77
- /**
78
- * Detection events
79
- */
80
- export interface IDetectionEvents {
81
- /**
82
- * Emitted when protocol is successfully detected
83
- */
84
- detected: (result: IDetectionResult) => void;
85
- /**
86
- * Emitted when detection fails
87
- */
88
- failed: (error: Error) => void;
89
- /**
90
- * Emitted when detection times out
91
- */
92
- timeout: () => void;
93
- /**
94
- * Emitted when more data is needed
95
- */
96
- needMoreData: (bytesNeeded: number) => void;
97
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Interface definitions for protocol detection components
3
- */
4
- export {};
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2RldGVjdGlvbi9tb2RlbHMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRyJ9
@@ -1,79 +0,0 @@
1
- /**
2
- * Protocol Detector
3
- *
4
- * Simplified protocol detection using the new architecture
5
- */
6
- import type { IDetectionResult, IDetectionOptions } from './models/detection-types.js';
7
- import type { IConnectionContext } from '../protocols/common/types.js';
8
- /**
9
- * Main protocol detector class
10
- */
11
- export declare class ProtocolDetector {
12
- private static instance;
13
- private fragmentManager;
14
- private tlsDetector;
15
- private httpDetector;
16
- private connectionProtocols;
17
- constructor();
18
- private static getInstance;
19
- /**
20
- * Detect protocol from buffer data
21
- */
22
- static detect(buffer: Buffer, options?: IDetectionOptions): Promise<IDetectionResult>;
23
- private detectInstance;
24
- /**
25
- * Detect protocol with connection tracking for fragmented data
26
- * @deprecated Use detectWithContext instead
27
- */
28
- static detectWithConnectionTracking(buffer: Buffer, connectionId: string, options?: IDetectionOptions): Promise<IDetectionResult>;
29
- /**
30
- * Detect protocol with connection context for fragmented data
31
- */
32
- static detectWithContext(buffer: Buffer, context: IConnectionContext, options?: IDetectionOptions): Promise<IDetectionResult>;
33
- private detectWithContextInstance;
34
- /**
35
- * Clean up resources
36
- */
37
- static cleanup(): void;
38
- private cleanupInstance;
39
- /**
40
- * Destroy detector instance
41
- */
42
- static destroy(): void;
43
- private destroyInstance;
44
- /**
45
- * Clean up old connection tracking entries
46
- *
47
- * @param _maxAge Maximum age in milliseconds (default: 30 seconds)
48
- */
49
- static cleanupConnections(_maxAge?: number): void;
50
- /**
51
- * Clean up fragments for a specific connection
52
- */
53
- static cleanupConnection(context: IConnectionContext): void;
54
- /**
55
- * Extract domain from connection info
56
- */
57
- static extractDomain(connectionInfo: any): string | undefined;
58
- /**
59
- * Create a connection ID from connection parameters
60
- * @deprecated Use createConnectionContext instead
61
- */
62
- static createConnectionId(params: {
63
- sourceIp?: string;
64
- sourcePort?: number;
65
- destIp?: string;
66
- destPort?: number;
67
- socketId?: string;
68
- }): string;
69
- /**
70
- * Create a connection context from parameters
71
- */
72
- static createConnectionContext(params: {
73
- sourceIp?: string;
74
- sourcePort?: number;
75
- destIp?: string;
76
- destPort?: number;
77
- socketId?: string;
78
- }): IConnectionContext;
79
- }