socks 2.1.2 → 2.1.6
Sign up to get free protection for your applications and to get access to all the features.
- package/build/client/socksclient.js +178 -127
- package/build/client/socksclient.js.map +1 -1
- package/build/common/constants.js +12 -0
- package/build/common/constants.js.map +1 -1
- package/build/common/receivebuffer.js +42 -0
- package/build/common/receivebuffer.js.map +1 -0
- package/package.json +1 -1
- package/typings/client/socksclient.d.ts +12 -7
- package/typings/common/constants.d.ts +10 -1
- package/typings/common/receiveBuffer.d.ts +12 -0
@@ -14,6 +14,7 @@ const ip = require("ip");
|
|
14
14
|
const smart_buffer_1 = require("smart-buffer");
|
15
15
|
const constants_1 = require("../common/constants");
|
16
16
|
const helpers_1 = require("../common/helpers");
|
17
|
+
const receivebuffer_1 = require("../common/receivebuffer");
|
17
18
|
const util_1 = require("../common/util");
|
18
19
|
class SocksClient extends events_1.EventEmitter {
|
19
20
|
constructor(options) {
|
@@ -215,14 +216,23 @@ class SocksClient extends events_1.EventEmitter {
|
|
215
216
|
this._socket.once('connect', this._onConnect);
|
216
217
|
this._socket.on('data', this._onDataReceived);
|
217
218
|
this.state = constants_1.SocksClientState.Connecting;
|
219
|
+
this._receiveBuffer = new receivebuffer_1.ReceiveBuffer();
|
218
220
|
if (existing_socket) {
|
219
221
|
this._socket.emit('connect');
|
220
222
|
}
|
221
223
|
else {
|
222
224
|
this._socket.connect(this._options.proxy.port, this._options.proxy.ipaddress);
|
223
225
|
}
|
224
|
-
//
|
225
|
-
this.
|
226
|
+
// Listen for established event so we can re-emit any excess data received during handshakes.
|
227
|
+
this.prependOnceListener('established', info => {
|
228
|
+
setImmediate(() => {
|
229
|
+
if (this._receiveBuffer.length > 0) {
|
230
|
+
const excessData = this._receiveBuffer.get(this._receiveBuffer.length);
|
231
|
+
info.socket.emit('data', excessData);
|
232
|
+
}
|
233
|
+
info.socket.resume();
|
234
|
+
});
|
235
|
+
});
|
226
236
|
}
|
227
237
|
/**
|
228
238
|
* Handles internal Socks timeout callback.
|
@@ -253,37 +263,55 @@ class SocksClient extends events_1.EventEmitter {
|
|
253
263
|
* @param data
|
254
264
|
*/
|
255
265
|
onDataReceived(data) {
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
266
|
+
/*
|
267
|
+
All received data is appended to a ReceiveBuffer.
|
268
|
+
This makes sure that all the data we need is received before we attempt to process it.
|
269
|
+
*/
|
270
|
+
this._receiveBuffer.append(data);
|
271
|
+
// Process data that we have.
|
272
|
+
this.processData();
|
273
|
+
}
|
274
|
+
/**
|
275
|
+
* Handles processing of the data we have received.
|
276
|
+
*/
|
277
|
+
processData() {
|
278
|
+
// If we have enough data to process the next step in the SOCKS handshake, proceed.
|
279
|
+
if (this._receiveBuffer.length >= this._nextRequiredPacketBufferSize) {
|
280
|
+
// Sent initial handshake, waiting for response.
|
281
|
+
if (this.state === constants_1.SocksClientState.SentInitialHandshake) {
|
282
|
+
if (this._options.proxy.type === 4) {
|
283
|
+
// Socks v4 only has one handshake response.
|
284
|
+
this.handleSocks4FinalHandshakeResponse();
|
285
|
+
}
|
286
|
+
else {
|
287
|
+
// Socks v5 has two handshakes, handle initial one here.
|
288
|
+
this.handleInitialSocks5HandshakeResponse();
|
289
|
+
}
|
290
|
+
// Sent auth request for Socks v5, waiting for response.
|
261
291
|
}
|
262
|
-
else {
|
263
|
-
|
264
|
-
|
292
|
+
else if (this.state === constants_1.SocksClientState.SentAuthentication) {
|
293
|
+
this.handleInitialSocks5AuthenticationHandshakeResponse();
|
294
|
+
// Sent final Socks v5 handshake, waiting for final response.
|
265
295
|
}
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
296
|
+
else if (this.state === constants_1.SocksClientState.SentFinalHandshake) {
|
297
|
+
this.handleSocks5FinalHandshakeResponse();
|
298
|
+
// Socks BIND established. Waiting for remote connection via proxy.
|
299
|
+
}
|
300
|
+
else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) {
|
301
|
+
if (this._options.proxy.type === 4) {
|
302
|
+
this.handleSocks4IncomingConnectionResponse();
|
303
|
+
}
|
304
|
+
else {
|
305
|
+
this.handleSocks5IncomingConnectionResponse();
|
306
|
+
}
|
307
|
+
}
|
308
|
+
else if (this.state === constants_1.SocksClientState.Established) {
|
309
|
+
// do nothing (prevents closing of the socket)
|
279
310
|
}
|
280
311
|
else {
|
281
|
-
this.
|
312
|
+
this._closeSocket(constants_1.ERRORS.InternalError);
|
282
313
|
}
|
283
314
|
}
|
284
|
-
else {
|
285
|
-
this._closeSocket(constants_1.ERRORS.InternalError);
|
286
|
-
}
|
287
315
|
}
|
288
316
|
/**
|
289
317
|
* Handles Socket close event.
|
@@ -303,6 +331,8 @@ class SocksClient extends events_1.EventEmitter {
|
|
303
331
|
* Removes internal event listeners on the underlying Socket.
|
304
332
|
*/
|
305
333
|
removeInternalSocketHandlers() {
|
334
|
+
// Pauses data flow of the socket (this is internally resumed after 'established' is emitted)
|
335
|
+
this._socket.pause();
|
306
336
|
this._socket.removeListener('data', this._onDataReceived);
|
307
337
|
this._socket.removeListener('close', this._onClose);
|
308
338
|
this._socket.removeListener('error', this._onError);
|
@@ -350,18 +380,17 @@ class SocksClient extends events_1.EventEmitter {
|
|
350
380
|
buff.writeStringNT(userId);
|
351
381
|
buff.writeStringNT(this._options.destination.host);
|
352
382
|
}
|
383
|
+
this._nextRequiredPacketBufferSize =
|
384
|
+
constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response;
|
353
385
|
this._socket.write(buff.toBuffer());
|
354
386
|
}
|
355
387
|
/**
|
356
388
|
* Handles Socks v4 handshake response.
|
357
389
|
* @param data
|
358
390
|
*/
|
359
|
-
handleSocks4FinalHandshakeResponse(
|
360
|
-
|
361
|
-
|
362
|
-
this._closeSocket(constants_1.ERRORS.InvalidSocks4HandshakeResponse);
|
363
|
-
}
|
364
|
-
else if (data[1] !== constants_1.Socks4Response.Granted) {
|
391
|
+
handleSocks4FinalHandshakeResponse() {
|
392
|
+
const data = this._receiveBuffer.get(8);
|
393
|
+
if (data[1] !== constants_1.Socks4Response.Granted) {
|
365
394
|
this._closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`);
|
366
395
|
}
|
367
396
|
else {
|
@@ -383,6 +412,7 @@ class SocksClient extends events_1.EventEmitter {
|
|
383
412
|
}
|
384
413
|
else {
|
385
414
|
this.state = constants_1.SocksClientState.Established;
|
415
|
+
this.removeInternalSocketHandlers();
|
386
416
|
this.emit('established', { socket: this._socket });
|
387
417
|
}
|
388
418
|
}
|
@@ -391,12 +421,9 @@ class SocksClient extends events_1.EventEmitter {
|
|
391
421
|
* Handles Socks v4 incoming connection request (BIND)
|
392
422
|
* @param data
|
393
423
|
*/
|
394
|
-
handleSocks4IncomingConnectionResponse(
|
395
|
-
|
396
|
-
|
397
|
-
this._closeSocket(constants_1.ERRORS.InvalidSocks4IncomingConnectionResponse);
|
398
|
-
}
|
399
|
-
else if (data[1] !== constants_1.Socks4Response.Granted) {
|
424
|
+
handleSocks4IncomingConnectionResponse() {
|
425
|
+
const data = this._receiveBuffer.get(8);
|
426
|
+
if (data[1] !== constants_1.Socks4Response.Granted) {
|
400
427
|
this._closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`);
|
401
428
|
}
|
402
429
|
else {
|
@@ -407,6 +434,7 @@ class SocksClient extends events_1.EventEmitter {
|
|
407
434
|
host: ip.fromLong(buff.readUInt32BE())
|
408
435
|
};
|
409
436
|
this.state = constants_1.SocksClientState.Established;
|
437
|
+
this.removeInternalSocketHandlers();
|
410
438
|
this.emit('established', { socket: this._socket, remoteHost });
|
411
439
|
}
|
412
440
|
}
|
@@ -419,6 +447,8 @@ class SocksClient extends events_1.EventEmitter {
|
|
419
447
|
buff.writeUInt8(2);
|
420
448
|
buff.writeUInt8(constants_1.Socks5Auth.NoAuth);
|
421
449
|
buff.writeUInt8(constants_1.Socks5Auth.UserPass);
|
450
|
+
this._nextRequiredPacketBufferSize =
|
451
|
+
constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse;
|
422
452
|
this._socket.write(buff.toBuffer());
|
423
453
|
this.state = constants_1.SocksClientState.SentInitialHandshake;
|
424
454
|
}
|
@@ -426,12 +456,9 @@ class SocksClient extends events_1.EventEmitter {
|
|
426
456
|
* Handles initial Socks v5 handshake response.
|
427
457
|
* @param data
|
428
458
|
*/
|
429
|
-
handleInitialSocks5HandshakeResponse(
|
430
|
-
|
431
|
-
|
432
|
-
this._closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeResponse);
|
433
|
-
}
|
434
|
-
else if (data[0] !== 0x05) {
|
459
|
+
handleInitialSocks5HandshakeResponse() {
|
460
|
+
const data = this._receiveBuffer.get(2);
|
461
|
+
if (data[0] !== 0x05) {
|
435
462
|
this._closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion);
|
436
463
|
}
|
437
464
|
else if (data[1] === 0xff) {
|
@@ -465,6 +492,8 @@ class SocksClient extends events_1.EventEmitter {
|
|
465
492
|
buff.writeString(userId);
|
466
493
|
buff.writeUInt8(Buffer.byteLength(password));
|
467
494
|
buff.writeString(password);
|
495
|
+
this._nextRequiredPacketBufferSize =
|
496
|
+
constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse;
|
468
497
|
this._socket.write(buff.toBuffer());
|
469
498
|
this.state = constants_1.SocksClientState.SentAuthentication;
|
470
499
|
}
|
@@ -472,9 +501,10 @@ class SocksClient extends events_1.EventEmitter {
|
|
472
501
|
* Handles Socks v5 auth handshake response.
|
473
502
|
* @param data
|
474
503
|
*/
|
475
|
-
handleInitialSocks5AuthenticationHandshakeResponse(
|
504
|
+
handleInitialSocks5AuthenticationHandshakeResponse() {
|
476
505
|
this.state = constants_1.SocksClientState.ReceivedAuthenticationResponse;
|
477
|
-
|
506
|
+
const data = this._receiveBuffer.get(2);
|
507
|
+
if (data[1] !== 0x00) {
|
478
508
|
this._closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed);
|
479
509
|
}
|
480
510
|
else {
|
@@ -504,6 +534,8 @@ class SocksClient extends events_1.EventEmitter {
|
|
504
534
|
buff.writeString(this._options.destination.host);
|
505
535
|
}
|
506
536
|
buff.writeUInt16BE(this._options.destination.port);
|
537
|
+
this._nextRequiredPacketBufferSize =
|
538
|
+
constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader;
|
507
539
|
this._socket.write(buff.toBuffer());
|
508
540
|
this.state = constants_1.SocksClientState.SentFinalHandshake;
|
509
541
|
}
|
@@ -511,104 +543,115 @@ class SocksClient extends events_1.EventEmitter {
|
|
511
543
|
* Handles Socks v5 final handshake response.
|
512
544
|
* @param data
|
513
545
|
*/
|
514
|
-
handleSocks5FinalHandshakeResponse(
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
else if (data[0] !== 0x05 || data[1] !== constants_1.Socks5Response.Granted) {
|
520
|
-
this._closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[data[1]]}`);
|
546
|
+
handleSocks5FinalHandshakeResponse() {
|
547
|
+
// Peek at available data (we need at least 5 bytes to get the hostname length)
|
548
|
+
const header = this._receiveBuffer.peek(5);
|
549
|
+
if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) {
|
550
|
+
this._closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`);
|
521
551
|
}
|
522
552
|
else {
|
553
|
+
// Read address type
|
554
|
+
const addressType = header[3];
|
555
|
+
let remoteHost;
|
556
|
+
let buff;
|
557
|
+
// IPv4
|
558
|
+
if (addressType === constants_1.Socks5HostType.IPv4) {
|
559
|
+
// Check if data is available.
|
560
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4;
|
561
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
562
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
563
|
+
return;
|
564
|
+
}
|
565
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(4));
|
566
|
+
remoteHost = {
|
567
|
+
host: ip.fromLong(buff.readUInt32BE()),
|
568
|
+
port: buff.readUInt16BE()
|
569
|
+
};
|
570
|
+
// If given host is 0.0.0.0, assume remote proxy ip instead.
|
571
|
+
if (remoteHost.host === '0.0.0.0') {
|
572
|
+
remoteHost.host = this._options.proxy.ipaddress;
|
573
|
+
}
|
574
|
+
// Hostname
|
575
|
+
}
|
576
|
+
else if (addressType === constants_1.Socks5HostType.Hostname) {
|
577
|
+
const hostLength = header[4];
|
578
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + host + port
|
579
|
+
// Check if data is available.
|
580
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
581
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
582
|
+
return;
|
583
|
+
}
|
584
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(5) // Slice at 5 to skip host length
|
585
|
+
);
|
586
|
+
remoteHost = {
|
587
|
+
host: buff.readString(hostLength),
|
588
|
+
port: buff.readUInt16BE()
|
589
|
+
};
|
590
|
+
// IPv6
|
591
|
+
}
|
592
|
+
else if (addressType === constants_1.Socks5HostType.IPv6) {
|
593
|
+
// Check if data is available.
|
594
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6;
|
595
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
596
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
597
|
+
return;
|
598
|
+
}
|
599
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(4));
|
600
|
+
remoteHost = {
|
601
|
+
host: ip.toString(buff.readBuffer(16)),
|
602
|
+
port: buff.readUInt16BE()
|
603
|
+
};
|
604
|
+
}
|
605
|
+
// We have everything we need
|
523
606
|
this.state = constants_1.SocksClientState.ReceivedFinalResponse;
|
607
|
+
// If using CONNECT, the client is now in the established state.
|
524
608
|
if (constants_1.SocksCommand[this._options.command] === constants_1.SocksCommand.connect) {
|
525
609
|
this.state = constants_1.SocksClientState.Established;
|
610
|
+
this.removeInternalSocketHandlers();
|
526
611
|
this.emit('established', { socket: this._socket });
|
527
612
|
}
|
528
|
-
else {
|
529
|
-
// Read address type
|
530
|
-
const buff = smart_buffer_1.SmartBuffer.fromBuffer(data);
|
531
|
-
buff.readOffset = 3;
|
532
|
-
const addressType = buff.readUInt8();
|
533
|
-
let remoteHost;
|
534
|
-
// IPv4
|
535
|
-
if (addressType === constants_1.Socks5HostType.IPv4) {
|
536
|
-
// Check if data is available.
|
537
|
-
if (data.length < 10) {
|
538
|
-
return this._closeSocket(constants_1.ERRORS.InvalidSocks5FinalHandshake);
|
539
|
-
}
|
540
|
-
remoteHost = {
|
541
|
-
host: ip.fromLong(buff.readUInt32BE()),
|
542
|
-
port: buff.readUInt16BE()
|
543
|
-
};
|
544
|
-
// If given host is 0.0.0.0, assume remote proxy ip instead.
|
545
|
-
if (remoteHost.host === '0.0.0.0') {
|
546
|
-
remoteHost.host = this._options.proxy.ipaddress;
|
547
|
-
}
|
548
|
-
// Hostname
|
549
|
-
}
|
550
|
-
else if (addressType === constants_1.Socks5HostType.Hostname) {
|
551
|
-
const hostLength = buff.readUInt8();
|
552
|
-
// Check if data is available.
|
553
|
-
if (buff.length - 5 < hostLength) {
|
554
|
-
return this._closeSocket(constants_1.ERRORS.InvalidSocks5FinalHandshake);
|
555
|
-
}
|
556
|
-
remoteHost = {
|
557
|
-
host: buff.readString(hostLength),
|
558
|
-
port: buff.readUInt16BE()
|
559
|
-
};
|
560
|
-
// IPv6
|
561
|
-
}
|
562
|
-
else if (addressType === constants_1.Socks5HostType.IPv6) {
|
563
|
-
// Check if data is available.
|
564
|
-
if (buff.length < 24) {
|
565
|
-
return this._closeSocket(constants_1.ERRORS.InvalidSocks5FinalHandshake);
|
566
|
-
}
|
567
|
-
remoteHost = {
|
568
|
-
host: ip.toString(buff.readBuffer(16)),
|
569
|
-
port: buff.readUInt16BE()
|
570
|
-
};
|
571
|
-
}
|
613
|
+
else if (constants_1.SocksCommand[this._options.command] === constants_1.SocksCommand.bind) {
|
572
614
|
/* If using BIND, the Socks client is now in BoundWaitingForConnection state.
|
573
615
|
This means that the remote proxy server is waiting for a remote connection to the bound port. */
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
616
|
+
this.state = constants_1.SocksClientState.BoundWaitingForConnection;
|
617
|
+
this._nextRequiredPacketBufferSize =
|
618
|
+
constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader;
|
619
|
+
this.emit('bound', { socket: this._socket, remoteHost });
|
620
|
+
/*
|
621
|
+
If using Associate, the Socks client is now Established. And the proxy server is now accepting UDP packets at the
|
622
|
+
given bound port. This initial Socks TCP connection must remain open for the UDP relay to continue to work.
|
623
|
+
*/
|
624
|
+
}
|
625
|
+
else if (constants_1.SocksCommand[this._options.command] === constants_1.SocksCommand.associate) {
|
626
|
+
this.state = constants_1.SocksClientState.Established;
|
627
|
+
this.removeInternalSocketHandlers();
|
628
|
+
this.emit('established', { socket: this._socket, remoteHost });
|
586
629
|
}
|
587
630
|
}
|
588
631
|
}
|
589
632
|
/**
|
590
633
|
* Handles Socks v5 incoming connection request (BIND).
|
591
|
-
* @param data
|
592
634
|
*/
|
593
|
-
handleSocks5IncomingConnectionResponse(
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
this._closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[data[1]]}`);
|
635
|
+
handleSocks5IncomingConnectionResponse() {
|
636
|
+
// Peek at available data (we need at least 5 bytes to get the hostname length)
|
637
|
+
const header = this._receiveBuffer.peek(5);
|
638
|
+
if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) {
|
639
|
+
this._closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`);
|
599
640
|
}
|
600
641
|
else {
|
601
642
|
// Read address type
|
602
|
-
const
|
603
|
-
buff.readOffset = 3;
|
604
|
-
const addressType = buff.readUInt8();
|
643
|
+
const addressType = header[3];
|
605
644
|
let remoteHost;
|
645
|
+
let buff;
|
606
646
|
// IPv4
|
607
647
|
if (addressType === constants_1.Socks5HostType.IPv4) {
|
608
648
|
// Check if data is available.
|
609
|
-
|
610
|
-
|
649
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4;
|
650
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
651
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
652
|
+
return;
|
611
653
|
}
|
654
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(4));
|
612
655
|
remoteHost = {
|
613
656
|
host: ip.fromLong(buff.readUInt32BE()),
|
614
657
|
port: buff.readUInt16BE()
|
@@ -620,11 +663,15 @@ class SocksClient extends events_1.EventEmitter {
|
|
620
663
|
// Hostname
|
621
664
|
}
|
622
665
|
else if (addressType === constants_1.Socks5HostType.Hostname) {
|
623
|
-
const hostLength =
|
666
|
+
const hostLength = header[4];
|
667
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + port
|
624
668
|
// Check if data is available.
|
625
|
-
if (
|
626
|
-
|
669
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
670
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
671
|
+
return;
|
627
672
|
}
|
673
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(5) // Slice at 5 to skip host length
|
674
|
+
);
|
628
675
|
remoteHost = {
|
629
676
|
host: buff.readString(hostLength),
|
630
677
|
port: buff.readUInt16BE()
|
@@ -633,15 +680,19 @@ class SocksClient extends events_1.EventEmitter {
|
|
633
680
|
}
|
634
681
|
else if (addressType === constants_1.Socks5HostType.IPv6) {
|
635
682
|
// Check if data is available.
|
636
|
-
|
637
|
-
|
683
|
+
const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6;
|
684
|
+
if (this._receiveBuffer.length < dataNeeded) {
|
685
|
+
this._nextRequiredPacketBufferSize = dataNeeded;
|
686
|
+
return;
|
638
687
|
}
|
688
|
+
buff = smart_buffer_1.SmartBuffer.fromBuffer(this._receiveBuffer.get(dataNeeded).slice(4));
|
639
689
|
remoteHost = {
|
640
690
|
host: ip.toString(buff.readBuffer(16)),
|
641
691
|
port: buff.readUInt16BE()
|
642
692
|
};
|
643
693
|
}
|
644
694
|
this.state = constants_1.SocksClientState.Established;
|
695
|
+
this.removeInternalSocketHandlers();
|
645
696
|
this.emit('established', { socket: this._socket, remoteHost });
|
646
697
|
}
|
647
698
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":"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"}
|
@@ -31,6 +31,18 @@ const ERRORS = {
|
|
31
31
|
Socks5ProxyRejectedIncomingBoundConnection: 'Socks5 Proxy rejected incoming bound connection',
|
32
32
|
};
|
33
33
|
exports.ERRORS = ERRORS;
|
34
|
+
const SOCKS_INCOMING_PACKET_SIZES = {
|
35
|
+
Socks5InitialHandshakeResponse: 2,
|
36
|
+
Socks5UserPassAuthenticationResponse: 2,
|
37
|
+
// Command response + incoming connection (bind)
|
38
|
+
Socks5ResponseHeader: 5,
|
39
|
+
Socks5ResponseIPv4: 10,
|
40
|
+
Socks5ResponseIPv6: 22,
|
41
|
+
Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7,
|
42
|
+
// Command response + incoming connection (bind)
|
43
|
+
Socks4Response: 8 // 2 header + 2 port + 4 ip
|
44
|
+
};
|
45
|
+
exports.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES;
|
34
46
|
var SocksCommand;
|
35
47
|
(function (SocksCommand) {
|
36
48
|
SocksCommand[SocksCommand["connect"] = 1] = "connect";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;AAEA,MAAM,eAAe,GAAG,KAAK,CAAC;
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
class ReceiveBuffer {
|
4
|
+
constructor(size = 4096) {
|
5
|
+
this._buffer = Buffer.allocUnsafe(size);
|
6
|
+
this._offset = 0;
|
7
|
+
this._originalSize = size;
|
8
|
+
}
|
9
|
+
get length() {
|
10
|
+
return this._offset;
|
11
|
+
}
|
12
|
+
append(data) {
|
13
|
+
if (!Buffer.isBuffer(data)) {
|
14
|
+
throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.');
|
15
|
+
}
|
16
|
+
if (this._offset + data.length >= this._buffer.length) {
|
17
|
+
const tmp = this._buffer;
|
18
|
+
this._buffer = Buffer.allocUnsafe(Math.max(this._buffer.length + this._originalSize, this._buffer.length + data.length));
|
19
|
+
tmp.copy(this._buffer);
|
20
|
+
}
|
21
|
+
data.copy(this._buffer, this._offset);
|
22
|
+
return (this._offset += data.length);
|
23
|
+
}
|
24
|
+
peek(length) {
|
25
|
+
if (length > this._offset) {
|
26
|
+
throw new Error('Attempted to read beyond the bounds of the managed internal data.');
|
27
|
+
}
|
28
|
+
return this._buffer.slice(0, length);
|
29
|
+
}
|
30
|
+
get(length) {
|
31
|
+
if (length > this._offset) {
|
32
|
+
throw new Error('Attempted to read beyond the bounds of the managed internal data.');
|
33
|
+
}
|
34
|
+
const value = Buffer.allocUnsafe(length);
|
35
|
+
this._buffer.slice(0, length).copy(value);
|
36
|
+
this._buffer.copyWithin(0, length, length + this._offset - length);
|
37
|
+
this._offset -= length;
|
38
|
+
return value;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
exports.ReceiveBuffer = ReceiveBuffer;
|
42
|
+
//# sourceMappingURL=receivebuffer.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;AAAA;IAKE,YAAY,OAAe,IAAI;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACR,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAC/B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EACxC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAClC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;QAEvB,MAAM,CAAC,KAAK,CAAC;IACf,CAAC;CACF;AAEQ,sCAAa"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "socks",
|
3
3
|
"private": false,
|
4
|
-
"version": "2.1.
|
4
|
+
"version": "2.1.6",
|
5
5
|
"description": "Fully featured SOCKS proxy client supporting SOCKSv4, SOCKSv4a, and SOCKSv5. Includes Bind and Associate functionality.",
|
6
6
|
"main": "build/index.js",
|
7
7
|
"typings": "typings",
|
@@ -20,6 +20,8 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
20
20
|
private _options;
|
21
21
|
private _socket;
|
22
22
|
private _state;
|
23
|
+
private _receiveBuffer;
|
24
|
+
private _nextRequiredPacketBufferSize;
|
23
25
|
private _onDataReceived;
|
24
26
|
private _onClose;
|
25
27
|
private _onError;
|
@@ -80,6 +82,10 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
80
82
|
* @param data
|
81
83
|
*/
|
82
84
|
private onDataReceived(data);
|
85
|
+
/**
|
86
|
+
* Handles processing of the data we have received.
|
87
|
+
*/
|
88
|
+
private processData();
|
83
89
|
/**
|
84
90
|
* Handles Socket close event.
|
85
91
|
* @param had_error
|
@@ -107,12 +113,12 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
107
113
|
* Handles Socks v4 handshake response.
|
108
114
|
* @param data
|
109
115
|
*/
|
110
|
-
private handleSocks4FinalHandshakeResponse(
|
116
|
+
private handleSocks4FinalHandshakeResponse();
|
111
117
|
/**
|
112
118
|
* Handles Socks v4 incoming connection request (BIND)
|
113
119
|
* @param data
|
114
120
|
*/
|
115
|
-
private handleSocks4IncomingConnectionResponse(
|
121
|
+
private handleSocks4IncomingConnectionResponse();
|
116
122
|
/**
|
117
123
|
* Sends initial Socks v5 handshake request.
|
118
124
|
*/
|
@@ -121,7 +127,7 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
121
127
|
* Handles initial Socks v5 handshake response.
|
122
128
|
* @param data
|
123
129
|
*/
|
124
|
-
private handleInitialSocks5HandshakeResponse(
|
130
|
+
private handleInitialSocks5HandshakeResponse();
|
125
131
|
/**
|
126
132
|
* Sends Socks v5 user & password auth handshake.
|
127
133
|
*
|
@@ -132,7 +138,7 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
132
138
|
* Handles Socks v5 auth handshake response.
|
133
139
|
* @param data
|
134
140
|
*/
|
135
|
-
private handleInitialSocks5AuthenticationHandshakeResponse(
|
141
|
+
private handleInitialSocks5AuthenticationHandshakeResponse();
|
136
142
|
/**
|
137
143
|
* Sends Socks v5 final handshake request.
|
138
144
|
*/
|
@@ -141,12 +147,11 @@ declare class SocksClient extends EventEmitter implements SocksClient {
|
|
141
147
|
* Handles Socks v5 final handshake response.
|
142
148
|
* @param data
|
143
149
|
*/
|
144
|
-
private handleSocks5FinalHandshakeResponse(
|
150
|
+
private handleSocks5FinalHandshakeResponse();
|
145
151
|
/**
|
146
152
|
* Handles Socks v5 incoming connection request (BIND).
|
147
|
-
* @param data
|
148
153
|
*/
|
149
|
-
private handleSocks5IncomingConnectionResponse(
|
154
|
+
private handleSocks5IncomingConnectionResponse();
|
150
155
|
readonly socksClientOptions: SocksClientOptions;
|
151
156
|
}
|
152
157
|
export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails };
|
@@ -29,6 +29,15 @@ declare const ERRORS: {
|
|
29
29
|
InvalidSocks5IncomingConnectionResponse: string;
|
30
30
|
Socks5ProxyRejectedIncomingBoundConnection: string;
|
31
31
|
};
|
32
|
+
declare const SOCKS_INCOMING_PACKET_SIZES: {
|
33
|
+
Socks5InitialHandshakeResponse: number;
|
34
|
+
Socks5UserPassAuthenticationResponse: number;
|
35
|
+
Socks5ResponseHeader: number;
|
36
|
+
Socks5ResponseIPv4: number;
|
37
|
+
Socks5ResponseIPv6: number;
|
38
|
+
Socks5ResponseHostname: (hostNameLength: number) => number;
|
39
|
+
Socks4Response: number;
|
40
|
+
};
|
32
41
|
declare type SocksCommandOption = 'connect' | 'bind' | 'associate';
|
33
42
|
declare enum SocksCommand {
|
34
43
|
connect = 1,
|
@@ -124,4 +133,4 @@ interface SocksUDPFrameDetails {
|
|
124
133
|
remoteHost: SocksRemoteHost;
|
125
134
|
data: Buffer;
|
126
135
|
}
|
127
|
-
export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails };
|
136
|
+
export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails, SOCKS_INCOMING_PACKET_SIZES };
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
declare class ReceiveBuffer {
|
3
|
+
private _buffer;
|
4
|
+
private _offset;
|
5
|
+
private _originalSize;
|
6
|
+
constructor(size?: number);
|
7
|
+
readonly length: number;
|
8
|
+
append(data: Buffer): number;
|
9
|
+
peek(length: number): Buffer;
|
10
|
+
get(length: number): Buffer;
|
11
|
+
}
|
12
|
+
export { ReceiveBuffer };
|