Horo
Horo

Reputation: 102

How can I check DNS using nodejs?

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

Answers (2)

Philip O'Brien
Philip O'Brien

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

Horo
Horo

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

Related Questions