diff --git a/index.js b/index.js index d3d3795..8a734c6 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,7 @@ 'use strict'; -var PromiseA = require('bluebird'); -var dns = PromiseA.promisifyAll(require('dns')); var Challenge = module.exports; -var leDnsResponse; - Challenge.create = function (defaults) { return { getOptions: function () { @@ -30,7 +26,7 @@ Challenge.set = function (args, domain, challenge, keyAuthorization, cb) { if (this.leDnsResponse) { this.leDnsResponse(challenge, keyAuthorization, keyAuthDigest, challengeDomain, domain) - .then((successMessage) => { + .then(function (/*successMessage*/) { cb(null); }); } else { @@ -72,47 +68,3 @@ Challenge.remove = function (args, domain, challenge, cb) { cb(null); //}); }; - -Challenge.loopback = function (defaults, domain, challenge, done) { - var challengeDomain = (defaults.test || '') + defaults.acmeChallengeDns + domain; - console.log("dig TXT +noall +answer @8.8.8.8 '" + challengeDomain + "' # " + challenge); - dns.resolveTxtAsync(challengeDomain).then(function (x) { done(null, x); }, done); -}; - -Challenge.test = function (args, domain, challenge, keyAuthorization, done) { - var me = this; - - args.test = args.test || '_test.'; - defaults.test = args.test; - - me.set(args, domain, challenge, keyAuthorization || challenge, function (err, k) { - if (err) { done(err); return; } - - me.loopback(defaults, domain, challenge, function (err, arr) { - if (err) { done(err); return; } - - if (!arr.some(function (a) { - return a.some(function (keyAuthDigest) { - return keyAuthDigest === k; - }); - })) { - err = new Error("txt record '" + challenge + "' doesn't match '" + k + "'"); - } - - me.remove(defaults, domain, challenge, function (_err) { - if (_err) { done(_err); return; } - - // TODO needs to use native-dns so that specific nameservers can be used - // (otherwise the cache will still have the old answer) - done(err || null); - /* - me.loopback(defaults, domain, challenge, function (err) { - if (err) { done(err); return; } - - done(); - }); - */ - }); - }); - }); -} diff --git a/test.js b/test.js index 749a4f8..3a5e197 100644 --- a/test.js +++ b/test.js @@ -1,11 +1,58 @@ 'use strict'; -var leChallengeDns = require('./').create({ }); +var PromiseA = require('bluebird'); +var resolveTxtAsync = PromiseA.promisify(require('dns').resolveTxt); +var Challenge = require('./'); +var leChallengeDns = Challenge.create({ }); var opts = leChallengeDns.getOptions(); -var domain = 'test.daplie.me'; +var domain = 'test.example.com'; var challenge = 'xxx-acme-challenge-xxx'; var keyAuthorization = 'xxx-acme-challenge-xxx.xxx-acme-authorization-xxx'; +Challenge.loopback = function (defaults, domain, challenge, done) { + var challengeDomain = (defaults.test || '') + defaults.acmeChallengeDns + domain; + console.log("dig TXT +noall +answer @8.8.8.8 '" + challengeDomain + "' # " + challenge); + resolveTxtAsync(challengeDomain).then(function (x) { done(null, x); }, done); +}; + +Challenge.test = function (args, domain, challenge, keyAuthorization, done) { + var me = this; + + args.test = args.test || '_test.'; + //defaults.test = args.test; + + me.set(args, domain, challenge, keyAuthorization || challenge, function (err, k) { + if (err) { done(err); return; } + + me.loopback(/*defaults*/args, domain, challenge, function (err, arr) { + if (err) { done(err); return; } + + if (!arr.some(function (a) { + return a.some(function (keyAuthDigest) { + return keyAuthDigest === k; + }); + })) { + err = new Error("txt record '" + challenge + "' doesn't match '" + k + "'"); + } + + me.remove(/*defaults*/args, domain, challenge, function (_err) { + if (_err) { done(_err); return; } + + // TODO needs to use native-dns so that specific nameservers can be used + // (otherwise the cache will still have the old answer) + done(err || null); + /* + me.loopback(defaults, domain, challenge, function (err) { + if (err) { done(err); return; } + + done(); + }); + */ + }); + }); + }); +}; + setTimeout(function () { leChallengeDns.test(opts, domain, challenge, keyAuthorization, function (err) { // if there's an error, there's a problem