bdy 1.19.5-dev → 1.19.6-dev
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/distTs/package.json +1 -1
- package/distTs/src/tunnel/http.js +32 -63
- package/distTs/src/tunnel/tcp.js +5 -1
- package/package.json +1 -1
package/distTs/package.json
CHANGED
|
@@ -8,6 +8,7 @@ const uuid_1 = require("uuid");
|
|
|
8
8
|
const http_1 = __importDefault(require("http"));
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
10
|
const stream_1 = __importDefault(require("stream"));
|
|
11
|
+
const node_stream_1 = require("node:stream");
|
|
11
12
|
const texts_1 = require("../texts");
|
|
12
13
|
const logger_1 = __importDefault(require("../logger"));
|
|
13
14
|
const serve_1 = __importDefault(require("./http/serve"));
|
|
@@ -236,28 +237,15 @@ class TunnelHttp extends events_1.default {
|
|
|
236
237
|
r.on('upgrade', (proxyRes, socket, head) => this.upgrade(proxyRes, socket, head));
|
|
237
238
|
r.on('response', (proxyRes) => {
|
|
238
239
|
this.proxyRes = proxyRes;
|
|
239
|
-
this.proxyRes.on('error', () => {
|
|
240
|
-
try {
|
|
241
|
-
this.res.end();
|
|
242
|
-
}
|
|
243
|
-
catch {
|
|
244
|
-
// do nothing
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
240
|
const statusCode = this.proxyRes.statusCode;
|
|
248
241
|
const resHeaders = this.proxyRes.headers;
|
|
249
242
|
const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
|
|
250
243
|
this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
|
|
251
244
|
if (this.logRequest) {
|
|
252
|
-
this.proxyRes
|
|
253
|
-
.pipe(this.logRequest.responseBody)
|
|
254
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
255
|
-
.pipe(this.res);
|
|
245
|
+
(0, node_stream_1.pipeline)(this.proxyRes, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
256
246
|
}
|
|
257
247
|
else {
|
|
258
|
-
this.proxyRes
|
|
259
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
260
|
-
.pipe(this.res);
|
|
248
|
+
(0, node_stream_1.pipeline)(this.proxyRes, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
261
249
|
}
|
|
262
250
|
if (this.httpLog) {
|
|
263
251
|
this.httpLog.newResponse(statusCode, resHeaders, this.logRequest);
|
|
@@ -291,28 +279,15 @@ class TunnelHttp extends events_1.default {
|
|
|
291
279
|
r.on('upgrade', (proxyRes, socket, head) => this.upgrade(proxyRes, socket, head));
|
|
292
280
|
r.on('response', (proxyRes) => {
|
|
293
281
|
this.proxyRes = proxyRes;
|
|
294
|
-
this.proxyRes.on('error', () => {
|
|
295
|
-
try {
|
|
296
|
-
this.res.end();
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
// do nothing
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
282
|
const statusCode = this.proxyRes.statusCode;
|
|
303
283
|
const resHeaders = this.proxyRes.headers;
|
|
304
284
|
const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
|
|
305
285
|
this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
|
|
306
286
|
if (this.logRequest) {
|
|
307
|
-
this.proxyRes
|
|
308
|
-
.pipe(this.logRequest.responseBody)
|
|
309
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
310
|
-
.pipe(this.res);
|
|
287
|
+
(0, node_stream_1.pipeline)(this.proxyRes, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
311
288
|
}
|
|
312
289
|
else {
|
|
313
|
-
this.proxyRes
|
|
314
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
315
|
-
.pipe(this.res);
|
|
290
|
+
(0, node_stream_1.pipeline)(this.proxyRes, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
316
291
|
}
|
|
317
292
|
if (this.httpLog) {
|
|
318
293
|
this.httpLog.newResponse(statusCode, resHeaders, this.logRequest);
|
|
@@ -337,15 +312,10 @@ class TunnelHttp extends events_1.default {
|
|
|
337
312
|
const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
|
|
338
313
|
this.outputHeaders(statusCode, this.getClearedHeaders(resHeaders, compressionMethod));
|
|
339
314
|
if (this.logRequest) {
|
|
340
|
-
stream
|
|
341
|
-
.pipe(this.logRequest.responseBody)
|
|
342
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
343
|
-
.pipe(this.res);
|
|
315
|
+
(0, node_stream_1.pipeline)(stream, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
344
316
|
}
|
|
345
317
|
else {
|
|
346
|
-
stream
|
|
347
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
348
|
-
.pipe(this.res);
|
|
318
|
+
(0, node_stream_1.pipeline)(stream, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
349
319
|
}
|
|
350
320
|
}
|
|
351
321
|
if (this.httpLog) {
|
|
@@ -382,12 +352,10 @@ class TunnelHttp extends events_1.default {
|
|
|
382
352
|
const compressionMethod = compression_1.default.detect(this.compression || false, reqHeaders, resHeaders);
|
|
383
353
|
this.outputHeaders(status, this.getClearedHeaders(resHeaders, compressionMethod));
|
|
384
354
|
if (this.logRequest) {
|
|
385
|
-
|
|
386
|
-
.pipe(compression_1.default.compress(compressionMethod))
|
|
387
|
-
.pipe(this.res);
|
|
355
|
+
(0, node_stream_1.pipeline)(r, this.logRequest.responseBody, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
388
356
|
}
|
|
389
357
|
else {
|
|
390
|
-
|
|
358
|
+
(0, node_stream_1.pipeline)(r, compression_1.default.compress(compressionMethod), this.res, () => { this.clear(); });
|
|
391
359
|
}
|
|
392
360
|
if (this.httpLog) {
|
|
393
361
|
this.httpLog.newResponse(status, resHeaders, this.logRequest);
|
|
@@ -452,7 +420,11 @@ class TunnelHttp extends events_1.default {
|
|
|
452
420
|
msg += '\r\n';
|
|
453
421
|
reqSocket.removeAllListeners();
|
|
454
422
|
socket.removeAllListeners();
|
|
423
|
+
let cleaned = false;
|
|
455
424
|
const cleanup = () => {
|
|
425
|
+
if (cleaned)
|
|
426
|
+
return;
|
|
427
|
+
cleaned = true;
|
|
456
428
|
try {
|
|
457
429
|
socket.removeAllListeners();
|
|
458
430
|
socket.destroy();
|
|
@@ -469,15 +441,21 @@ class TunnelHttp extends events_1.default {
|
|
|
469
441
|
}
|
|
470
442
|
this.emit(tunnel_1.TUNNEL_HTTP_SOCKET.CLOSED, reqSocket);
|
|
471
443
|
};
|
|
472
|
-
reqSocket.on('close', cleanup);
|
|
473
|
-
reqSocket.on('error', cleanup);
|
|
474
|
-
socket.on('close', cleanup);
|
|
475
|
-
socket.on('error', cleanup);
|
|
476
444
|
if (head && head.length) {
|
|
477
445
|
socket.unshift(head);
|
|
478
446
|
}
|
|
447
|
+
let failed = false;
|
|
448
|
+
const onWriteError = () => {
|
|
449
|
+
failed = true;
|
|
450
|
+
cleanup();
|
|
451
|
+
};
|
|
452
|
+
reqSocket.on('error', onWriteError);
|
|
479
453
|
reqSocket.write(msg);
|
|
480
|
-
reqSocket.
|
|
454
|
+
reqSocket.off('error', onWriteError);
|
|
455
|
+
if (failed)
|
|
456
|
+
return;
|
|
457
|
+
(0, node_stream_1.pipeline)(reqSocket, socket, cleanup);
|
|
458
|
+
(0, node_stream_1.pipeline)(socket, reqSocket, cleanup);
|
|
481
459
|
}
|
|
482
460
|
async pipe() {
|
|
483
461
|
if (this.serve) {
|
|
@@ -493,11 +471,6 @@ class TunnelHttp extends events_1.default {
|
|
|
493
471
|
this.proxyReq.on('error', () => {
|
|
494
472
|
this.output504();
|
|
495
473
|
});
|
|
496
|
-
this.proxyReq.on('close', () => {
|
|
497
|
-
setTimeout(() => {
|
|
498
|
-
this.clear();
|
|
499
|
-
}, 5000);
|
|
500
|
-
});
|
|
501
474
|
this.proxyReq.process(this.req);
|
|
502
475
|
}
|
|
503
476
|
else {
|
|
@@ -523,21 +496,17 @@ class TunnelHttp extends events_1.default {
|
|
|
523
496
|
this.proxyReq.on('timeout', () => {
|
|
524
497
|
this.output504();
|
|
525
498
|
});
|
|
526
|
-
this.proxyReq.on('error', (err) => {
|
|
527
|
-
logger_1.default.debug(texts_1.LOG_ERROR);
|
|
528
|
-
logger_1.default.debug(err);
|
|
529
|
-
this.output504();
|
|
530
|
-
});
|
|
531
|
-
this.proxyReq.on('close', () => {
|
|
532
|
-
setTimeout(() => {
|
|
533
|
-
this.clear();
|
|
534
|
-
}, 5000);
|
|
535
|
-
});
|
|
536
499
|
if (this.logRequest) {
|
|
537
|
-
this.req
|
|
500
|
+
(0, node_stream_1.pipeline)(this.req, this.logRequest.requestBody, this.proxyReq, (err) => {
|
|
501
|
+
if (err)
|
|
502
|
+
this.output504();
|
|
503
|
+
});
|
|
538
504
|
}
|
|
539
505
|
else {
|
|
540
|
-
this.req
|
|
506
|
+
(0, node_stream_1.pipeline)(this.req, this.proxyReq, (err) => {
|
|
507
|
+
if (err)
|
|
508
|
+
this.output504();
|
|
509
|
+
});
|
|
541
510
|
}
|
|
542
511
|
}
|
|
543
512
|
}
|
package/distTs/src/tunnel/tcp.js
CHANGED
|
@@ -7,6 +7,7 @@ const net_1 = require("net");
|
|
|
7
7
|
const uuid_1 = require("uuid");
|
|
8
8
|
const events_1 = __importDefault(require("events"));
|
|
9
9
|
const utils_1 = require("../utils");
|
|
10
|
+
const node_stream_1 = require("node:stream");
|
|
10
11
|
const tunnel_1 = require("../types/tunnel");
|
|
11
12
|
class TunnelTcp extends events_1.default {
|
|
12
13
|
id;
|
|
@@ -23,6 +24,8 @@ class TunnelTcp extends events_1.default {
|
|
|
23
24
|
this.socket = new net_1.Socket();
|
|
24
25
|
}
|
|
25
26
|
end() {
|
|
27
|
+
if (!this.stream && !this.socket)
|
|
28
|
+
return;
|
|
26
29
|
try {
|
|
27
30
|
if (this.stream)
|
|
28
31
|
this.stream.unpipe();
|
|
@@ -107,7 +110,8 @@ class TunnelTcp extends events_1.default {
|
|
|
107
110
|
this.socket.setTimeout(0);
|
|
108
111
|
}
|
|
109
112
|
if (this.socket && this.stream) {
|
|
110
|
-
this.socket
|
|
113
|
+
(0, node_stream_1.pipeline)(this.socket, this.stream, () => { this.end(); });
|
|
114
|
+
(0, node_stream_1.pipeline)(this.stream, this.socket, () => { this.end(); });
|
|
111
115
|
}
|
|
112
116
|
});
|
|
113
117
|
}
|