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