tunnel-packer as own module
This commit is contained in:
		
							parent
							
								
									d2926777a6
								
							
						
					
					
						commit
						5efef2b709
					
				
							
								
								
									
										15
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								index.js
									
									
									
									
									
								
							@ -157,14 +157,15 @@ module.exports.create = function (opts) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
module.exports.pack = function (address, data) {
 | 
					module.exports.pack = function (address, data) {
 | 
				
			||||||
  var version = 1;
 | 
					  var version = 1;
 | 
				
			||||||
  var header = /*servername + ',' +*/address.family + ',' + address.address + ',' + address.port + ',' + data.byteLength;
 | 
					  var header = Buffer.from(
 | 
				
			||||||
  var meta = [ 255 - version, header.length ];
 | 
					    /*servername + ',' +*/address.family + ',' + address.address + ',' + address.port + ',' + data.byteLength
 | 
				
			||||||
  var buf = Buffer.alloc(meta.length + header.length + data.byteLength);
 | 
					  );
 | 
				
			||||||
 | 
					  var meta = Buffer.from([ 255 - version, header.length ]);
 | 
				
			||||||
 | 
					  var buf = Buffer.alloc(meta.byteLength + header.byteLength + data.byteLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  buf.write(meta[0], 0);
 | 
					  meta.copy(buf, 0, 0, meta.byteLength);
 | 
				
			||||||
  buf.write(meta[1], 1);
 | 
					  header.copy(buf, 2, 0, header.byteLength);
 | 
				
			||||||
  buf.write(header, 2);
 | 
					  data.copy(buf, 2 + header.byteLength, 0, data.byteLength);
 | 
				
			||||||
  buf.write(data, 2 + header.length);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return buf;
 | 
					  return buf;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										34
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "tunnel-packer",
 | 
				
			||||||
 | 
					  "version": "1.0.0",
 | 
				
			||||||
 | 
					  "description": "A strategy for packing and unpacking tunneled network messages (or any stream)",
 | 
				
			||||||
 | 
					  "main": "index.js",
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "test": "node test.js"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "repository": {
 | 
				
			||||||
 | 
					    "type": "git",
 | 
				
			||||||
 | 
					    "url": "git+https://github.com/Daplie/tunnel-packer.git"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "keywords": [
 | 
				
			||||||
 | 
					    "tunnel",
 | 
				
			||||||
 | 
					    "tcp",
 | 
				
			||||||
 | 
					    "sni",
 | 
				
			||||||
 | 
					    "https",
 | 
				
			||||||
 | 
					    "ssl",
 | 
				
			||||||
 | 
					    "http",
 | 
				
			||||||
 | 
					    "proxy",
 | 
				
			||||||
 | 
					    "pack",
 | 
				
			||||||
 | 
					    "unpack",
 | 
				
			||||||
 | 
					    "message",
 | 
				
			||||||
 | 
					    "msg",
 | 
				
			||||||
 | 
					    "packer",
 | 
				
			||||||
 | 
					    "unpacker"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)",
 | 
				
			||||||
 | 
					  "license": "(MIT OR Apache-2.0)",
 | 
				
			||||||
 | 
					  "bugs": {
 | 
				
			||||||
 | 
					    "url": "https://github.com/Daplie/tunnel-packer/issues"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "homepage": "https://github.com/Daplie/tunnel-packer#readme"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								test.js
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								test.js
									
									
									
									
									
								
							@ -3,7 +3,12 @@
 | 
				
			|||||||
var sni = require('sni');
 | 
					var sni = require('sni');
 | 
				
			||||||
var hello = require('fs').readFileSync('./sni.hello.bin');
 | 
					var hello = require('fs').readFileSync('./sni.hello.bin');
 | 
				
			||||||
var version = 1;
 | 
					var version = 1;
 | 
				
			||||||
var header = 'IPv4,127.0.1.1,443,' + hello.byteLength;
 | 
					var address = {
 | 
				
			||||||
 | 
					  family: 'IPv4'
 | 
				
			||||||
 | 
					, address: '127.0.1.1'
 | 
				
			||||||
 | 
					, port: 443
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					var header = address.family + ',' + address.address + ',' + address.port + ',' + hello.byteLength;
 | 
				
			||||||
var buf = Buffer.concat([
 | 
					var buf = Buffer.concat([
 | 
				
			||||||
  Buffer.from([ 255 - version, header.length ])
 | 
					  Buffer.from([ 255 - version, header.length ])
 | 
				
			||||||
, Buffer.from(header)
 | 
					, Buffer.from(header)
 | 
				
			||||||
@ -12,7 +17,8 @@ var buf = Buffer.concat([
 | 
				
			|||||||
var services = { 'ssh': 22, 'http': 4080, 'https': 8443 };
 | 
					var services = { 'ssh': 22, 'http': 4080, 'https': 8443 };
 | 
				
			||||||
var clients = {};
 | 
					var clients = {};
 | 
				
			||||||
var count = 0;
 | 
					var count = 0;
 | 
				
			||||||
var machine = require('./').create({
 | 
					var packer = require('./');
 | 
				
			||||||
 | 
					var machine = packer.create({
 | 
				
			||||||
  onMessage: function (opts) {
 | 
					  onMessage: function (opts) {
 | 
				
			||||||
    var id = opts.family + ',' + opts.address + ',' + opts.port;
 | 
					    var id = opts.family + ',' + opts.address + ',' + opts.port;
 | 
				
			||||||
    var service = 'https';
 | 
					    var service = 'https';
 | 
				
			||||||
@ -39,7 +45,14 @@ var machine = require('./').create({
 | 
				
			|||||||
    count += 1;
 | 
					    count += 1;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					var packed = packer.pack(address, hello);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if (!packed.equals(buf)) {
 | 
				
			||||||
 | 
					  console.error(buf.toString('hex') === packed.toString('hex'));
 | 
				
			||||||
 | 
					  console.error(packed.toString('hex'), packed.byteLength);
 | 
				
			||||||
 | 
					  console.error(buf.toString('hex'), buf.byteLength);
 | 
				
			||||||
 | 
					  throw new Error("packer did not pack as expected");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
console.log('');
 | 
					console.log('');
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user