forked from coolaj86/goldilocks.js
		
	moved most things related to TCP connections to a tcp directory
This commit is contained in:
		
							parent
							
								
									9a63f30bf2
								
							
						
					
					
						commit
						16589e65f6
					
				@ -1,6 +1,6 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
module.exports.create = function (deps, conf, greenlockMiddleware) {
 | 
			
		||||
module.exports.create = function (deps, conf, tcpMods) {
 | 
			
		||||
  var PromiseA = require('bluebird');
 | 
			
		||||
  var statAsync = PromiseA.promisify(require('fs').stat);
 | 
			
		||||
  var domainMatches = require('../domain-utils').match;
 | 
			
		||||
@ -172,7 +172,7 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!acmeServer) {
 | 
			
		||||
      acmeServer = require('http').createServer(greenlockMiddleware);
 | 
			
		||||
      acmeServer = require('http').createServer(tcpMods.tls.middleware);
 | 
			
		||||
    }
 | 
			
		||||
    return emitConnection(acmeServer, conn, opts);
 | 
			
		||||
  }
 | 
			
		||||
@ -241,7 +241,7 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
 | 
			
		||||
      res.statusCode = 502;
 | 
			
		||||
      res.setHeader('Connection', 'close');
 | 
			
		||||
      res.setHeader('Content-Type', 'text/html');
 | 
			
		||||
      res.end(require('../proxy-conn').getRespBody(err, conf.debug));
 | 
			
		||||
      res.end(tcpMods.proxy.getRespBody(err, conf.debug));
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    proxyServer = http.createServer(function (req, res) {
 | 
			
		||||
@ -292,7 +292,7 @@ module.exports.create = function (deps, conf, greenlockMiddleware) {
 | 
			
		||||
    newConnOpts.remoteAddress = opts.address || conn.remoteAddress;
 | 
			
		||||
    newConnOpts.remotePort    = opts.port    || conn.remotePort;
 | 
			
		||||
 | 
			
		||||
    deps.proxy(conn, newConnOpts, opts.firstChunk);
 | 
			
		||||
    tcpMods.proxy(conn, newConnOpts, opts.firstChunk);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function checkProxy(mod, conn, opts, headers) {
 | 
			
		||||
@ -3,10 +3,8 @@
 | 
			
		||||
module.exports.create = function (deps, config) {
 | 
			
		||||
  console.log('config', config);
 | 
			
		||||
 | 
			
		||||
  //var PromiseA = global.Promise;
 | 
			
		||||
  var PromiseA = require('bluebird');
 | 
			
		||||
  var listeners = require('./servers').listeners.tcp;
 | 
			
		||||
  var domainUtils = require('./domain-utils');
 | 
			
		||||
  var listeners = require('../servers').listeners.tcp;
 | 
			
		||||
  var domainUtils = require('../domain-utils');
 | 
			
		||||
  var modules;
 | 
			
		||||
 | 
			
		||||
  var addrProperties = [
 | 
			
		||||
@ -24,13 +22,6 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function loadModules() {
 | 
			
		||||
    modules = {};
 | 
			
		||||
 | 
			
		||||
    modules.tls  = require('./modules/tls').create(deps, config, tcpHandler);
 | 
			
		||||
    modules.http = require('./modules/http').create(deps, config, modules.tls.middleware);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function proxy(mod, conn, opts) {
 | 
			
		||||
    // First thing we need to add to the connection options is where to proxy the connection to
 | 
			
		||||
    var newConnOpts = domainUtils.separatePort(mod.address || '');
 | 
			
		||||
@ -44,7 +35,7 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
      newConnOpts['_' + name] = opts[name] || opts['_'+name] || conn[name] || conn['_'+name];
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    deps.proxy(conn, newConnOpts);
 | 
			
		||||
    modules.proxy(conn, newConnOpts);
 | 
			
		||||
    return true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -91,10 +82,6 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
 | 
			
		||||
  // opts = { servername, encrypted, peek, data, remoteAddress, remotePort }
 | 
			
		||||
  function peek(conn, firstChunk, opts) {
 | 
			
		||||
    if (!modules) {
 | 
			
		||||
      loadModules();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    opts.firstChunk = firstChunk;
 | 
			
		||||
    conn.__opts = opts;
 | 
			
		||||
    // TODO port/service-based routing can do here
 | 
			
		||||
@ -172,6 +159,12 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  modules = {};
 | 
			
		||||
  modules.tcpHandler = tcpHandler;
 | 
			
		||||
  modules.proxy = require('./proxy-conn').create(deps, config);
 | 
			
		||||
  modules.tls   = require('./tls').create(deps, config, modules);
 | 
			
		||||
  modules.http  = require('./http').create(deps, config, modules);
 | 
			
		||||
 | 
			
		||||
  deps.tunnel = deps.tunnel || {};
 | 
			
		||||
  deps.tunnel.net = {
 | 
			
		||||
    createConnection: function (opts, cb) {
 | 
			
		||||
@ -235,8 +228,8 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
      return writer;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
  deps.tunnelClients = require('./tunnel-client-manager').create(deps, config);
 | 
			
		||||
  deps.tunnelServer = require('./tunnel-server-manager').create(deps, config);
 | 
			
		||||
  deps.tunnelClients = require('../tunnel-client-manager').create(deps, config);
 | 
			
		||||
  deps.tunnelServer = require('../tunnel-server-manager').create(deps, config);
 | 
			
		||||
 | 
			
		||||
  function updateListeners() {
 | 
			
		||||
    var current = listeners.list();
 | 
			
		||||
@ -32,7 +32,7 @@ module.exports.getRespBody = getRespBody;
 | 
			
		||||
module.exports.sendBadGateway = sendBadGateway;
 | 
			
		||||
 | 
			
		||||
module.exports.create = function (deps, config) {
 | 
			
		||||
  return function proxy(conn, newConnOpts, firstChunk, decrypt) {
 | 
			
		||||
  function proxy(conn, newConnOpts, firstChunk, decrypt) {
 | 
			
		||||
    var connected = false;
 | 
			
		||||
    newConnOpts.allowHalfOpen = true;
 | 
			
		||||
    var newConn = deps.net.createConnection(newConnOpts, function () {
 | 
			
		||||
@ -73,5 +73,9 @@ module.exports.create = function (deps, config) {
 | 
			
		||||
    newConn.on('close', function () {
 | 
			
		||||
      conn.destroy();
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  proxy.getRespBody = getRespBody;
 | 
			
		||||
  proxy.sendBadGateway = sendBadGateway;
 | 
			
		||||
  return proxy;
 | 
			
		||||
};
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
module.exports.create = function (deps, config, netHandler) {
 | 
			
		||||
module.exports.create = function (deps, config, tcpMods) {
 | 
			
		||||
  var path = require('path');
 | 
			
		||||
  var tls = require('tls');
 | 
			
		||||
  var parseSni = require('sni');
 | 
			
		||||
@ -208,7 +208,7 @@ module.exports.create = function (deps, config, netHandler) {
 | 
			
		||||
  var terminateServer = tls.createServer(terminatorOpts, function (socket) {
 | 
			
		||||
    console.log('(post-terminated) tls connection, addr:', extractSocketProp(socket, 'remoteAddress'));
 | 
			
		||||
 | 
			
		||||
    netHandler(socket, {
 | 
			
		||||
    tcpMods.tcpHandler(socket, {
 | 
			
		||||
      servername: socket.servername
 | 
			
		||||
    , encrypted: true
 | 
			
		||||
      // remoteAddress... ugh... https://github.com/nodejs/node/issues/8854
 | 
			
		||||
@ -232,7 +232,7 @@ module.exports.create = function (deps, config, netHandler) {
 | 
			
		||||
    newConnOpts.remoteAddress = opts.address || extractSocketProp(socket, 'remoteAddress');
 | 
			
		||||
    newConnOpts.remotePort    = opts.port    || extractSocketProp(socket, 'remotePort');
 | 
			
		||||
 | 
			
		||||
    deps.proxy(socket, newConnOpts, opts.firstChunk, function () {
 | 
			
		||||
    tcpMods.proxy(socket, newConnOpts, opts.firstChunk, function () {
 | 
			
		||||
      // This function is called in the event of a connection error and should decrypt
 | 
			
		||||
      // the socket so the proxy module can send a 502 HTTP response.
 | 
			
		||||
      var tlsOpts = localhostCerts.mergeTlsOptions('localhost.daplie.me', {isServer: true});
 | 
			
		||||
@ -48,12 +48,11 @@ function create(conf) {
 | 
			
		||||
 | 
			
		||||
  modules = {
 | 
			
		||||
    storage:  require('./storage').create(deps, conf)
 | 
			
		||||
  , proxy:    require('./proxy-conn').create(deps, conf)
 | 
			
		||||
  , socks5:   require('./socks5-server').create(deps, conf)
 | 
			
		||||
  , ddns:     require('./ddns').create(deps, conf)
 | 
			
		||||
  , mdns:     require('./mdns').create(deps, conf)
 | 
			
		||||
  , udp:      require('./udp').create(deps, conf)
 | 
			
		||||
  , tcp:      require('./goldilocks').create(deps, conf)
 | 
			
		||||
  , tcp:      require('./tcp').create(deps, conf)
 | 
			
		||||
  };
 | 
			
		||||
  Object.assign(deps, modules);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user