@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.
@@ -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