@push.rocks/smartproxy 23.0.0 → 23.1.1

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 (161) hide show
  1. package/changelog.md +17 -0
  2. package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
  3. package/dist_rust/rustproxy_linux_arm64 +0 -0
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/plugins.d.ts +2 -1
  6. package/dist_ts/plugins.js +3 -2
  7. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
  8. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +84 -212
  9. package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
  10. package/npmextra.json +3 -0
  11. package/package.json +13 -11
  12. package/readme.md +41 -11
  13. package/ts/00_commitinfo_data.ts +1 -1
  14. package/ts/plugins.ts +2 -0
  15. package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +103 -233
  16. package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
  17. package/dist_ts/common/eventUtils.d.ts +0 -14
  18. package/dist_ts/common/eventUtils.js +0 -20
  19. package/dist_ts/common/types.d.ts +0 -82
  20. package/dist_ts/common/types.js +0 -15
  21. package/dist_ts/core/utils/event-system.d.ts +0 -200
  22. package/dist_ts/core/utils/event-system.js +0 -224
  23. package/dist_ts/core/utils/event-utils.d.ts +0 -15
  24. package/dist_ts/core/utils/event-utils.js +0 -11
  25. package/dist_ts/core/utils/route-manager.d.ts +0 -88
  26. package/dist_ts/core/utils/route-manager.js +0 -342
  27. package/dist_ts/core/utils/route-utils.d.ts +0 -28
  28. package/dist_ts/core/utils/route-utils.js +0 -67
  29. package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
  30. package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
  31. package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
  32. package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
  33. package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
  34. package/dist_ts/detection/protocol-detector-v2.js +0 -116
  35. package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
  36. package/dist_ts/forwarding/config/forwarding-types.js +0 -18
  37. package/dist_ts/forwarding/config/index.d.ts +0 -9
  38. package/dist_ts/forwarding/config/index.js +0 -10
  39. package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
  40. package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
  41. package/dist_ts/forwarding/factory/index.d.ts +0 -4
  42. package/dist_ts/forwarding/factory/index.js +0 -5
  43. package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
  44. package/dist_ts/forwarding/handlers/base-handler.js +0 -121
  45. package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
  46. package/dist_ts/forwarding/handlers/http-handler.js +0 -143
  47. package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
  48. package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
  49. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
  50. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
  51. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
  52. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
  53. package/dist_ts/forwarding/handlers/index.d.ts +0 -8
  54. package/dist_ts/forwarding/handlers/index.js +0 -9
  55. package/dist_ts/forwarding/index.d.ts +0 -13
  56. package/dist_ts/forwarding/index.js +0 -16
  57. package/dist_ts/http/index.d.ts +0 -5
  58. package/dist_ts/http/index.js +0 -8
  59. package/dist_ts/http/models/http-types.d.ts +0 -6
  60. package/dist_ts/http/models/http-types.js +0 -7
  61. package/dist_ts/http/router/index.d.ts +0 -8
  62. package/dist_ts/http/router/index.js +0 -7
  63. package/dist_ts/http/router/proxy-router.d.ts +0 -115
  64. package/dist_ts/http/router/proxy-router.js +0 -325
  65. package/dist_ts/http/router/route-router.d.ts +0 -108
  66. package/dist_ts/http/router/route-router.js +0 -393
  67. package/dist_ts/protocols/tls/constants.d.ts +0 -122
  68. package/dist_ts/protocols/tls/constants.js +0 -135
  69. package/dist_ts/protocols/tls/parser.d.ts +0 -53
  70. package/dist_ts/protocols/tls/parser.js +0 -294
  71. package/dist_ts/protocols/tls/types.d.ts +0 -65
  72. package/dist_ts/protocols/tls/types.js +0 -5
  73. package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
  74. package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
  75. package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
  76. package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
  77. package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
  78. package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
  79. package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
  80. package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
  81. package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
  82. package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
  83. package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
  84. package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
  85. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
  86. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
  87. package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
  88. package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
  89. package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
  90. package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
  91. package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
  92. package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
  93. package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
  94. package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
  95. package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
  96. package/dist_ts/proxies/http-proxy/index.js +0 -16
  97. package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
  98. package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
  99. package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
  100. package/dist_ts/proxies/http-proxy/models/index.js +0 -6
  101. package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
  102. package/dist_ts/proxies/http-proxy/models/types.js +0 -35
  103. package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
  104. package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
  105. package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
  106. package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
  107. package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
  108. package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
  109. package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
  110. package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
  111. package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
  112. package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
  113. package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
  114. package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
  115. package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
  116. package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
  117. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
  118. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
  119. package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
  120. package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
  121. package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
  122. package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
  123. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
  124. package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
  125. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
  126. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
  127. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
  128. package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
  129. package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
  130. package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
  131. package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
  132. package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
  133. package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
  134. package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
  135. package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
  136. package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
  137. package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
  138. package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
  139. package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
  140. package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
  141. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
  142. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
  143. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
  144. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
  145. package/dist_ts/routing/router/proxy-router.d.ts +0 -115
  146. package/dist_ts/routing/router/proxy-router.js +0 -325
  147. package/dist_ts/routing/router/route-router.d.ts +0 -108
  148. package/dist_ts/routing/router/route-router.js +0 -393
  149. package/dist_ts/tls/alerts/index.d.ts +0 -4
  150. package/dist_ts/tls/alerts/index.js +0 -5
  151. package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
  152. package/dist_ts/tls/alerts/tls-alert.js +0 -226
  153. package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
  154. package/dist_ts/tls/sni/client-hello-parser.js +0 -464
  155. package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
  156. package/dist_ts/tls/sni/sni-extraction.js +0 -275
  157. package/dist_ts/tls/utils/index.d.ts +0 -4
  158. package/dist_ts/tls/utils/index.js +0 -5
  159. package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
  160. package/dist_ts/tls/utils/tls-utils.js +0 -75
  161. package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
