From ca219a00e45d5c432715c28f77f5329ca3bb5f57 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Fri, 5 Apr 2019 19:45:24 -0600 Subject: [PATCH] update for upcoming v3 --- lib/middleware.js | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/lib/middleware.js b/lib/middleware.js index 4309689..1535e53 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -49,20 +49,46 @@ module.exports.create = function (gl) { var copy = utils.merge({ domains: [ hostname ] }, gl); copy = utils.tplCopy(copy); + copy.challenge = {}; + copy.challenge.type = 'http-01'; // obviously... + copy.challenge.identifier = { type: 'dns', value: hostname }; + copy.challenge.wildcard = false; + copy.challenge.token = token; + copy.challenge.altname = hostname; - // TODO tpl copy? - // TODO need to restore challengeType - gl.challenges['http-01'].get(copy, hostname, token, function (err, secret) { - if (err || !token) { - res.statusCode = 404; - res.setHeader('Content-Type', 'application/json; charset=utf-8'); - res.end('{ "error": { "message": "Error: These aren\'t the tokens you\'re looking for. Move along." } }'); + function cb(opts) { + var secret = opts.keyAuthorization || opts; + if (secret && 'string' === typeof secret) { + res.setHeader('Content-Type', 'text/plain; charset=utf-8'); + res.end(secret); return; } + eb(new Error("couldn't retrieve keyAuthorization")); + return; + } + function eb(/*err*/) { + res.statusCode = 404; + res.setHeader('Content-Type', 'application/json; charset=utf-8'); + res.end('{ "error": { "message": "Error: These aren\'t the tokens you\'re looking for. Move along." } }'); + return; + } + function mb(err, result) { + if (err) { eb(err); return; } + cb(result); + } + + var challenger = gl.challenges['http-01'].get; + if (1 === challenger.length) { + /*global Promise*/ + return Promise.resolve().then(function () { + return gl.challenges['http-01'].get(copy); + }).then(cb).catch(eb); + } else if (2 === challenger.length) { + gl.challenges['http-01'].get(copy, mb); + } else { + gl.challenges['http-01'].get(copy, hostname, token, mb); + } - res.setHeader('Content-Type', 'text/plain; charset=utf-8'); - res.end(secret); - }); }; }; };