diff --git a/lib/tunnel.js b/lib/tunnel.js deleted file mode 100644 index a4ea58c..0000000 --- a/lib/tunnel.js +++ /dev/null @@ -1,144 +0,0 @@ -'use strict'; - -module.exports.create = function (opts, servers) { - // servers = { plainserver, server } - var Oauth3 = require('oauth3-cli'); - var Tunnel = require('daplie-tunnel').create({ - Oauth3: Oauth3 - , PromiseA: opts.PromiseA - , CLI: { - init: function (rs, ws/*, state, options*/) { - // noop - return ws; - } - } - }).Tunnel; - var stunnel = require('stunnel'); - var killcount = 0; - - /* - var Dup = { - write: function (chunk, encoding, cb) { - this.__my_socket.push(chunk, encoding); - cb(); - } - , read: function (size) { - var x = this.__my_socket.read(size); - if (x) { this.push(x); } - } - , setTimeout: function () { - console.log('TODO implement setTimeout on Duplex'); - } - }; - - var httpServer = require('http').createServer(function (req, res) { - console.log('req.socket.encrypted', req.socket.encrypted); - res.end('Hello, tunneled World!'); - }); - - var tlsServer = require('tls').createServer(opts.httpsOptions, function (tlsSocket) { - console.log('tls connection'); - // things get a little messed up here - httpServer.emit('connection', tlsSocket); - - // try again - //servers.server.emit('connection', tlsSocket); - }); - */ - - process.on('SIGINT', function () { - killcount += 1; - console.log('[quit] closing http and https servers'); - if (killcount >= 3) { - process.exit(1); - } - if (servers.server) { - servers.server.close(); - } - if (servers.insecureServer) { - servers.insecureServer.close(); - } - }); - - return Tunnel.token({ - refreshToken: opts.refreshToken - , email: opts.email - , domains: opts.sites.map(function (site) { - return site.name; - }) - , device: { hostname: opts.devicename || opts.device } - }).then(function (result) { - // { jwt, tunnelUrl } - var locals = []; - opts.sites.map(function (site) { - locals.push({ - protocol: 'https' - , hostname: site.name - , port: opts.port - }); - locals.push({ - protocol: 'http' - , hostname: site.name - , port: opts.insecurePort || opts.port - }); - }); - return stunnel.connect({ - token: result.jwt - , stunneld: result.tunnelUrl - // XXX TODO BUG // this is just for testing - , insecure: /*opts.insecure*/ true - , locals: locals - // a simple passthru is proving to not be so simple - , net: require('net') /* - { - createConnection: function (info, cb) { - // data is the hello packet / first chunk - // info = { data, servername, port, host, remoteAddress: { family, address, port } } - - var myDuplex = new (require('stream').Duplex)(); - var myDuplex2 = new (require('stream').Duplex)(); - // duplex = { write, push, end, events: [ 'readable', 'data', 'error', 'end' ] }; - - myDuplex2.__my_socket = myDuplex; - myDuplex.__my_socket = myDuplex2; - - myDuplex2._write = Dup.write; - myDuplex2._read = Dup.read; - - myDuplex._write = Dup.write; - myDuplex._read = Dup.read; - - myDuplex.remoteFamily = info.remoteFamily; - myDuplex.remoteAddress = info.remoteAddress; - myDuplex.remotePort = info.remotePort; - - // socket.local{Family,Address,Port} - myDuplex.localFamily = 'IPv4'; - myDuplex.localAddress = '127.0.01'; - myDuplex.localPort = info.port; - - myDuplex.setTimeout = Dup.setTimeout; - - // this doesn't seem to work so well - //servers.server.emit('connection', myDuplex); - - // try a little more manual wrapping / unwrapping - var firstByte = info.data[0]; - if (firstByte < 32 || firstByte >= 127) { - tlsServer.emit('connection', myDuplex); - } - else { - httpServer.emit('connection', myDuplex); - } - - if (cb) { - process.nextTick(cb); - } - - return myDuplex2; - } - } - //*/ - }); - }); -}; diff --git a/package.json b/package.json index cb2446c..67be583 100644 --- a/package.json +++ b/package.json @@ -41,29 +41,26 @@ "bluebird": "^3.4.6", "body-parser": "git+https://github.com/expressjs/body-parser.git#1.16.1", "commander": "^2.9.0", - "daplie-tunnel": "git+https://git.daplie.com/Daplie/daplie-cli-tunnel.git#master", - "ddns-cli": "git+https://git.daplie.com/Daplie/node-ddns-client.git#master", "express": "git+https://github.com/expressjs/express.git#4.x", "finalhandler": "^0.4.0", "greenlock": "git+https://git.daplie.com/Daplie/node-greenlock.git#master", - "greenlock-express": "git+https://git.daplie.com/Daplie/greenlock-express.git#master", - "httpolyglot": "^0.1.1", "ipaddr.js": "git+https://github.com/whitequark/ipaddr.js.git#v1.3.0", "ipify": "^1.1.0", "js-yaml": "^3.8.3", + "jsonwebtoken": "^7.4.0", "le-challenge-ddns": "git+https://git.daplie.com/Daplie/le-challenge-ddns.git#master", "le-challenge-fs": "git+https://git.daplie.com/Daplie/le-challenge-webroot.git#master", "le-challenge-sni": "^2.0.1", - "livereload": "^0.6.0", + "le-store-certbot": "git+https://git.daplie.com/Daplie/le-store-certbot.git#master", "localhost.daplie.me-certificates": "^1.3.0", - "minimist": "^1.1.1", - "oauth3-cli": "git+https://git.daplie.com/OAuth3/oauth3-cli.git#master", "recase": "git+https://git.daplie.com/coolaj86/recase-js.git#v1.0.4", "redirect-https": "^1.1.0", + "request": "^2.81.0", "scmp": "git+https://github.com/freewil/scmp.git#1.x", "serve-index": "^1.7.0", "serve-static": "^1.10.0", "server-destroy": "^1.0.1", + "sni": "^1.0.0", "socket-pair": "^1.0.0", "stream-pair": "^1.0.3", "stunnel": "git+https://git.daplie.com/Daplie/node-tunnel-client.git#v1" diff --git a/stages/01-serve.js b/stages/01-serve.js deleted file mode 100644 index 8f92791..0000000 --- a/stages/01-serve.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -var https = require('httpolyglot'); -var httpsOptions = require('localhost.daplie.me-certificates').merge({}); -var httpsPort = 8443; -var redirectApp = require('redirect-https')({ - port: httpsPort -}); - -var server = https.createServer(httpsOptions); - -server.on('request', function (req, res) { - if (!req.socket.encrypted) { - redirectApp(req, res); - return; - } - - res.end("Hello, Encrypted World!"); -}); - -server.listen(httpsPort, function () { - console.log('https://' + 'localhost.daplie.me' + (443 === httpsPort ? ':' : ':' + httpsPort)); -});