wstun

0.1.6 • Public • Published

WSTUN - Modified for Data Gateway Server and Data Gateway Client (for internal use)

Overview

See readme of @mdslab/wstun

Installation (for debug)

  1. Download source code and go to the root directory.
  2. Run npm install to install all dependencies.
  3. Run npm link to expose wstun cmd globally.

Installation

npm install wstun

Programmatic Usage

Instantiation of a reverse tunnel server

var wstun = require("wstun");

// without security
reverse_server = new wstun.server_reverse();

// or with security (<PRIVATE-KEY-PATH> and <PUBLIC-KEY-PATH> are the paths of the private and public keys in .pem formats)
reverse_server = new wstun.server_reverse({ssl:true, key:"<PRIVATE-KEY-PATH>", cert:"<PUBLIC-KEY-PATH>"});

//start the server (<PORT> is the listening port)
reverse_server.start(<PORT>);

Implementation of a reverse tunnel client

var wstun = require("wstun");

reverse_client = new wstun.client_reverse();

// without security
wstunHost = 'ws://wstunServerIP:wstunPort';

// or with security 
wstunHost = 'wss://wstunServerIP:wstunPort';

// <publicPort> is the port on the reverse tunnel server on which the tunneled service will be reachable
// <remoteHost>:<remotePort> is the endpoint of the service to be reverse tunneled
reverse_client.start(<publicPort>, wstunHost, '<remoteHost>:<remotePort>', {
    token: '',
    trayId: '',
    trayName: ''
}, {
    success: function(){},
    failure: function(error){}
});

Command-Line Usage

Data Gateway Server

// start server
wstun -r -s 8080

1. Get token

GET http://localhost:8080/token

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 38
ETag: W/"26-OnijoHwIHbgqooKaIW/fxvGiQAA"
Date: Wed, 08 Jul 2020 04:23:28 GMT
Connection: keep-alive

"95d9b8e6-39fb-46cd-a401-7d7f9119f710"

2. Get list of registered trays

GET http://localhost:8080/trays

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 2
ETag: W/"2-l9Fw4VUO7kr8CvBlt4zaMCqXZ0w"
Date: Wed, 08 Jul 2020 04:34:35 GMT
Connection: keep-alive

[{"id": "test","name": "test"}]

3. request available port

POST http://localhost:8080/availableport

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 81
ETag: W/"51-fs6jVncwj5ob5fovjIPuxuKIycQ"
Date: Wed, 08 Jul 2020 04:39:39 GMT
Connection: keep-alive

{
  "port": 57255,
  "token": "95d9b8e6-39fb-46cd-a401-7d7f9119f710"
}

4. Request available port with optional parameters (trayId, range)

POST http://localhost:8080/availableport

{"trayId":"test", "range": [3000,3100]}

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 81
ETag: W/"51-aZoi+f6MfcSHUwlYvJl2coUBQnY"
Date: Wed, 08 Jul 2020 04:37:06 GMT
Connection: keep-alive

{
  "port": 3000,
  "token": "95d9b8e6-39fb-46cd-a401-7d7f9119f710",
  "trayPort": "3306"
}

5. Close ws tunnel by port

DELETE http://localhost:8080/ws/3306

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 64
ETag: W/"40-IjZVx+QRCNTrAi8IdDEvyRt4MR0"
Date: Wed, 08 Jul 2020 04:41:21 GMT
Connection: keep-alive

"Web socket tunnel related to port 3306 is closed successfully."

Data Gateway Client

// create a ws tunnel to server with token
wstun -r3306:10.197.34.164:3306 ws://localhost:8080 --token=95d9b8e6-39fb-46cd-a401-7d7f9119f710

// client(tray service) creates a ws tunnel and register itself
wstun -r3306:10.197.34.164:3306 ws://localhost:8080 --token=95d9b8e6-39fb-46cd-a401-7d7f9119f710 --trayid=test --trayname=test

Package Sidebar

Install

npm i wstun

Weekly Downloads

1

Version

0.1.6

License

Apache-2.0

Unpacked Size

56.8 kB

Total Files

21

Last publish

Collaborators

  • rjgcmjl