Reputation: 102
I need to do recursive check DNS, like linux's command
$ dig +recurse some.site
with nodejs. This 'request' have to return object of DNS, because I need to work with them.
I need this feature to take rightly DNS, it have to get round TTL(I'm not sure that it correctly sounds on English). Can standard dns module do this?
Upvotes: 2
Views: 6576
Reputation: 4266
You could use the core DNS module. The first example they give does a lookup of www.google.com
var dns = require('dns');
dns.lookup('www.google.com', function onLookup(err, addresses, family) {
console.log('addresses:', addresses);
});
Also have a look at this native-dns module
Upvotes: 13
Reputation: 102
I have done it! I used this module.
First I define question:
var question = dns.Question({
name: 'somesite.com',
type: 'A',
});
Second I do request to root server:
var dns = require('native-dns');
var standard_dns = require('dns'); //for dns.lookup() function
var req = dns.Request({
question: question,
server: { address: '199.7.91.13', port: 53, type: 'udp' },
timeout: 1000,
});
Then I do this:
req.on('message', function (err, answer) {
answer.authority.forEach(function(a){ //looking each authority server
var addresses = String(a.data),//stringify it
standard_dns.lookup(addresses, function(e, add){ //lookup this server with standard 'dns' module
var req = dns.Request({
question: question,//question for somesite.com
server: {address: add}//do request on this server
})
req.on('message', function(e, a){
console.log(a);//a - is what you need
})
req.send(); //send request
})
})
});
Upvotes: 4