Comparing version 1.0.0 to 1.1.0
70
index.js
const dns = require('dns-socket'); | ||
const socket = dns(); | ||
DNSCAA = { }; | ||
DNSCAA.getDnsCaa = function (domain, dnsServer = '8.8.8.8') { | ||
DNSCAA.getDnsCaa = async function (domain, dnsServer = '8.8.8.8') { | ||
if (domain) { | ||
return _checkDomain(domain.replace('*.', ''), dnsServer); | ||
const result = await _checkDomain(domain.replace('*.', ''), dnsServer); | ||
return result; | ||
} | ||
@@ -15,28 +15,30 @@ else { | ||
DNSCAA.validate = function (domain, expectedCAAs, dnsServer = '8.8.8.8') { | ||
DNSCAA.validate = async function (domain, expectedCAAs, dnsServer = '8.8.8.8') { | ||
if (domain) { | ||
const dnsCaa = DNSCAA.getDnsCaa(domain, dnsServer); | ||
let result = { }; | ||
const dnsCaa = await DNSCAA.getDnsCaa(domain, dnsServer); | ||
if (!dnsCaa) { | ||
result.isDnsCaaSet = false; | ||
} | ||
else if (expectedCAAs) { | ||
result.isDnsCaaSet = true; | ||
let result = { | ||
hasDnsCaa: !!(dnsCaa && (dnsCaa.issue.length || dnsCaa.issuewild.length)), | ||
issue: [], | ||
issuewild: [], | ||
}; | ||
expectedCAAs.forEach(function (expectedCAA) { | ||
expectedCAA.issue.forEach(function (expectedIssue) { | ||
result.push({ | ||
if (expectedCAAs) { | ||
if (expectedCAAs.issue) { | ||
expectedCAAs.issue.forEach(function (expectedIssue) { | ||
result.issue.push({ | ||
caa: expectedIssue, | ||
exists: (dnsCaa.issue.indexOf(expectedIssue) === -1) | ||
exists: (dnsCaa.issue.indexOf(expectedIssue) != -1) | ||
}); | ||
}); | ||
} | ||
expectedCAA.issuewild.forEach(function (expectedIssuewild) { | ||
result.push({ | ||
if (expectedCAAs.issuewild) { | ||
expectedCAAs.issuewild.forEach(function (expectedIssuewild) { | ||
result.issuewild.push({ | ||
caa: expectedIssuewild, | ||
exists: (dnsCaa.issuewild.indexOf(expectedIssuewild) === -1) | ||
exists: (dnsCaa.issuewild.indexOf(expectedIssuewild) != -1) | ||
}); | ||
}); | ||
}); | ||
} | ||
} | ||
@@ -51,4 +53,4 @@ | ||
let _checkDomain = function (domain, dnsServer) { | ||
let checkResult = _checkDomainAsync(domain, dnsServer); | ||
let _checkDomain = async function (domain, dnsServer) { | ||
let checkResult = await _query(domain, dnsServer); | ||
@@ -73,15 +75,31 @@ if (checkResult && checkResult.answers) { | ||
let _checkDomainAsync = async function (domain, dnsServer) { | ||
let queryParams = { | ||
const _query = async function (domain, dnsServer) { | ||
const queryParams = { | ||
questions: [{ | ||
type: 'CAA', | ||
name: 'google.com' | ||
name: domain | ||
}] | ||
}; | ||
let response = await socket.query(queryParams, 53, dnsServer).promise(); | ||
const promise = new Promise(resolve => { | ||
_queryAsync(queryParams, dnsServer, (result) => { | ||
resolve(result); | ||
}); | ||
}); | ||
return response; | ||
const result = await promise; | ||
return result; | ||
}; | ||
const _queryAsync = function (queryParams, dnsServer, callback) { | ||
let socket = dns(); | ||
socket.query(queryParams, 53, dnsServer, (error, result) => { | ||
if (!error && result) { | ||
callback(result); | ||
socket.destroy(); | ||
} | ||
}); | ||
}; | ||
module.exports = DNSCAA; |
{ | ||
"name": "dns-caa", | ||
"version": "1.0.0", | ||
"version": "1.1.0", | ||
"description": "Check the DNS CAA for a given domain", | ||
@@ -17,3 +17,3 @@ "main": "index.js", | ||
"author": "Florian Schaeffler <git@schf.de>", | ||
"license": "ISC", | ||
"license": "MIT", | ||
"bugs": { | ||
@@ -24,4 +24,5 @@ "url": "https://github.com/fschaeffler/dns-caa/issues" | ||
"dependencies": { | ||
"bluebird": "^3.5.1", | ||
"dns-socket": "^3.0.0" | ||
} | ||
} |
5277
4
84
69
2
+ Addedbluebird@^3.5.1
+ Addedbluebird@3.7.2(transitive)