Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@mutagen-d/node-proxy-server

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mutagen-d/node-proxy-server - npm Package Compare versions

Comparing version
1.0.2
to
1.1.0
+1
-1
package.json
{
"name": "@mutagen-d/node-proxy-server",
"version": "1.0.2",
"version": "1.1.0",
"description": "Http and socks proxy server",

@@ -5,0 +5,0 @@ "main": "src/index.js",

@@ -8,2 +8,3 @@ # Proxy Server

- [Usage](#usage)
- [TLS](#tls)
- [Authorization](#authorization)

@@ -17,3 +18,3 @@ - [Keep Alive](#keepalive)

```js
const { createProxyServer } = require('./src')
const { createProxyServer } = require('@mutagen-d/node-proxy-server')
const port = 8080

@@ -27,2 +28,15 @@ const server = createProxyServer()

## Tls
create tls server
```js
const fs = require('fs')
const path = require('path')
const server = createProxyServer({
cert: fs.readFileSync(path.join(__dirname, './cert.pem'), 'utf-8'),
key: fs.readFileSync(path.join(__dirname, './key.pem'), 'utf-8'),
})
```
## Authorization

@@ -29,0 +43,0 @@

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

* on(event: 'proxy-connection', listener: (connection: import('stream').Duplex, info: ConnectionInfo)): ProxyServer;
* on(event: 'secureConnection', listener: (socket: tls.TLSSocket) => any): ProxyServer;
* } & net.Server} ProxyServer

@@ -35,6 +36,5 @@ * @typedef {{ dstHost: string, dstPort: number; srcHost: string; srcPort: number }} ConnectionInfo

* auth?: boolean;
* }} ProxyServerOptions
* } & Pick<Parameters<tls['createServer']>[0], 'ca' | 'cert' | 'key'>} ProxyServerOptions
*/
/**

@@ -46,9 +46,19 @@ * @param {ProxyServerOptions} [options]

const createProxyConnection = options && options.createProxyConnection || createTCPConnection
const tlsOpts = options ? { ca: options.ca, cert: options.cert, key: options.key } : {}
const isTlsServer = tlsOpts.ca || tlsOpts.cert || tlsOpts.key
/** @type {ProxyServer} */
const server = net.createServer();
server.on('connection', (socket) => {
socket._server = server;
socket.on('error', onSocketError)
socket.once('data', onConnectionHandshake)
})
const server = isTlsServer ? tls.createServer(tlsOpts) : net.createServer();
if (isTlsServer) {
server.on('secureConnection', (socket) => {
socket._server = server;
socket.on('error', onSocketError)
socket.once('data', onConnectionHandshake)
})
} else {
server.on('connection', (socket) => {
socket._server = server;
socket.on('error', onSocketError)
socket.once('data', onConnectionHandshake)
})
}
server.on('http-proxy', (socket, data, options) => {

@@ -101,4 +111,5 @@ if (!auth.enabled) {

server.emit('proxy-connection', conn, { dstHost, dstPort, srcHost, srcPort })
if (options.headers['proxy-authorization']) {
if (options.headers['proxy-authorization'] || options.headers['proxy-connection']) {
delete options.headers['proxy-authorization']
delete options.headers['proxy-connection']
conn.write(serializeHTTP(options))

@@ -276,7 +287,6 @@ } else {

const socket = net.createConnection({ host: info.dstHost, port: info.dstPort })
const conn = options && options.url.indexOf('https:') === 0 ? new tls.TLSSocket(socket, { rejectUnauthorized: false }) : socket;
/** @type {Deffer<net.Socket>} */
/** @type {Deffer<net.Socket | tls.TLSSocket>} */
const deffer = new Deffer()
conn.on('connect', () => deffer.resolve(conn))
conn.on('error', (err) => deffer.reject(err))
socket.on('connect', () => deffer.resolve(socket))
socket.on('error', (err) => deffer.reject(err))
return deffer.promise;

@@ -283,0 +293,0 @@ }

@@ -24,2 +24,3 @@ /**

body = data.subarray(i + 2)
break
}

@@ -29,2 +30,3 @@ if (data[i] === CR && data[i + 1] === LF && data[i + 2] === CR && data[i + 3] === LF) {

body = data.subarray(i + 4)
break
}

@@ -31,0 +33,0 @@ }