|
|
@ -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; |
|
|
|
return ( |
|
|
|
ch.dnsPrefix === record.name && |
|
|
|
ch.dnsAuthorization === record.content |
|
|
|
); |
|
|
|
})[0]; |
|
|
|
|
|
|
|
if (record) return { dnsAuthorization: record.content }; |
|
|
|
else return null; |
|
|
|
if (record) { |
|
|
|
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 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 { |
|
|
|
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; |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
}; |
|
|
|