socks 2.1.2 → 2.1.6

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.
@@ -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
- // Listens for instance 'established' event to remove internal data socket handlers.
225
- this.once('established', () => this.removeInternalSocketHandlers());
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
- // Sent initial handshake, waiting for response.
257
- if (this.state === constants_1.SocksClientState.SentInitialHandshake) {
258
- if (this._options.proxy.type === 4) {
259
- // Socks v4 only has one handshake response.
260
- this.handleSocks4FinalHandshakeResponse(data);
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
- // Socks v5 has two handshakes, handle initial one here.
264
- this.handleInitialSocks5HandshakeResponse(data);
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
- // Sent auth request for Socks v5, waiting for response.
267
- }
268
- else if (this.state === constants_1.SocksClientState.SentAuthentication) {
269
- this.handleInitialSocks5AuthenticationHandshakeResponse(data);
270
- // Sent final Socks v5 handshake, waiting for final response.
271
- }
272
- else if (this.state === constants_1.SocksClientState.SentFinalHandshake) {
273
- this.handleSocks5FinalHandshakeResponse(data);
274
- // Socks BIND established. Waiting for remote connection via proxy.
275
- }
276
- else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) {
277
- if (this._options.proxy.type === 4) {
278
- this.handleSocks4IncomingConnectionResponse(data);
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.handleSocks5IncomingConnectionResponse(data);
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(data) {
360
- if (data.length < 8) {
361
- // 8 is required
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(data) {
395
- if (data.length < 8) {
396
- // 8 is required.
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(data) {
430
- if (data.length !== 2) {
431
- // 2 is required
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(data) {
504
+ handleInitialSocks5AuthenticationHandshakeResponse() {
476
505
  this.state = constants_1.SocksClientState.ReceivedAuthenticationResponse;
477
- if (data.length !== 2 || data[1] !== 0x00) {
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(data) {
515
- if (data.length < 5) {
516
- // 4 is required to get address type, 5 is hostname length and should be there anyways.
517
- this._closeSocket(constants_1.ERRORS.InvalidSocks5FinalHandshake);
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
- if (constants_1.SocksCommand[this._options.command] === constants_1.SocksCommand.bind) {
575
- this.state = constants_1.SocksClientState.BoundWaitingForConnection;
576
- this.emit('bound', { socket: this._socket, remoteHost });
577
- /*
578
- If using Associate, the Socks client is now Established. And the proxy server is now accepting UDP packets at the
579
- given bound port. This initial Socks TCP connection must remain open for the UDP relay to continue to work.
580
- */
581
- }
582
- else if (constants_1.SocksCommand[this._options.command] === constants_1.SocksCommand.associate) {
583
- this.state = constants_1.SocksClientState.Established;
584
- this.emit('established', { socket: this._socket, remoteHost });
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(data) {
594
- if (data.length < 4) {
595
- this._closeSocket(constants_1.ERRORS.InvalidSocks5IncomingConnectionResponse);
596
- }
597
- else if (data[0] !== 0x05 || data[1] !== constants_1.Socks5Response.Granted) {
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 buff = smart_buffer_1.SmartBuffer.fromBuffer(data);
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
- if (data.length < 10) {
610
- return this._closeSocket(constants_1.ERRORS.InvalidSocks5IncomingConnectionResponse);
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 = buff.readUInt8();
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 (buff.length - 5 < hostLength) {
626
- return this._closeSocket(constants_1.ERRORS.InvalidSocks5IncomingConnectionResponse);
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
- if (buff.length < 24) {
637
- return this._closeSocket(constants_1.ERRORS.InvalidSocks5IncomingConnectionResponse);
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;AAyK5B,0CAAe;AArKjB,kBAAkB;AAClB,MAAM,MAAM,GAAG;IACb,mBAAmB,EAAE,wFAAwF;IAC7G,+BAA+B,EAAE,oGAAoG;IACrI,wBAAwB,EAAE,8FAA8F;IACxH,oCAAoC,EAAE,2CAA2C;IACjF,uCAAuC,EAAE,oFAAoF;IAC7H,8BAA8B,EAAE,4CAA4C;IAC5E,gCAAgC,EAAE,8EAA8E;IAChH,sCAAsC,EAAE,2DAA2D;IACnG,gBAAgB,EAAE,mBAAmB;IACrC,YAAY,EAAE,eAAe;IAC7B,uBAAuB,EAAE,4BAA4B;IACrD,aAAa,EAAE,qDAAqD;IACpE,8BAA8B,EAAE,4CAA4C;IAC5E,6BAA6B,EAAE,kCAAkC;IACjE,uCAAuC,EAAE,6CAA6C;IACtF,0CAA0C,EAAE,iDAAiD;IAC7F,qCAAqC,EAAE,oDAAoD;IAC3F,yCAAyC,EAAE,mEAAmE;IAC9G,+CAA+C,EAAE,6EAA6E;IAC9H,4CAA4C,EAAE,yEAAyE;IACvH,0BAA0B,EAAE,8BAA8B;IAC1D,2BAA2B,EAAE,kDAAkD;IAC/E,mCAAmC,EAAE,kCAAkC;IACvE,uCAAuC,EAAE,sDAAsD;IAC/F,0CAA0C,EAAE,iDAAiD;CAE9F,CAAC;AA0IA,wBAAM;AAtIR,IAAK,YAIJ;AAJD,WAAK,YAAY;IACf,qDAAc,CAAA;IACd,+CAAW,CAAA;IACX,yDAAgB,CAAA;AAClB,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AAoIC,oCAAY;AAlId,IAAK,cAKJ;AALD,WAAK,cAAc;IACjB,0DAAc,CAAA;IACd,wDAAa,CAAA;IACb,4DAAe,CAAA;IACf,sEAAoB,CAAA;AACtB,CAAC,EALI,cAAc,KAAd,cAAc,QAKlB;AA8HC,wCAAc;AA5HhB,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,+CAAa,CAAA;IACb,+CAAa,CAAA;IACb,mDAAe,CAAA;AACjB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAyHC,gCAAU;AAvHZ,IAAK,cAUJ;AAVD,WAAK,cAAc;IACjB,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,+EAAyB,CAAA;IACzB,yEAAsB,CAAA;IACtB,6EAAwB,CAAA;IACxB,+DAAiB,CAAA;IACjB,iFAA0B,CAAA;IAC1B,iFAA0B,CAAA;AAC5B,CAAC,EAVI,cAAc,KAAd,cAAc,QAUlB;AA+GC,wCAAc;AA7GhB,IAAK,cAIJ;AAJD,WAAK,cAAc;IACjB,mDAAW,CAAA;IACX,2DAAe,CAAA;IACf,mDAAW,CAAA;AACb,CAAC,EAJI,cAAc,KAAd,cAAc,QAIlB;AAwGC,wCAAc;AAtGhB,IAAK,gBAcJ;AAdD,WAAK,gBAAgB;IACnB,6DAAW,CAAA;IACX,mEAAc,CAAA;IACd,iEAAa,CAAA;IACb,uFAAwB,CAAA;IACxB,+GAAoC,CAAA;IACpC,mFAAsB,CAAA;IACtB,2GAAkC,CAAA;IAClC,mFAAsB,CAAA;IACtB,yFAAyB,CAAA;IACzB,iGAA6B,CAAA;IAC7B,sEAAgB,CAAA;IAChB,wEAAiB,CAAA;IACjB,0DAAU,CAAA;AACZ,CAAC,EAdI,gBAAgB,KAAhB,gBAAgB,QAcpB;AA0FC,4CAAgB"}
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.2",
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(data);
116
+ private handleSocks4FinalHandshakeResponse();
111
117
  /**
112
118
  * Handles Socks v4 incoming connection request (BIND)
113
119
  * @param data
114
120
  */
115
- private handleSocks4IncomingConnectionResponse(data);
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(data);
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(data);
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(data);
150
+ private handleSocks5FinalHandshakeResponse();
145
151
  /**
146
152
  * Handles Socks v5 incoming connection request (BIND).
147
- * @param data
148
153
  */
149
- private handleSocks5IncomingConnectionResponse(data);
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 };