|
@ -15,11 +15,13 @@ assert.throws(function () { |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var hosts = ['example.com', 'example.org', |
|
|
var hosts = ['example.com', |
|
|
|
|
|
'example.org', |
|
|
'ietf.org', // AAAA
|
|
|
'ietf.org', // AAAA
|
|
|
'google.com', // MX, multiple A records
|
|
|
'google.com', // MX, multiple A records
|
|
|
'_xmpp-client._tcp.google.com', // SRV
|
|
|
'_xmpp-client._tcp.google.com', // SRV
|
|
|
'oakalynhall.co.uk']; // Multiple PTR replies
|
|
|
'oakalynhall.co.uk' // Multiple PTR replies
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
var records = ['A', 'AAAA', 'MX', 'TXT', 'SRV']; |
|
|
var records = ['A', 'AAAA', 'MX', 'TXT', 'SRV']; |
|
|
|
|
|
|
|
@ -32,7 +34,6 @@ while (i--) { |
|
|
"| grep '^" + hosts[i] + "\\.\\W.*IN.*" + records[j] + "'" + |
|
|
"| grep '^" + hosts[i] + "\\.\\W.*IN.*" + records[j] + "'" + |
|
|
"| sed -E 's/[[:space:]]+/ /g' | cut -d ' ' -f 5- " + |
|
|
"| sed -E 's/[[:space:]]+/ /g' | cut -d ' ' -f 5- " + |
|
|
"| sed -e 's/\\.$//'"; |
|
|
"| sed -e 's/\\.$//'"; |
|
|
|
|
|
|
|
|
child_process.exec(hostCmd, checkDnsRecord(hosts[i], records[j])); |
|
|
child_process.exec(hostCmd, checkDnsRecord(hosts[i], records[j])); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -50,14 +51,12 @@ function checkDnsRecord(host, record) { |
|
|
case "AAAA": |
|
|
case "AAAA": |
|
|
dns.resolve(myHost, myRecord, function (error, result, ttl, cname) { |
|
|
dns.resolve(myHost, myRecord, function (error, result, ttl, cname) { |
|
|
if(error) result = []; |
|
|
if(error) result = []; |
|
|
|
|
|
|
|
|
cmpResults(expected, result, ttl, cname); |
|
|
cmpResults(expected, result, ttl, cname); |
|
|
|
|
|
|
|
|
// do reverse lookup check
|
|
|
// do reverse lookup check
|
|
|
var ll = result.length; |
|
|
var ll = result.length; |
|
|
while (ll--) { |
|
|
while (ll--) { |
|
|
var ip = result[ll]; |
|
|
var ip = result[ll]; |
|
|
|
|
|
|
|
|
var reverseCmd = "host " + ip + |
|
|
var reverseCmd = "host " + ip + |
|
|
"| cut -d \" \" -f 5-" + |
|
|
"| cut -d \" \" -f 5-" + |
|
|
"| sed -e 's/\\.$//'"; |
|
|
"| sed -e 's/\\.$//'"; |
|
@ -75,7 +74,6 @@ function checkDnsRecord(host, record) { |
|
|
while (ll--) { |
|
|
while (ll--) { |
|
|
strResult.push(result[ll].priority + " " + result[ll].exchange); |
|
|
strResult.push(result[ll].priority + " " + result[ll].exchange); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
cmpResults(expected, strResult, ttl, cname); |
|
|
cmpResults(expected, strResult, ttl, cname); |
|
|
}); |
|
|
}); |
|
|
break; |
|
|
break; |
|
@ -124,8 +122,14 @@ function checkReverse(ip) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
function cmpResults(expected, result, ttl, cname) { |
|
|
function cmpResults(expected, result, ttl, cname) { |
|
|
assert.equal(expected.length, result.length); |
|
|
if (expected.length != result.length) { |
|
|
|
|
|
if (expected.length == 1 && expected[0] == '3(NXDOMAIN)' && result.length == 0) { |
|
|
|
|
|
// it's ok, dig returns NXDOMAIN, while dns module returns nothing
|
|
|
|
|
|
} else { |
|
|
|
|
|
puts('---WARNING---\nexpected ' + expected + '\nresult ' + result + '\n-------------'); |
|
|
|
|
|
} |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
expected.sort(); |
|
|
expected.sort(); |
|
|
result.sort(); |
|
|
result.sort(); |
|
|
|
|
|
|
|
|