New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

socksinthemiddle

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

socksinthemiddle - npm Package Compare versions

Comparing version 2.0.5 to 2.0.6

104

index.js

@@ -14,3 +14,2 @@ const net = require('net'),

} = require('socks5server/src/socks.js');
const { pipeline } = require('stream');
/**

@@ -28,3 +27,6 @@ * for getting a full buffer from a stream and modifying it

constructor(processer){
super({highWaterMark:1638400});
super({
highWaterMark:1638400,
allowHalfOpen:false,
});
this.processer=processer;

@@ -35,3 +37,3 @@ this.buf=[];

this.buf.push(chunk);
setImmediate(cb,null)
setImmediate(cb,null);
}

@@ -191,3 +193,4 @@ async _flush(cb){

}
const rawURL=`${reqFromClient.protocol}://${headers.host}${reqFromClient.url}`;
const rawHost=headers.host.split(':');
const rawURL=`${reqFromClient.protocol}://${headers.host}:${rawHost[1]||(reqFromClient.protocol==='https'?443:80)}${reqFromClient.url}`;
if(this.requestModder){

@@ -227,3 +230,3 @@ let streamModder=await this.requestModder(headers,reqFromClient,resToClient,overrideRequestOptions);

reqFromClient.relayURL=relayURL;
this.httpLog&&console.log('(relay out)[%s] -> [%s]',rawURL,relayURL);
this.httpLog&&console.log(`(relay out)[%s]`,rawURL,rawURL!==relayURL?` -> [${relayURL}]`:'');
let reqToServer;

@@ -248,9 +251,7 @@ if(reqFromClient.isWebScoket){

streamChain.push(reqToServer);
pipeline(streamChain,(err)=>{
if(err){
if(this.httpLog){
if(err.rawPacket)err.rawText=err.rawPacket.toString();
console.error('(relay request error)[%s] -> [%s]',rawURL,relayURL);
console.error(err);
}
chainPipe(streamChain,(err)=>{
if(this.httpLog){
if(err.rawPacket)err.rawText=err.rawPacket.toString();
console.error(`(relay request error)[%s]`,rawURL,rawURL!==relayURL?` -> [${relayURL}]`:'');
console.error(err);
}

@@ -273,20 +274,20 @@ });

delete headers['content-length'];
headers['transfer-encoding']='chunked';
const enc=headers['content-encoding'];
if(streamModder instanceof Transform){//if the modder stream is an instance of Transform, the raw data will be piped in
const contentDecoder=contentDecoderSelector(enc);
if(contentDecoder){
streamChain.push(contentDecoder);
if(enc){
const contentDecoder=contentDecoderSelector(enc)/* ,
contentEncoder=contentEncoderSelector(enc) */;
streamChain.push(contentDecoder,streamModder/* ,contentEncoder */);
delete headers['content-encoding'];
}else{
streamChain.push(streamModder);
}
streamChain.push(streamModder);
delete headers['content-encoding'];
//todo fix here
/* const contentEncoder=contentEncoderSelector(enc);
if(contentEncoder){
streamChain.push(contentEncoder);
} */
}else if(streamModder instanceof Readable){//if the modder stream is just a readable stream, the stream will replace the raw data
streamChain=[streamModder];
delete headers['content-encoding'];
//todo fix here
/* const contentEncoder=contentEncoderSelector(enc);
if(contentEncoder){
/* if(enc){
const contentEncoder=contentEncoderSelector(enc);
streamChain.push(contentEncoder);

@@ -300,3 +301,2 @@ } */

if(!resFromServer.destroyed)resFromServer.destroy();
// for(let s of streamChain)if(!s.destroyed)s.destroy();
return;

@@ -327,8 +327,6 @@ }

streamChain.push(resToClient);
pipeline(streamChain,(err)=>{
if(err){
if(this.httpLog){
console.error(`(relay response error) [${reqFromClient.relayURL}]`);
console.error(err);
}
chainPipe(streamChain,(err)=>{
if(this.httpLog){
console.error(`(relay response error) [${reqFromClient.relayURL}]`);
console.error(err);
}

@@ -433,22 +431,40 @@ });

function contentDecoderSelector(enc){
if(enc){
switch(enc){
case 'gzip':return zlib.createUnzip();
case 'deflate':return zlib.createUnzip();
case 'br':return zlib.createBrotliDecompress();
default:throw(new Error('unknown encoding:'+enc));
}
switch(enc){
case 'gzip':return zlib.createUnzip();
case 'deflate':return zlib.createInflate();
case 'br':return zlib.createBrotliDecompress();
default:throw(new Error('unknown encoding:'+enc));
}
}
function contentEncoderSelector(enc){
if(enc){
switch(enc){
case 'gzip':return zlib.createGzip();
case 'deflate':return zlib.createDeflate();
case 'br':return zlib.createBrotliCompress();
default:throw(new Error('unknown encoding:'+enc));
}
switch(enc){
case 'gzip':return zlib.createGzip();
case 'deflate':return zlib.createDeflate();
case 'br':return zlib.createBrotliCompress();
default:throw(new Error('unknown encoding:'+enc));
}
}
function chainPipe(chain,cb){
let lastStream,calledCb=false,i=0;
for(let s of chain){
if(lastStream)lastStream.pipe(s);
lastStream=s;
const ind=i++;
s.once('error',err=>{
err.streamIndex=ind;
err.chainLength=chain.length;
err.streamType=s.constructor?.name||'unknown';
if(!calledCb){
cb(err);
calledCb=true;
}
for(let stream of chain){
if(s===stream || stream.errored || stream.closed || stream.destroyed || stream.writableFinished)continue;
stream.destroy(err);
}
});
}
}
function isHTTPHeader(buf){

@@ -455,0 +471,0 @@ let str=buf.toString();

{
"name": "socksinthemiddle",
"description": "use a socks server for web request modification",
"version": "2.0.5",
"version": "2.0.6",
"main": "index.js",

@@ -23,2 +23,3 @@ "scripts": {

"dependencies": {
"pump": "^3.0.0",
"socks5server": "^4.5.1",

@@ -25,0 +26,0 @@ "ws": "^8.11.0"

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc