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 1.2.1 to 1.3.0

74

index.js

@@ -5,4 +5,3 @@ const net = require('net'),

https = require('https'),
{Transform,Readable} = require('stream'),
pump = require('pump');
{Transform,Readable} = require('stream');
const {

@@ -13,4 +12,5 @@ createSocksServer,

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

@@ -128,4 +128,4 @@ * for getting a full buffer from a stream and modifying it

}
dataModder(reqFromClient,resToClient,potocol){
reqFromClient.potocol=potocol;
dataModder(reqFromClient,resToClient,protocol){
reqFromClient.protocol=protocol;
this._requestModder(reqFromClient,resToClient,(reqToServer,resFromServer)=>{

@@ -136,4 +136,9 @@ this._responseModder(resToClient,resFromServer,reqFromClient,reqToServer);

async _requestModder(reqFromClient,resToClient,cb){
let headers=Object.assign({},reqFromClient.headers),streamChain=[reqFromClient],
overrideRequestOptions={protocol:reqFromClient.potocol=='http'?'http':'https'};
let rawheaders=Object.assign({},reqFromClient.headers),streamChain=[reqFromClient],
overrideRequestOptions={protocol:reqFromClient.protocol=='http'?'http:':'https:'};
const headers={};
for(let n in rawheaders){
headers[n.replace(/^\:/,'')]=rawheaders[n];
}
// console.log(headers);
if(this.requestModder){

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

let host=headers.host.split(':');
let options={
let options=Object.assign({
headers,

@@ -160,28 +165,31 @@ method:reqFromClient.method,

port:host[1],
rejectUnauthorized:false
};
const protocol=overrideRequestOptions.protocol;
delete overrideRequestOptions.protocol;
this.httpLog&&console.log('(proxy out)[ %s -> %s ] %s',reqFromClient.potocol+'://'+reqFromClient.headers.host,options.headers.host,options.path);
let reqToServer=(protocol==='http'?http:https).request(Object.assign(options,overrideRequestOptions),resFromServer=>{
timeout:10000,
rejectUnauthorized:true,
},overrideRequestOptions);
if(!options.port){
options.port=options.protocol==='https:'?443:80;
}
const relayUrl=`${options.protocol}//${options.hostname}:${options.port}${options.path}`;
// const protocol=overrideRequestOptions.protocol;
this.httpLog&&console.log('(relay out)[ %s -> %s ] %s',reqFromClient.protocol+'//'+reqFromClient.headers.host,`${options.headers.host}:${options.port}`,options.path);
let reqToServer=request(options,resFromServer=>{
cb(reqToServer,resFromServer);
}).on('error',e=>{
if(this.httpLog){
if(e.rawPacket)e.rawText=e.rawPacket.toString();
console.error('(proxy error)',reqFromClient.potocol+'://'+reqFromClient.headers.host,options.headers.host,options.path,e);
});
streamChain.push(reqToServer);
pipeline(streamChain,(err)=>{
if(err&&this.httpLog){
if(err.rawPacket)err.rawText=err.rawPacket.toString();
console.error('(relay request error) %s -> %s',reqFromClient.protocol+'//'+reqFromClient.headers.host,relayUrl);
console.error(err);
}
setImmediate(()=>{
reqToServer.removeAllListeners();
reqToServer.destroy();
});
});
reqFromClient.once('close',()=>{
reqToServer.end();
})
reqToServer.setTimeout(10000);
streamChain.push(reqToServer);
pump(streamChain)
}
async _responseModder(resToClient,resFromServer,reqFromClient,reqToServer){
let headers=Object.assign({},resFromServer.headers),streamChain=[resFromServer];
let rawheaders=Object.assign({},resFromServer.headers),streamChain=[resFromServer];
const headers={};
for(let n in rawheaders){
headers[n.replace(/^\:/,'')]=rawheaders[n];
}
if(this.responseModder){

@@ -206,3 +214,2 @@ let streamModder=await this.responseModder(headers,resFromServer,reqFromClient);

}
streamChain.push(resToClient);
for(let header in headers){

@@ -212,3 +219,8 @@ resToClient.setHeader(header,headers[header]);

resToClient.writeHead(resFromServer.statusCode,resFromServer.statusMessage);
pump(streamChain);
streamChain.push(resToClient);
pipeline(streamChain,(err)=>{
if(err){
console.error('(relay response error)',err);
}
});
}

@@ -215,0 +227,0 @@ /**

{
"dependencies": {
"pump": "^3.0.0",
"socks5server": "^4.4.2"
},
"name": "socksinthemiddle",
"description": "use a socks server for web request modification",
"version": "1.2.1",
"version": "1.3.0",
"main": "index.js",

@@ -24,2 +20,6 @@ "scripts": {

"license": "MIT",
"dependencies": {
"http2-client": "^1.3.5",
"socks5server": "^4.4.2"
},
"bugs": {

@@ -26,0 +26,0 @@ "url": "https://github.com/JiaJiaJiang/node-socksInTheMiddle/issues"

const {SocksInTheMiddle,BufferModder}=require('./index'),
fs=require('fs');
let server=new SocksInTheMiddle({
socksPort:1090,
socksPort:1099,
httpPort:0,

@@ -73,6 +73,6 @@ httpsPort:0,

//change target address
if(fromClient){
/* if(fromClient){
packet.address='127.0.0.1';
packet.port=12345;
}
} */
});
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