@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,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
- }