tcp-proxy.js

1.5.0 • Public • Published

tcp-proxy.js

A TCP Proxy package for NodeJS

NPM version Build Status Appveyor status Coverage Status

Usage

$ npm i tcp-proxy.js --save

Create a new proxy instance

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ port: 9229 });
proxy.createProxy({
  forwardPort: 9999,
  forwardHost: 'localhost',
});

Create a new proxy instance for a specific IP/Hostname

This will only listen to connections on the specified IP/Hostname, you can have duplicates of ports this way.

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ host: 'localhost', port: 9229 });
proxy.createProxy({
  forwardPort: 9999,
  forwardHost: 'localhost',
});

Create a new proxy instance with dynamic host:ip

const TCPProxy = require('tcp-proxy.js');
const proxy = new TCPProxy({ host: 'localhost', port: 9229 });
proxy.createProxy({
  getForwardInfo: () => ({
    host: '127.0.0.1',
    port: data.port,
  }),
});

End proxy

proxy.end();

Interceptor

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(chunk) {
      // request => proxy server => interceptor.client => forward server
      const data = chunk.toString();
      const newData = data.replace('GET / ', 'GET /tom ');
      return Buffer.from(newData);
    },
    server(chunk) {
      // forward server => interceptor.server => proxy server => response
      const data = chunk.toString();
      const newData = data.replace('hello tom', 'bello tom');
      return Buffer.from(newData);
    },
  },
});

Async Interceptor

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(chunk) {
      // request => proxy server => interceptor.client => forward server
      const data = chunk.toString();
      return new Promise(resolve => {
        setTimeout(() => {
          const newData = data.replace('GET / ', 'GET /tom ');
          resolve(Buffer.from(newData));
        }, 200);
      });
    },
  },
});

Connection Information

IP, Port of Client, Server and Self

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    client(result, encoding, connection) {
      console.info('Connection from ', connection.client.ip, ':', connection.client.port, 'to', connection.self.ip, ':', connection.self.port, 'from', connection.server.ip, ':', connection.server.port);
      return result
    }
  },
});

Data size

proxy.createProxy({
  forwardPort: 9999,
  interceptor: {
    server(result, encoding, connection) {
      console.log('Connection Size:' + connection.size);
      return result
    }
  },
});

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i tcp-proxy.js

Weekly Downloads

15,980

Version

1.5.0

License

MIT

Unpacked Size

10.4 kB

Total Files

4

Last publish

Collaborators

  • wanghx