add manual mode, move standalone to own module

This commit is contained in:
AJ ONeal 2016-08-09 23:39:07 -04:00
parent b068152fb9
commit 9e90c23259
5 changed files with 12 additions and 35 deletions

View File

@ -186,6 +186,9 @@ Options:
--standalone [BOOLEAN] Obtain certs using a "standalone" webserver. (Default is true) --standalone [BOOLEAN] Obtain certs using a "standalone" webserver. (Default is true)
--manual [BOOLEAN] Print the token and key to the screen and wait for you to hit enter,
giving you time to copy it somewhere before continuing. (Default is false)
--webroot BOOLEAN Obtain certs by placing files in a webroot directory. --webroot BOOLEAN Obtain certs by placing files in a webroot directory.
--webroot-path STRING public_html / webroot path. --webroot-path STRING public_html / webroot path.

View File

@ -22,7 +22,7 @@ cli.parse({
, 'config-dir': [ false, " Configuration directory.", 'string', '~/letsencrypt/etc/' ] , 'config-dir': [ false, " Configuration directory.", 'string', '~/letsencrypt/etc/' ]
, server: [ false, " ACME Directory Resource URI.", 'string', 'https://acme-v01.api.letsencrypt.org/directory)' ] , server: [ false, " ACME Directory Resource URI.", 'string', 'https://acme-v01.api.letsencrypt.org/directory)' ]
, standalone: [ false, " Obtain certs using a \"standalone\" webserver.", 'boolean', false ] , standalone: [ false, " Obtain certs using a \"standalone\" webserver.", 'boolean', false ]
//, manual: [ false, " Provide laborious manual instructions for obtaining a cert (default: false)", 'boolean', false ] , manual: [ false, " Print the token and key to the screen and wait for you to hit enter, giving you time to copy it somewhere before continuing (default: false)", 'boolean', false ]
, webroot: [ false, " Obtain certs by placing files in a webroot directory.", 'boolean', false ] , webroot: [ false, " Obtain certs by placing files in a webroot directory.", 'boolean', false ]
, 'webroot-path': [ false, " public_html / webroot path.", 'string' ] , 'webroot-path': [ false, " public_html / webroot path.", 'string' ]
//, 'standalone-supported-challenges': [ false, " Supported challenges, order preferences are randomly chosen. (default: http-01,tls-sni-01)", 'string', 'http-01,tls-sni-01'] //, 'standalone-supported-challenges': [ false, " Supported challenges, order preferences are randomly chosen. (default: http-01,tls-sni-01)", 'string', 'http-01,tls-sni-01']

View File

@ -19,12 +19,16 @@ module.exports.run = function (args) {
challengeType = 'http-01'; challengeType = 'http-01';
} }
if (args.webrootPath) { if (args.manual) {
leChallenge = require('le-challenge-manual').create({});
}
else if (args.webrootPath) {
// webrootPath is all that really matters here // webrootPath is all that really matters here
// TODO rename le-challenge-fs to le-challenge-webroot
leChallenge = require('./lib/webroot').create({ webrootPath: args.webrootPath }); leChallenge = require('./lib/webroot').create({ webrootPath: args.webrootPath });
} }
else if (USE_DNS !== args.standalone) { else if (USE_DNS !== args.standalone) {
leChallenge = require('./lib/standalone').create({}); leChallenge = require('le-challenge-standalone').create({});
servers = require('./lib/servers').create(leChallenge).startServers( servers = require('./lib/servers').create(leChallenge).startServers(
args.http01Port || [80], args.tlsSni01Port || [443, 5001] args.http01Port || [80], args.tlsSni01Port || [443, 5001]
, { debug: args.debug } , { debug: args.debug }

View File

@ -1,32 +0,0 @@
'use strict';
module.exports.create = function (defaults) {
var handlers = {
getOptions: function () {
return defaults;
}
//
// set,get,remove challenges
//
// Note: this is fine for a one-off CLI tool
// but a webserver using node-cluster or multiple
// servers should use a database of some sort
, _challenges: {}
, set: function (args, domain, token, secret, cb) {
handlers._challenges[token] = secret;
cb(null);
}
, get: function (args, domain, token, cb) {
// TODO keep in mind that, generally get args are just args.domains
// and it is disconnected from the flow of setChallenge and removeChallenge
cb(null, handlers._challenges[token]);
}
, remove: function (args, domain, token, cb) {
delete handlers._challenges[token];
cb(null);
}
};
return handlers;
};

View File

@ -36,6 +36,8 @@
"cli": "^0.11.1", "cli": "^0.11.1",
"homedir": "^0.6.0", "homedir": "^0.6.0",
"le-acme-core": "^2.0.5", "le-acme-core": "^2.0.5",
"le-challenge-manual": "^2.0.0",
"le-challenge-standalone": "^2.0.0",
"le-store-certbot": "^2.0.2", "le-store-certbot": "^2.0.2",
"letsencrypt": "^2.0.3", "letsencrypt": "^2.0.3",
"localhost.daplie.com-certificates": "^1.2.0", "localhost.daplie.com-certificates": "^1.2.0",