write json files too
This commit is contained in:
		
							parent
							
								
									578f57bf10
								
							
						
					
					
						commit
						50cfa7d8a6
					
				
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@ -4,14 +4,24 @@ dig.js
 | 
				
			|||||||
Create and capture DNS and mDNS query and response packets to disk as binary and/or JSON.
 | 
					Create and capture DNS and mDNS query and response packets to disk as binary and/or JSON.
 | 
				
			||||||
Options are similar to the Unix `dig` command.
 | 
					Options are similar to the Unix `dig` command.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Install
 | 
					Install with git
 | 
				
			||||||
-------
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
 | 
					# Install the latest of v1.x
 | 
				
			||||||
npm install -g 'git+https://git@git.daplie.com/Daplie/dig.js.git#v1'
 | 
					npm install -g 'git+https://git@git.daplie.com/Daplie/dig.js.git#v1'
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you don't have `git` installed you can also try the npm repo:
 | 
					```bash
 | 
				
			||||||
 | 
					# Install exactly v1.0.0
 | 
				
			||||||
 | 
					npm install -g 'git+https://git@git.daplie.com/Daplie/dig.js.git#v1.0.0'
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Install without git
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Don't have git? Well, you can also bow down to the gods of the centralized, monopolized, concentrated, *dictator*net
 | 
				
			||||||
 | 
					(as we like to call it here at Daplie Labs), if that's how you roll:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
npm install -g dig.js
 | 
					npm install -g dig.js
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										40
									
								
								bin/dig.js
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								bin/dig.js
									
									
									
									
									
								
							@ -1,6 +1,6 @@
 | 
				
			|||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var dnsjs = require('../../dns-lint');
 | 
					var dnsjs = require('dns-suite');
 | 
				
			||||||
var cli = require('cli');
 | 
					var cli = require('cli');
 | 
				
			||||||
cli.parse({
 | 
					cli.parse({
 | 
				
			||||||
//  'b': [ false, 'set source IP address (defaults to 0.0.0.0)', 'string' ]
 | 
					//  'b': [ false, 'set source IP address (defaults to 0.0.0.0)', 'string' ]
 | 
				
			||||||
@ -89,30 +89,44 @@ function hexdump(ab) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function writeQuery(opts, query, queryAb) {
 | 
					function writeQuery(opts, query, queryAb) {
 | 
				
			||||||
  var path = require('path');
 | 
					  var path = require('path');
 | 
				
			||||||
  var filename = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.query.bin';
 | 
					  var binname = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.query.bin';
 | 
				
			||||||
  var fullpath = opts.output + '.' + filename;
 | 
					  var jsonname = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.query.json';
 | 
				
			||||||
 | 
					  var binpath = opts.output + '.' + binname;
 | 
				
			||||||
 | 
					  var jsonpath = opts.output + '.' + jsonname;
 | 
				
			||||||
 | 
					  var json = JSON.stringify(query, null, 2);
 | 
				
			||||||
  if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
 | 
					  if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
 | 
				
			||||||
    fullpath = path.join(opts.output, filename);
 | 
					    binpath = path.join(opts.output, binname);
 | 
				
			||||||
 | 
					    jsonpath = path.join(opts.output, jsonname);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fs.writeFileAsync(fullpath, Buffer.from(queryAb)).then(function () {
 | 
					  fs.writeFileAsync(binpath, Buffer.from(queryAb)).then(function () {
 | 
				
			||||||
    console.log('wrote ' + queryAb.byteLength + ' bytes to ' + fullpath);
 | 
					    console.log('wrote ' + queryAb.byteLength + ' bytes to ' + binpath);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  fs.writeFileAsync(jsonpath, json).then(function () {
 | 
				
			||||||
 | 
					    console.log('wrote ' + json.length + ' bytes to ' + jsonpath);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var count = 0;
 | 
					var count = 0;
 | 
				
			||||||
function writeResponse(opts, query, nb) {
 | 
					function writeResponse(opts, query, nb, packet) {
 | 
				
			||||||
  var path = require('path');
 | 
					  var path = require('path');
 | 
				
			||||||
  var filename = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.' + count + '.bin';
 | 
					  var binname = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.' + count + '.bin';
 | 
				
			||||||
  var fullpath = opts.output + '.' + filename;
 | 
					  var jsonname = query.question[0].name + '.' + query.question[0].typeName.toLowerCase() + '.' + count + '.json';
 | 
				
			||||||
 | 
					  var binpath = opts.output + '.' + binname;
 | 
				
			||||||
 | 
					  var jsonpath = opts.output + '.' + jsonname;
 | 
				
			||||||
 | 
					  var json = JSON.stringify(packet, null, 2);
 | 
				
			||||||
  if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
 | 
					  if (-1 !== ['.', '/', '\\' ].indexOf(opts.output[opts.output.length -1])) {
 | 
				
			||||||
    fullpath = path.join(opts.output, filename);
 | 
					    binpath = path.join(opts.output, binname);
 | 
				
			||||||
 | 
					    jsonpath = path.join(opts.output, jsonname);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  count += 1;
 | 
					  count += 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fs.writeFileAsync(fullpath, nb).then(function () {
 | 
					  fs.writeFileAsync(binpath, nb).then(function () {
 | 
				
			||||||
    console.log('wrote ' + nb.length + ' bytes to ' + fullpath);
 | 
					    console.log('wrote ' + nb.byteLength + ' bytes to ' + binpath);
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  fs.writeFileAsync(jsonpath, json).then(function () {
 | 
				
			||||||
 | 
					    console.log('wrote ' + json.length + ' bytes to ' + jsonpath);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -194,7 +208,7 @@ function request(query, opts) {
 | 
				
			|||||||
    if (opts.output) {
 | 
					    if (opts.output) {
 | 
				
			||||||
      console.log('');
 | 
					      console.log('');
 | 
				
			||||||
      writeQuery(opts, query, queryAb);
 | 
					      writeQuery(opts, query, queryAb);
 | 
				
			||||||
      writeResponse(opts, query, nb);
 | 
					      writeResponse(opts, query, nb, packet);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  handlers.onListening = function () {
 | 
					  handlers.onListening = function () {
 | 
				
			||||||
 | 
				
			|||||||
@ -22,5 +22,8 @@
 | 
				
			|||||||
    "json"
 | 
					    "json"
 | 
				
			||||||
  ],
 | 
					  ],
 | 
				
			||||||
  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)",
 | 
					  "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)",
 | 
				
			||||||
  "license": "(MIT OR Apache-2.0)"
 | 
					  "license": "(MIT OR Apache-2.0)",
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "dns-suite": "git+https://git@git.daplie.com:Daplie/dns-suite#v1"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user