@push.rocks/smartproxy 25.12.0 → 25.13.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.
- package/changelog.md +9 -0
- package/dist_rust/rustproxy_linux_amd64 +0 -0
- package/dist_rust/rustproxy_linux_arm64 +0 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/proxies/smart-proxy/datagram-handler-server.d.ts +46 -0
- package/dist_ts/proxies/smart-proxy/datagram-handler-server.js +197 -0
- package/dist_ts/proxies/smart-proxy/models/metrics-types.d.ts +6 -0
- package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +63 -4
- package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
- package/dist_ts/proxies/smart-proxy/route-preprocessor.js +7 -2
- package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.d.ts +6 -0
- package/dist_ts/proxies/smart-proxy/rust-metrics-adapter.js +7 -1
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +1 -0
- package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +4 -1
- package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +1 -0
- package/dist_ts/proxies/smart-proxy/smart-proxy.js +19 -1
- package/package.json +1 -1
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/proxies/smart-proxy/datagram-handler-server.ts +239 -0
- package/ts/proxies/smart-proxy/models/metrics-types.ts +8 -0
- package/ts/proxies/smart-proxy/models/route-types.ts +83 -5
- package/ts/proxies/smart-proxy/route-preprocessor.ts +7 -1
- package/ts/proxies/smart-proxy/rust-metrics-adapter.ts +7 -0
- package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +5 -0
- package/ts/proxies/smart-proxy/smart-proxy.ts +23 -0
|
@@ -5,6 +5,7 @@ import { logger } from '../../core/utils/logger.js';
|
|
|
5
5
|
import { RustProxyBridge } from './rust-proxy-bridge.js';
|
|
6
6
|
import { RoutePreprocessor } from './route-preprocessor.js';
|
|
7
7
|
import { SocketHandlerServer } from './socket-handler-server.js';
|
|
8
|
+
import { DatagramHandlerServer } from './datagram-handler-server.js';
|
|
8
9
|
import { RustMetricsAdapter } from './rust-metrics-adapter.js';
|
|
9
10
|
|
|
10
11
|
// Route management
|
|
@@ -36,6 +37,7 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
36
37
|
private bridge: RustProxyBridge;
|
|
37
38
|
private preprocessor: RoutePreprocessor;
|
|
38
39
|
private socketHandlerServer: SocketHandlerServer | null = null;
|
|
40
|
+
private datagramHandlerServer: DatagramHandlerServer | null = null;
|
|
39
41
|
private metricsAdapter: RustMetricsAdapter;
|
|
40
42
|
private routeUpdateLock: Mutex;
|
|
41
43
|
private stopping = false;
|
|
@@ -145,6 +147,16 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
145
147
|
await this.socketHandlerServer.start();
|
|
146
148
|
}
|
|
147
149
|
|
|
150
|
+
// Check if any routes need datagram handler relay (UDP socket-handler routes)
|
|
151
|
+
const hasDatagramHandlers = this.settings.routes.some(
|
|
152
|
+
(r) => r.action.type === 'socket-handler' && r.action.datagramHandler
|
|
153
|
+
);
|
|
154
|
+
if (hasDatagramHandlers) {
|
|
155
|
+
const dgPath = `/tmp/smartproxy-dgram-relay-${process.pid}.sock`;
|
|
156
|
+
this.datagramHandlerServer = new DatagramHandlerServer(dgPath, this.preprocessor);
|
|
157
|
+
await this.datagramHandlerServer.start();
|
|
158
|
+
}
|
|
159
|
+
|
|
148
160
|
// Preprocess routes (strip JS functions, convert socket-handler routes)
|
|
149
161
|
const rustRoutes = this.preprocessor.preprocessForRust(this.settings.routes);
|
|
150
162
|
|
|
@@ -167,6 +179,11 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
167
179
|
await this.bridge.setSocketHandlerRelay(this.socketHandlerServer.getSocketPath());
|
|
168
180
|
}
|
|
169
181
|
|
|
182
|
+
// Configure datagram handler relay
|
|
183
|
+
if (this.datagramHandlerServer) {
|
|
184
|
+
await this.bridge.setDatagramHandlerRelay(this.datagramHandlerServer.getSocketPath());
|
|
185
|
+
}
|
|
186
|
+
|
|
170
187
|
// Load default self-signed fallback certificate (domain: '*')
|
|
171
188
|
if (!this.settings.disableDefaultCert) {
|
|
172
189
|
try {
|
|
@@ -240,6 +257,12 @@ export class SmartProxy extends plugins.EventEmitter {
|
|
|
240
257
|
this.socketHandlerServer = null;
|
|
241
258
|
}
|
|
242
259
|
|
|
260
|
+
// Stop datagram handler relay
|
|
261
|
+
if (this.datagramHandlerServer) {
|
|
262
|
+
await this.datagramHandlerServer.stop();
|
|
263
|
+
this.datagramHandlerServer = null;
|
|
264
|
+
}
|
|
265
|
+
|
|
243
266
|
logger.log('info', 'SmartProxy shutdown complete.', { component: 'smart-proxy' });
|
|
244
267
|
}
|
|
245
268
|
|