format like DiG
This commit is contained in:
parent
26816ee0b1
commit
e23046f736
77
bin/dig.js
77
bin/dig.js
|
@ -23,6 +23,41 @@ var PromiseA = require('bluebird');
|
||||||
var fs = PromiseA.promisifyAll(require('fs'));
|
var fs = PromiseA.promisifyAll(require('fs'));
|
||||||
var dgram = require('dgram');
|
var dgram = require('dgram');
|
||||||
var commonTypes = [ 'A', 'AAAA', 'CNAME', 'MX', 'NS', 'PTR', 'SOA', 'SRV', 'TXT' ];
|
var commonTypes = [ 'A', 'AAAA', 'CNAME', 'MX', 'NS', 'PTR', 'SOA', 'SRV', 'TXT' ];
|
||||||
|
var commonPrinters = {
|
||||||
|
'ANY': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.data || q.rdata || 'unknown record type');
|
||||||
|
}
|
||||||
|
|
||||||
|
, 'A': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.address);
|
||||||
|
}
|
||||||
|
, 'AAAA': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.address);
|
||||||
|
}
|
||||||
|
, 'CNAME': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.data + '.');
|
||||||
|
}
|
||||||
|
, 'MX': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.priority + ' ' + q.exchange + '.');
|
||||||
|
}
|
||||||
|
, 'NS': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.data);
|
||||||
|
}
|
||||||
|
, 'PTR': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.data);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
, 'SOA': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.data);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
, 'SRV': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, q.priority + ' ' + q.weight + ' ' + q.port + ' ' + q.target);
|
||||||
|
}
|
||||||
|
, 'TXT': function (q) {
|
||||||
|
console.log(';' + q.name + '.', q.ttl, q.className, q.typeName, '"' + q.data.join('" "') + '"');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function hexdump(ab) {
|
function hexdump(ab) {
|
||||||
var ui8 = new Uint8Array(ab);
|
var ui8 = new Uint8Array(ab);
|
||||||
|
@ -89,14 +124,48 @@ function request(query, opts) {
|
||||||
server.close();
|
server.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts.debug) {
|
||||||
|
console.log('');
|
||||||
|
console.log('DNS Response:');
|
||||||
|
console.log(packet);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
console.log('; <<>> dig.js ' + 'v0.0.0' + ' <<>> ' + query.question[0].name);
|
||||||
|
console.log(';; Got answer:');
|
||||||
|
console.log(';; ->>HEADER<<-');
|
||||||
|
console.log(JSON.stringify(packet.header));
|
||||||
|
console.log('');
|
||||||
|
console.log(';; QUESTION SECTION:');
|
||||||
|
packet.question.forEach(function (q) {
|
||||||
|
console.log(';' + q.name + '.', ' ', q.className, q.typeName);
|
||||||
|
});
|
||||||
|
function print(q) {
|
||||||
|
var printer = commonPrinters[q.typeName] || commonPrinters.ANY;
|
||||||
|
printer(q);
|
||||||
|
}
|
||||||
|
if (packet.answer.length) {
|
||||||
|
console.log('');
|
||||||
|
console.log(';; ANSWER SECTION:');
|
||||||
|
packet.answer.forEach(print);
|
||||||
|
}
|
||||||
|
if (packet.authority.length) {
|
||||||
|
console.log('');
|
||||||
|
console.log(';; AUTHORITY SECTION:');
|
||||||
|
packet.authority.forEach(print);
|
||||||
|
}
|
||||||
|
if (packet.additional.length) {
|
||||||
|
console.log('');
|
||||||
|
console.log(';; ADDITIONAL SECTION:');
|
||||||
|
packet.additional.forEach(print);
|
||||||
|
}
|
||||||
|
console.log('');
|
||||||
|
console.log(';; MSG SIZE rcvd: ' + nb.byteLength);
|
||||||
console.log('');
|
console.log('');
|
||||||
console.log('DNS Response:');
|
|
||||||
console.log(packet);
|
|
||||||
|
|
||||||
if (opts.output) {
|
if (opts.output) {
|
||||||
var path = require('path');
|
|
||||||
var filename = packet.question[0].typeName + '-' + count + '.bin';
|
var filename = packet.question[0].typeName + '-' + count + '.bin';
|
||||||
var fullpath = path.join('samples', filename);
|
var fullpath = opts.output + filename;
|
||||||
|
|
||||||
count += 1;
|
count += 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue