refactor: separate handlers, allow multiple devices to respond

This commit is contained in:
AJ ONeal 2017-04-05 03:01:43 -04:00
parent 176e1c06a3
commit 50a4d9360a
2 changed files with 11 additions and 1 deletions

View File

@ -3,12 +3,18 @@
var http = require('http'); var http = require('http');
var tls = require('tls'); var tls = require('tls');
var packerStream = require('tunnel-packer').Stream; var packerStream = require('tunnel-packer').Stream;
var redirectHttps = require('redirect-https')();
module.exports.create = function (program) { module.exports.create = function (program) {
program.httpServer = http.createServer(function (req, res) { program.httpServer = http.createServer(function (req, res) {
console.log('req.socket.encrypted', req.socket.encrypted); console.log('req.socket.encrypted', req.socket.encrypted);
res.end("Look! I can do a thing!"); res.end("Look! I can do a thing!");
}); });
program.httpInsecureServer = http.createServer(function (req, res) {
res.setHeader('Connection', 'close');
redirectHttps(req, res);
});
program.httpTunnelServer = http.createServer(function (req, res) { program.httpTunnelServer = http.createServer(function (req, res) {
console.log('req.socket.encrypted', req.socket.encrypted); console.log('req.socket.encrypted', req.socket.encrypted);
res.end('Hello, World!'); res.end('Hello, World!');

View File

@ -42,13 +42,15 @@ Devices.exist = function (store, servername) {
}; };
Devices.next = function (store, servername) { Devices.next = function (store, servername) {
var devices = Devices.list(store, servername); var devices = Devices.list(store, servername);
var device;
if (devices._index >= devices.length) { if (devices._index >= devices.length) {
devices._index = 0; devices._index = 0;
} }
device = devices[devices._index || 0];
devices._index = (devices._index || 0) + 1; devices._index = (devices._index || 0) + 1;
return devices[devices._index]; return device;
}; };
module.exports.store = { Devices: Devices }; module.exports.store = { Devices: Devices };
@ -337,6 +339,8 @@ module.exports.create = function (copts) {
console.log('servername', servername); console.log('servername', servername);
if (/HTTP\//i.test(str)) { if (/HTTP\//i.test(str)) {
service = 'http'; service = 'http';
// TODO disallow http entirely
// /^\/\.well-known\/acme-challenge\//.test(str)
if (/well-known/.test(str)) { if (/well-known/.test(str)) {
// HTTP // HTTP
if (Devices.exist(deviceLists, servername)) { if (Devices.exist(deviceLists, servername)) {