dns-suite.js/pure-parser-cli.js

53 lines
1.2 KiB
JavaScript

'use strict';
// EXAMPLE:
// node pure-parser.js samples/a-0.mdns.bin
// pass a terminal arg
var filename = process.argv[2];
if (!filename) {
console.error("Usage: node pure-parser-cli.js <path/to/sample.bin>");
console.error("Example: node pure-parser-cli.js ./samples/services-0.mdns.bin");
process.exit(1);
}
var PromiseA = require('bluebird');
var fs = PromiseA.promisifyAll(require('fs'));
var pdns = require('./pure-parser');
fs.readFileAsync(filename, null).then(function (nb) {
//
// current reference impl
//
//console.log(require('native-dns-packet').parse(nb));
//
// other reference impl
//
//console.log(require('dns-js').DNSPacket.parse(nb));
// nb is a Uint8Array (ArrayBufferView) for nb.buffer
// nb.buffer is the actual ArrayBuffer
var packet = pdns.unpack(nb.buffer);
function tryParseRdata(record) {
record.data = null;
record.error = null;
try {
record.data = pdns.unpackRdata(nb.buffer, packet, record);
} catch (e) {
record.error = e;
}
}
packet.answers.forEach(tryParseRdata);
packet.authority.forEach(tryParseRdata);
packet.additional.forEach(tryParseRdata);
console.log('[packet]', nb.byteLength, 'bytes:');
console.log(packet);
});