@@ -1,318 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- import { logger } from '../../core/utils/logger.js';
3
- import { cleanupSocket } from '../../core/utils/socket-utils.js';
4
- /**
5
- * PortManager handles the dynamic creation and removal of port listeners
6
- *
7
- * This class provides methods to add and remove listening ports at runtime,
8
- * allowing SmartProxy to adapt to configuration changes without requiring
9
- * a full restart.
10
- *
11
- * It includes a reference counting system to track how many routes are using
12
- * each port, so ports can be automatically released when they are no longer needed.
13
- */
14
- export class PortManager {
15
- /**
16
- * Create a new PortManager
17
- *
18
- * @param smartProxy The SmartProxy instance
19
- */
20
- constructor(smartProxy) {
21
- this.smartProxy = smartProxy;
22
- this.servers = new Map();
23
- this.isShuttingDown = false;
24
- // Track how many routes are using each port
25
- this.portRefCounts = new Map();
26
- }
27
- /**
28
- * Start listening on a specific port
29
- *
30
- * @param port The port number to listen on
31
- * @returns Promise that resolves when the server is listening or rejects on error
32
- */
33
- async addPort(port) {
34
- // Check if we're already listening on this port
35
- if (this.servers.has(port)) {
36
- // Port is already bound, just increment the reference count
37
- this.incrementPortRefCount(port);
38
- try {
39
- logger.log('debug', `PortManager: Port ${port} is already bound by SmartProxy, reusing binding`, {
40
- port,
41
- component: 'port-manager'
42
- });
43
- }
44
- catch (e) {
45
- console.log(`[DEBUG] PortManager: Port ${port} is already bound by SmartProxy, reusing binding`);
46
- }
47
- return;
48
- }
49
- // Initialize reference count for new port
50
- this.portRefCounts.set(port, 1);
51
- // Create a server for this port
52
- const server = plugins.net.createServer((socket) => {
53
- // Check if shutting down
54
- if (this.isShuttingDown) {
55
- cleanupSocket(socket, 'port-manager-shutdown', { immediate: true });
56
- return;
57
- }
58
- // Delegate to route connection handler
59
- this.smartProxy.routeConnectionHandler.handleConnection(socket);
60
- }).on('error', (err) => {
61
- try {
62
- logger.log('error', `Server Error on port ${port}: ${err.message}`, {
63
- port,
64
- error: err.message,
65
- component: 'port-manager'
66
- });
67
- }
68
- catch (e) {
69
- console.error(`[ERROR] Server Error on port ${port}: ${err.message}`);
70
- }
71
- });
72
- // Start listening on the port
73
- return new Promise((resolve, reject) => {
74
- server.listen(port, () => {
75
- const isHttpProxyPort = this.smartProxy.settings.useHttpProxy?.includes(port);
76
- try {
77
- logger.log('info', `SmartProxy -> OK: Now listening on port ${port}${isHttpProxyPort ? ' (HttpProxy forwarding enabled)' : ''}`, {
78
- port,
79
- isHttpProxyPort: !!isHttpProxyPort,
80
- component: 'port-manager'
81
- });
82
- }
83
- catch (e) {
84
- console.log(`[INFO] SmartProxy -> OK: Now listening on port ${port}${isHttpProxyPort ? ' (HttpProxy forwarding enabled)' : ''}`);
85
- }
86
- // Store the server reference
87
- this.servers.set(port, server);
88
- resolve();
89
- }).on('error', (err) => {
90
- // Check if this is an external conflict
91
- const { isConflict, isExternal } = this.isPortConflict(err);
92
- if (isConflict && !isExternal) {
93
- // This is an internal conflict (port already bound by SmartProxy)
94
- // This shouldn't normally happen because we check servers.has(port) above
95
- logger.log('warn', `Port ${port} binding conflict: already in use by SmartProxy`, {
96
- port,
97
- component: 'port-manager'
98
- });
99
- // Still increment reference count to maintain tracking
100
- this.incrementPortRefCount(port);
101
- resolve();
102
- return;
103
- }
104
- // Log the error and propagate it
105
- logger.log('error', `Failed to listen on port ${port}: ${err.message}`, {
106
- port,
107
- error: err.message,
108
- code: err.code,
109
- component: 'port-manager'
110
- });
111
- // Clean up reference count since binding failed
112
- this.portRefCounts.delete(port);
113
- reject(err);
114
- });
115
- });
116
- }
117
- /**
118
- * Stop listening on a specific port
119
- *
120
- * @param port The port to stop listening on
121
- * @returns Promise that resolves when the server is closed
122
- */
123
- async removePort(port) {
124
- // Decrement the reference count first
125
- const newRefCount = this.decrementPortRefCount(port);
126
- // If there are still references to this port, keep it open
127
- if (newRefCount > 0) {
128
- logger.log('debug', `PortManager: Port ${port} still has ${newRefCount} references, keeping open`, {
129
- port,
130
- refCount: newRefCount,
131
- component: 'port-manager'
132
- });
133
- return;
134
- }
135
- // Get the server for this port
136
- const server = this.servers.get(port);
137
- if (!server) {
138
- logger.log('warn', `PortManager: Not listening on port ${port}`, {
139
- port,
140
- component: 'port-manager'
141
- });
142
- // Ensure reference count is reset
143
- this.portRefCounts.delete(port);
144
- return;
145
- }
146
- // Close the server
147
- return new Promise((resolve) => {
148
- server.close((err) => {
149
- if (err) {
150
- logger.log('error', `Error closing server on port ${port}: ${err.message}`, {
151
- port,
152
- error: err.message,
153
- component: 'port-manager'
154
- });
155
- }
156
- else {
157
- logger.log('info', `SmartProxy -> Stopped listening on port ${port}`, {
158
- port,
159
- component: 'port-manager'
160
- });
161
- }
162
- // Remove the server reference and clean up reference counting
163
- this.servers.delete(port);
164
- this.portRefCounts.delete(port);
165
- resolve();
166
- });
167
- });
168
- }
169
- /**
170
- * Add multiple ports at once
171
- *
172
- * @param ports Array of ports to add
173
- * @returns Promise that resolves when all servers are listening
174
- */
175
- async addPorts(ports) {
176
- const uniquePorts = [...new Set(ports)];
177
- await Promise.all(uniquePorts.map(port => this.addPort(port)));
178
- }
179
- /**
180
- * Remove multiple ports at once
181
- *
182
- * @param ports Array of ports to remove
183
- * @returns Promise that resolves when all servers are closed
184
- */
185
- async removePorts(ports) {
186
- const uniquePorts = [...new Set(ports)];
187
- await Promise.all(uniquePorts.map(port => this.removePort(port)));
188
- }
189
- /**
190
- * Update listening ports to match the provided list
191
- *
192
- * This will add any ports that aren't currently listening,
193
- * and remove any ports that are no longer needed.
194
- *
195
- * @param ports Array of ports that should be listening
196
- * @returns Promise that resolves when all operations are complete
197
- */
198
- async updatePorts(ports) {
199
- const targetPorts = new Set(ports);
200
- const currentPorts = new Set(this.servers.keys());
201
- // Find ports to add and remove
202
- const portsToAdd = ports.filter(port => !currentPorts.has(port));
203
- const portsToRemove = Array.from(currentPorts).filter(port => !targetPorts.has(port));
204
- // Log the changes
205
- if (portsToAdd.length > 0) {
206
- console.log(`PortManager: Adding new listeners for ports: ${portsToAdd.join(', ')}`);
207
- }
208
- if (portsToRemove.length > 0) {
209
- console.log(`PortManager: Removing listeners for ports: ${portsToRemove.join(', ')}`);
210
- }
211
- // Add and remove ports
212
- await this.removePorts(portsToRemove);
213
- await this.addPorts(portsToAdd);
214
- }
215
- /**
216
- * Get all ports that are currently listening
217
- *
218
- * @returns Array of port numbers
219
- */
220
- getListeningPorts() {
221
- return Array.from(this.servers.keys());
222
- }
223
- /**
224
- * Mark the port manager as shutting down
225
- */
226
- setShuttingDown(isShuttingDown) {
227
- this.isShuttingDown = isShuttingDown;
228
- }
229
- /**
230
- * Close all listening servers
231
- *
232
- * @returns Promise that resolves when all servers are closed
233
- */
234
- async closeAll() {
235
- const allPorts = Array.from(this.servers.keys());
236
- await this.removePorts(allPorts);
237
- }
238
- /**
239
- * Get all server instances (for testing or debugging)
240
- */
241
- getServers() {
242
- return new Map(this.servers);
243
- }
244
- /**
245
- * Check if a port is bound by this SmartProxy instance
246
- *
247
- * @param port The port number to check
248
- * @returns True if the port is currently bound by SmartProxy
249
- */
250
- isPortBoundBySmartProxy(port) {
251
- return this.servers.has(port);
252
- }
253
- /**
254
- * Get the current reference count for a port
255
- *
256
- * @param port The port number to check
257
- * @returns The number of routes using this port, 0 if none
258
- */
259
- getPortRefCount(port) {
260
- return this.portRefCounts.get(port) || 0;
261
- }
262
- /**
263
- * Increment the reference count for a port
264
- *
265
- * @param port The port number to increment
266
- * @returns The new reference count
267
- */
268
- incrementPortRefCount(port) {
269
- const currentCount = this.portRefCounts.get(port) || 0;
270
- const newCount = currentCount + 1;
271
- this.portRefCounts.set(port, newCount);
272
- logger.log('debug', `Port ${port} reference count increased to ${newCount}`, {
273
- port,
274
- refCount: newCount,
275
- component: 'port-manager'
276
- });
277
- return newCount;
278
- }
279
- /**
280
- * Decrement the reference count for a port
281
- *
282
- * @param port The port number to decrement
283
- * @returns The new reference count
284
- */
285
- decrementPortRefCount(port) {
286
- const currentCount = this.portRefCounts.get(port) || 0;
287
- if (currentCount <= 0) {
288
- logger.log('warn', `Attempted to decrement reference count for port ${port} below zero`, {
289
- port,
290
- component: 'port-manager'
291
- });
292
- return 0;
293
- }
294
- const newCount = currentCount - 1;
295
- this.portRefCounts.set(port, newCount);
296
- logger.log('debug', `Port ${port} reference count decreased to ${newCount}`, {
297
- port,
298
- refCount: newCount,
299
- component: 'port-manager'
300
- });
301
- return newCount;
302
- }
303
- /**
304
- * Determine if a port binding error is due to an external or internal conflict
305
- *
306
- * @param error The error object from a failed port binding
307
- * @returns Object indicating if this is a conflict and if it's external
308
- */
309
- isPortConflict(error) {
310
- if (error.code !== 'EADDRINUSE') {
311
- return { isConflict: false, isExternal: false };
312
- }
313
- // Check if we already have this port
314
- const isBoundInternally = this.servers.has(Number(error.port));
315
- return { isConflict: true, isExternal: !isBoundInternally };
316
- }
317
- }
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydC1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvcHJveGllcy9zbWFydC1wcm94eS9wb3J0LW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR2pFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBTXRCOzs7O09BSUc7SUFDSCxZQUNVLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFYeEIsWUFBTyxHQUFvQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ3hDLDRDQUE0QztRQUNwQyxrQkFBYSxHQUF3QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBU3BELENBQUM7SUFFSjs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBWTtRQUMvQixnREFBZ0Q7UUFDaEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNCLDREQUE0RDtZQUM1RCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDO2dCQUNILE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLHFCQUFxQixJQUFJLGtEQUFrRCxFQUFFO29CQUMvRixJQUFJO29CQUNKLFNBQVMsRUFBRSxjQUFjO2lCQUMxQixDQUFDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixJQUFJLGtEQUFrRCxDQUFDLENBQUM7WUFDbkcsQ0FBQztZQUNELE9BQU87UUFDVCxD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
@@ -1,60 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- import type { IConnectionRecord } from './models/interfaces.js';
3
- import type { SmartProxy } from './smart-proxy.js';
4
- /**
5
- * Handles new connection processing and setup logic with support for route-based configuration
6
- */
7
- export declare class RouteConnectionHandler {
8
- private smartProxy;
9
- newConnectionSubject: plugins.smartrx.rxjs.Subject<IConnectionRecord>;
10
- constructor(smartProxy: SmartProxy);
11
- /**
12
- * Create a route context object for port and host mapping functions
13
- */
14
- private createRouteContext;
15
- /**
16
- * Determines if SNI is required for routing decisions on this port.
17
- *
18
- * SNI is REQUIRED when:
19
- * - Multiple routes exist on this port (need SNI to pick correct route)
20
- * - Route has dynamic target function (needs ctx.domain)
21
- * - Route has specific domain restriction (strict validation)
22
- *
23
- * SNI is NOT required when:
24
- * - TLS termination mode (HttpProxy handles session resumption)
25
- * - Single route with static target and no domain restriction (or wildcard)
26
- */
27
- private calculateSniRequirement;
28
- /**
29
- * Check if domains config is wildcard-only (matches everything)
30
- */
31
- private isWildcardOnly;
32
- /**
33
- * Handle a new incoming connection
34
- */
35
- handleConnection(socket: plugins.net.Socket): void;
36
- /**
37
- * Handle initial data from a connection to determine routing
38
- */
39
- private handleInitialData;
40
- /**
41
- * Route the connection based on match criteria
42
- */
43
- private routeConnection;
44
- /**
45
- * Select the appropriate target from the targets array based on sub-matching criteria
46
- */
47
- private selectTarget;
48
- /**
49
- * Handle a forward action for a route
50
- */
51
- private handleForwardAction;
52
- /**
53
- * Handle a socket-handler action for a route
54
- */
55
- private handleSocketHandlerAction;
56
- /**
57
- * Sets up a direct connection to the target
58
- */
59
- private setupDirectConnection;
60
- }