wip: cleanup
This commit is contained in:
parent
71746ca759
commit
2f29362693
|
@ -3,7 +3,7 @@
|
||||||
require('greenlock-express')
|
require('greenlock-express')
|
||||||
.init(function() {
|
.init(function() {
|
||||||
return {
|
return {
|
||||||
greenlock: require('./greenlock.js'),
|
packageRoot: __dirname,
|
||||||
|
|
||||||
// whether or not to run at cloudscale
|
// whether or not to run at cloudscale
|
||||||
cluster: false
|
cluster: false
|
||||||
|
|
|
@ -1,97 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var Greenlock = require('./');
|
|
||||||
|
|
||||||
module.exports.wrap = function(greenlock) {
|
|
||||||
greenlock.challenges = {};
|
|
||||||
greenlock.challenges.get = function(chall) {
|
|
||||||
// TODO pick one and warn on the others
|
|
||||||
// (just here due to some backwards compat issues with early v3 plugins)
|
|
||||||
var servername =
|
|
||||||
chall.servername ||
|
|
||||||
chall.altname ||
|
|
||||||
(chall.identifier && chall.identifier.value);
|
|
||||||
|
|
||||||
// TODO some sort of caching to prevent database hits?
|
|
||||||
return greenlock
|
|
||||||
._config({ servername: servername })
|
|
||||||
.then(function(site) {
|
|
||||||
if (!site) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hmm... this _should_ be impossible
|
|
||||||
if (!site.challenges || !site.challenges['http-01']) {
|
|
||||||
var copy = JSON.parse(JSON.stringify(site));
|
|
||||||
sanitizeCopiedConf(copy);
|
|
||||||
sanitizeCopiedConf(copy.store);
|
|
||||||
if (site.challenges) {
|
|
||||||
sanitizeCopiedConf(copy.challenges['http-01']);
|
|
||||||
sanitizeCopiedConf(copy.challenges['dns-01']);
|
|
||||||
sanitizeCopiedConf(copy.challenges['tls-alpn-01']);
|
|
||||||
}
|
|
||||||
console.warn('[Bug] Please report this error:');
|
|
||||||
console.warn(
|
|
||||||
'\terror: http-01 challenge requested, but not even a default http-01 config exists'
|
|
||||||
);
|
|
||||||
console.warn('\tservername:', JSON.stringify(servername));
|
|
||||||
console.warn('\tsite:', JSON.stringify(copy));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Greenlock._loadChallenge(site.challenges, 'http-01');
|
|
||||||
})
|
|
||||||
.then(function(plugin) {
|
|
||||||
if (!plugin) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return plugin
|
|
||||||
.get({
|
|
||||||
challenge: {
|
|
||||||
type: chall.type,
|
|
||||||
//hostname: chall.servername,
|
|
||||||
altname: chall.servername,
|
|
||||||
identifier: { value: chall.servername },
|
|
||||||
token: chall.token
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(function(result) {
|
|
||||||
var keyAuth;
|
|
||||||
var keyAuthDigest;
|
|
||||||
if (result) {
|
|
||||||
// backwards compat that shouldn't be dropped
|
|
||||||
// because new v3 modules had to do this to be
|
|
||||||
// backwards compatible with Greenlock v2.7 at
|
|
||||||
// the time.
|
|
||||||
if (result.challenge) {
|
|
||||||
result = result.challenge;
|
|
||||||
}
|
|
||||||
keyAuth = result.keyAuthorization;
|
|
||||||
keyAuthDigest = result.keyAuthorizationDigest;
|
|
||||||
}
|
|
||||||
if (/dns/.test(chall.type)) {
|
|
||||||
return {
|
|
||||||
keyAuthorizationDigest: keyAuthDigest
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
keyAuthorization: keyAuth
|
|
||||||
};
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
function sanitizeCopiedConf(copy) {
|
|
||||||
if (!copy) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object.keys(copy).forEach(function(k) {
|
|
||||||
if (/(api|key|token)/i.test(k) && 'string' === typeof copy[k]) {
|
|
||||||
copy[k] = '**redacted**';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return copy;
|
|
||||||
}
|
|
16
greenlock.js
16
greenlock.js
|
@ -12,7 +12,10 @@ var E = require('./errors.js');
|
||||||
var P = require('./plugins.js');
|
var P = require('./plugins.js');
|
||||||
var A = require('./accounts.js');
|
var A = require('./accounts.js');
|
||||||
var C = require('./certificates.js');
|
var C = require('./certificates.js');
|
||||||
|
|
||||||
var DIR = require('./lib/directory-url.js');
|
var DIR = require('./lib/directory-url.js');
|
||||||
|
var ChWrapper = require('./lib/challenges-wrapper.js');
|
||||||
|
var MngWrapper = require('./lib/manager-wrapper.js');
|
||||||
|
|
||||||
var UserEvents = require('./user-events.js');
|
var UserEvents = require('./user-events.js');
|
||||||
var GreenlockRc = require('./greenlockrc.js');
|
var GreenlockRc = require('./greenlockrc.js');
|
||||||
|
@ -61,6 +64,13 @@ G.create = function(gconf) {
|
||||||
var rc = GreenlockRc.resolve(gconf);
|
var rc = GreenlockRc.resolve(gconf);
|
||||||
gconf = Object.assign(rc, gconf);
|
gconf = Object.assign(rc, gconf);
|
||||||
|
|
||||||
|
// OK: /path/to/blah
|
||||||
|
// OK: npm-name-blah
|
||||||
|
// NOT OK: ./rel/path/to/blah
|
||||||
|
if ('.' === (gconf.manager || '')[0]) {
|
||||||
|
gconf.manager = gconf.packageRoot + '/' + gconf.manager;
|
||||||
|
}
|
||||||
|
|
||||||
// Wraps each of the following with appropriate error checking
|
// Wraps each of the following with appropriate error checking
|
||||||
// greenlock.manager.defaults
|
// greenlock.manager.defaults
|
||||||
// greenlock.sites.add
|
// greenlock.sites.add
|
||||||
|
@ -68,7 +78,7 @@ G.create = function(gconf) {
|
||||||
// greenlock.sites.remove
|
// greenlock.sites.remove
|
||||||
// greenlock.sites.find
|
// greenlock.sites.find
|
||||||
// greenlock.sites.get
|
// greenlock.sites.get
|
||||||
require('./manager-underlay.js').wrap(greenlock, gconf);
|
MngWrapper.wrap(greenlock, gconf);
|
||||||
// The goal here is to reduce boilerplate, such as error checking
|
// The goal here is to reduce boilerplate, such as error checking
|
||||||
// and duration parsing, that a manager must implement
|
// and duration parsing, that a manager must implement
|
||||||
greenlock.sites.add = greenlock.add = greenlock.manager.add;
|
greenlock.sites.add = greenlock.add = greenlock.manager.add;
|
||||||
|
@ -78,9 +88,9 @@ G.create = function(gconf) {
|
||||||
// Exports challenges.get for Greenlock Express HTTP-01,
|
// Exports challenges.get for Greenlock Express HTTP-01,
|
||||||
// and whatever odd use case pops up, I suppose
|
// and whatever odd use case pops up, I suppose
|
||||||
// greenlock.challenges.get
|
// greenlock.challenges.get
|
||||||
require('./challenges-underlay.js').wrap(greenlock);
|
ChWrapper.wrap(greenlock);
|
||||||
|
|
||||||
DIR._getStagingDirectoryUrl('', gconf.staging);
|
DIR._getDefaultDirectoryUrl('', gconf.staging);
|
||||||
if (gconf.directoryUrl) {
|
if (gconf.directoryUrl) {
|
||||||
gdefaults.directoryUrl = gconf.directoryUrl;
|
gdefaults.directoryUrl = gconf.directoryUrl;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var Greenlock = require('../');
|
||||||
|
|
||||||
|
module.exports.wrap = function(greenlock) {
|
||||||
|
greenlock.challenges = {};
|
||||||
|
greenlock.challenges.get = async function(chall) {
|
||||||
|
// TODO pick one and warn on the others
|
||||||
|
// (just here due to some backwards compat issues with early v3 plugins)
|
||||||
|
var servername =
|
||||||
|
chall.servername ||
|
||||||
|
chall.altname ||
|
||||||
|
(chall.identifier && chall.identifier.value);
|
||||||
|
|
||||||
|
// TODO some sort of caching to prevent database hits?
|
||||||
|
var site = await greenlock._config({ servername: servername });
|
||||||
|
if (!site) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hmm... this _should_ be impossible
|
||||||
|
if (!site.challenges || !site.challenges['http-01']) {
|
||||||
|
var copy = JSON.parse(JSON.stringify(site));
|
||||||
|
sanitizeCopiedConf(copy);
|
||||||
|
sanitizeCopiedConf(copy.store);
|
||||||
|
if (site.challenges) {
|
||||||
|
sanitizeCopiedConf(copy.challenges['http-01']);
|
||||||
|
sanitizeCopiedConf(copy.challenges['dns-01']);
|
||||||
|
sanitizeCopiedConf(copy.challenges['tls-alpn-01']);
|
||||||
|
}
|
||||||
|
console.warn('[Bug] Please report this error:');
|
||||||
|
console.warn(
|
||||||
|
'\terror: http-01 challenge requested, but not even a default http-01 config exists'
|
||||||
|
);
|
||||||
|
console.warn('\tservername:', JSON.stringify(servername));
|
||||||
|
console.warn('\tsite:', JSON.stringify(copy));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var plugin = await Greenlock._loadChallenge(site.challenges, 'http-01');
|
||||||
|
if (!plugin) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var keyAuth;
|
||||||
|
var keyAuthDigest;
|
||||||
|
var result = await plugin.get({
|
||||||
|
challenge: {
|
||||||
|
type: chall.type,
|
||||||
|
//hostname: chall.servername,
|
||||||
|
altname: chall.servername,
|
||||||
|
identifier: { value: chall.servername },
|
||||||
|
token: chall.token
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (result) {
|
||||||
|
// backwards compat that shouldn't be dropped
|
||||||
|
// because new v3 modules had to do this to be
|
||||||
|
// backwards compatible with Greenlock v2.7 at
|
||||||
|
// the time.
|
||||||
|
if (result.challenge) {
|
||||||
|
result = result.challenge;
|
||||||
|
}
|
||||||
|
keyAuth = result.keyAuthorization;
|
||||||
|
keyAuthDigest = result.keyAuthorizationDigest;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/dns/.test(chall.type)) {
|
||||||
|
return { keyAuthorizationDigest: keyAuthDigest };
|
||||||
|
}
|
||||||
|
|
||||||
|
return { keyAuthorization: keyAuth };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function sanitizeCopiedConf(copy) {
|
||||||
|
if (!copy) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object.keys(copy).forEach(function(k) {
|
||||||
|
if (/(api|key|token)/i.test(k) && 'string' === typeof copy[k]) {
|
||||||
|
copy[k] = '**redacted**';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return copy;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var U = require('./utils.js');
|
var U = require('../utils.js');
|
||||||
var E = require('./errors.js');
|
var E = require('../errors.js');
|
||||||
|
|
||||||
var warned = {};
|
var warned = {};
|
||||||
|
|
Loading…
Reference in New Issue