wip: cleanup
This commit is contained in:
parent
71746ca759
commit
2f29362693
|
@ -3,7 +3,7 @@
|
|||
require('greenlock-express')
|
||||
.init(function() {
|
||||
return {
|
||||
greenlock: require('./greenlock.js'),
|
||||
packageRoot: __dirname,
|
||||
|
||||
// whether or not to run at cloudscale
|
||||
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 A = require('./accounts.js');
|
||||
var C = require('./certificates.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 GreenlockRc = require('./greenlockrc.js');
|
||||
|
@ -61,6 +64,13 @@ G.create = function(gconf) {
|
|||
var rc = GreenlockRc.resolve(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
|
||||
// greenlock.manager.defaults
|
||||
// greenlock.sites.add
|
||||
|
@ -68,7 +78,7 @@ G.create = function(gconf) {
|
|||
// greenlock.sites.remove
|
||||
// greenlock.sites.find
|
||||
// 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
|
||||
// and duration parsing, that a manager must implement
|
||||
greenlock.sites.add = greenlock.add = greenlock.manager.add;
|
||||
|
@ -78,9 +88,9 @@ G.create = function(gconf) {
|
|||
// Exports challenges.get for Greenlock Express HTTP-01,
|
||||
// and whatever odd use case pops up, I suppose
|
||||
// greenlock.challenges.get
|
||||
require('./challenges-underlay.js').wrap(greenlock);
|
||||
ChWrapper.wrap(greenlock);
|
||||
|
||||
DIR._getStagingDirectoryUrl('', gconf.staging);
|
||||
DIR._getDefaultDirectoryUrl('', gconf.staging);
|
||||
if (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';
|
||||
|
||||
var U = require('./utils.js');
|
||||
var E = require('./errors.js');
|
||||
var U = require('../utils.js');
|
||||
var E = require('../errors.js');
|
||||
|
||||
var warned = {};
|
||||
|
Loading…
Reference in New Issue