From 138e2ecfaeb7cf40940386a9956870d05e8f5793 Mon Sep 17 00:00:00 2001 From: AJ ONeal Date: Tue, 30 Jul 2019 19:28:13 -0600 Subject: [PATCH] bugfixes and metadata updates --- README.md | 3 ++- lib/index.js | 75 +++++++++++++++++++++++++++++++--------------------- package.json | 9 ++++--- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index cac0a4e..d02c084 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ node ./test.js example.com johndoe xxxxxx # Authors - AJ ONeal -- Hitesh Walia +- Hitesh Walia See AUTHORS for contact info. @@ -108,5 +108,6 @@ See AUTHORS for contact info. [acme-dns-01-dnsimple.js](https://git.coolaj86.com/coolaj86/acme-dns-01-dnsimple.js) | MPL-2.0 | [Terms of Use](https://therootcompany.com/legal/#terms) | [Privacy Policy](https://therootcompany.com/legal/#privacy) +Copyright 2019 Hitesh Walia Copyright 2019 AJ ONeal Copyright 2019 The Root Group LLC diff --git a/lib/index.js b/lib/index.js index 2afbb44..8f4bf17 100644 --- a/lib/index.js +++ b/lib/index.js @@ -46,6 +46,7 @@ module.exports.create = function(config) { }, zones: function(data) { // console.info('List Zones', data); + return api('GET', '/' + account + '/zones').then(function(resp) { return resp['body']['data'].map(function(elem) { //console.log('DEBUG >>> elem.name: ' + elem.name); @@ -54,19 +55,19 @@ module.exports.create = function(config) { }); }, set: function(data) { + // console.info('Add TXT', data); var ch = data.challenge; + if (!ch.dnsZone) { throw new Error('No matching zone for ' + ch.dnsHost); } - // console.info('Add TXT', data); - var ch = data.challenge; var txt = ch.dnsAuthorization; return api( 'POST', '/' + account + '/zones/' + ch.dnsZone + '/records', { - name: '', + name: ch.dnsPrefix, type: 'TXT', content: txt } @@ -81,44 +82,58 @@ module.exports.create = function(config) { }, get: function(data) { // console.info('List TXT', data); + var ch = data.challenge; + // TODO use :name_like + // https://developer.dnsimple.com/v2/zones/records/ return api( 'GET', '/' + account + '/zones/' + data.challenge.dnsZone + '/records' ).then(function(resp) { var record = resp.body.data.filter(function(record) { - return data.challenge.dnsAuthorization === record.content; - })[0]; - - if (record) return { dnsAuthorization: record.content }; - else return null; - }); - }, - remove: function(data) { - return api( - 'GET', - '/' + account + '/zones/' + data.challenge.dnsZone + '/records' - ).then(function(resp) { - var record = resp.body.data.filter(function(record) { - return data.challenge.dnsAuthorization === record.content; + return ( + ch.dnsPrefix === record.name && + ch.dnsAuthorization === record.content + ); })[0]; if (record) { - return api( - 'DELETE', - '/' + - account + - '/zones/' + - data.challenge.dnsZone + - '/records/' + - record.id - ).then(function(resp) { - // console.info('DEBUG >>> resp: ', JSON.stringify(resp, null, 2)); - return true; - }); - } else { + return { dnsAuthorization: record.content }; + } + + return null; + }); + }, + remove: function(data) { + // console.info('Remove TXT', data); + var ch = data.challenge; + + return api( + 'GET', + '/' + account + '/zones/' + data.challenge.dnsZone + '/records' + ).then(function(resp) { + var record = resp.body.data.filter(function(record) { + return ( + ch.dnsPrefix === record.name && + ch.dnsAuthorization === record.content + ); + })[0]; + + if (!record) { throw new Error('Txt Record not found for removal'); } + return api( + 'DELETE', + '/' + + account + + '/zones/' + + ch.dnsZone + + '/records/' + + record.id + ).then(function(resp) { + // console.info('DEBUG >>> resp: ', JSON.stringify(resp, null, 2)); + return true; + }); }); } }; diff --git a/package.json b/package.json index b55ba41..ab732bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "acme-dns-01-dnsimple", - "version": "0.0.1", + "version": "3.0.0", "description": "DNSimple + Let's Encrypt for Node.js - ACME dns-01 challenges w/ ACME.js and Greenlock.js", "main": "index.js", "files": [ @@ -12,7 +12,7 @@ }, "repository": { "type": "git", - "url": "https://git.coolaj86.com/coolaj86/acme-dns-01-dnsimple.js.git" + "url": "https://git.rootprojects.org/root/acme-dns-01-dnsimple.js.git" }, "keywords": [ "dnsimple", @@ -22,7 +22,10 @@ "acme", "greenlock" ], - "author": "AJ ONeal (https://coolaj86.com/), Hitesh Walia (https://coolaj86.com/)" + ], "license": "MPL-2.0", "devDependencies": { "acme-challenge-test": "^3.3.2",