WIP cleanup

This commit is contained in:
AJ ONeal 2018-08-16 20:45:31 -06:00
parent aac54d63f2
commit 0285f9b40f
2 changed files with 83 additions and 75 deletions

View File

@ -10,18 +10,9 @@ try {
// opts.approveDomains(options, certs, cb) // opts.approveDomains(options, certs, cb)
module.exports.create = function (opts) { module.exports.create = function (opts) {
// accept all defaults for greenlock.challenges, greenlock.store, greenlock.middleware // accept all defaults for greenlock.challenges, greenlock.store, greenlock.middleware
opts._communityPackage = opts._communityPackage || 'greenlock-express.js'; if (!opts._communityPackage) {
var greenlock = require('greenlock').create(opts); opts._communityPackage = 'greenlock-express.js';
}
opts.app = opts.app || function (req, res) {
res.end("Hello, World!\nWith Love,\nGreenlock for Express.js");
};
opts.listen = function (plainPort, port) {
var promises = [];
var plainPorts = plainPort;
var ports = port;
var servers = [];
function explainError(e) { function explainError(e) {
console.error('Error:' + e.message); console.error('Error:' + e.message);
@ -38,22 +29,16 @@ module.exports.create = function (opts) {
console.error(e.code + ": '" + e.address + ":" + e.port + "'"); console.error(e.code + ": '" + e.address + ":" + e.port + "'");
} }
if (!plainPorts) { function _listenHttp(plainPort) {
plainPorts = 80; if (!plainPort) { plainPort = 80; }
} var p = plainPort;
if (!ports) { var validHttpPort = (parseInt(p, 10) >= 0);
ports = 443; if (!validHttpPort) { console.warn("'" + p + "' doesn't seem to be a valid port number for http"); }
} var plainServer = require('http').createServer(
greenlock.middleware.sanitizeHost(greenlock.middleware(require('redirect-https')()))
if (!Array.isArray(plainPorts)) { );
plainPorts = [ plainPorts ]; var promise = new PromiseA(function (resolve) {
ports = [ ports ]; plainServer.listen(p, function () {
}
plainPorts.forEach(function (p) {
if (!(parseInt(p, 10) >= 0)) { console.warn("'" + p + "' doesn't seem to be a valid port number for http"); }
promises.push(new PromiseA(function (resolve) {
require('http').createServer(greenlock.middleware(require('redirect-https')())).listen(p, function () {
console.log("Success! Bound to port '" + p + "' to handle ACME challenges and redirect to https"); console.log("Success! Bound to port '" + p + "' to handle ACME challenges and redirect to https");
resolve(); resolve();
}).on('error', function (e) { }).on('error', function (e) {
@ -61,12 +46,17 @@ module.exports.create = function (opts) {
explainError(e); explainError(e);
process.exit(0); process.exit(0);
}); });
}));
}); });
promise.server = plainServer;
return promise;
}
ports.forEach(function (p) { function _listenHttps(port) {
if (!(parseInt(p, 10) >= 0)) { console.warn("'" + p + "' doesn't seem to be a valid port number for https"); } if (!port) { port = 443; }
promises.push(new PromiseA(function (resolve) {
var p = port;
var validHttpsPort = (parseInt(p, 10) >= 0);
if (!validHttpsPort) { console.warn("'" + p + "' doesn't seem to be a valid port number for https"); }
var https; var https;
try { try {
https = require('spdy'); https = require('spdy');
@ -74,23 +64,41 @@ module.exports.create = function (opts) {
} catch(e) { } catch(e) {
https = require('https'); https = require('https');
} }
var server = https.createServer(greenlock.tlsOptions, greenlock.middleware(greenlock.app)).listen(p, function () { var server = https.createServer(
greenlock.tlsOptions
, greenlock.middleware.sanitizeHost(function (req, res) {
try {
greenlock.app(req, res);
} catch(e) {
console.error("[error] [greenlock.app] Your HTTP handler had an uncaught error:");
console.error(e);
}
})
);
var promise = new PromiseA(function (resolve) {
server.listen(p, function () {
console.log("Success! Serving https on port '" + p + "'"); console.log("Success! Serving https on port '" + p + "'");
resolve(); resolve(server);
}).on('error', function (e) { }).on('error', function (e) {
console.log("Did not successfully create https server and bind to port '" + p + "':"); console.log("Did not successfully create https server and bind to port '" + p + "':");
explainError(e); explainError(e);
process.exit(0); process.exit(0);
}); });
servers.push(server);
}));
}); });
promise.server = server;
if (!Array.isArray(port)) { return promise;
servers = servers[0];
} }
return servers; var greenlock = require('greenlock').create(opts);
opts.app = opts.app || function (req, res) {
res.end("Hello, World!\nWith Love,\nGreenlock for Express.js");
};
opts.listen = function (plainPort, port) {
var promises = [];
promises.push(_listenHttp(plainPort));
promises.push(_listenHttps(port));
}; };

View File

@ -1,6 +1,6 @@
{ {
"name": "greenlock-express", "name": "greenlock-express",
"version": "2.3.2", "version": "2.3.3",
"description": "Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.", "description": "Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.",
"main": "index.js", "main": "index.js",
"homepage": "https://git.coolaj86.com/coolaj86/greenlock-express.js", "homepage": "https://git.coolaj86.com/coolaj86/greenlock-express.js",
@ -8,7 +8,7 @@
"example": "examples" "example": "examples"
}, },
"dependencies": { "dependencies": {
"greenlock": "^2.3.7", "greenlock": "^2.3.10",
"le-challenge-fs": "^2.0.8", "le-challenge-fs": "^2.0.8",
"le-sni-auto": "^2.1.4", "le-sni-auto": "^2.1.4",
"le-store-certbot": "^2.1.0", "le-store-certbot": "^2.1.0",