forked from coolaj86/digd.js
		
	use proper rcodes
This commit is contained in:
		
							parent
							
								
									f945da161b
								
							
						
					
					
						commit
						0151500ac8
					
				
							
								
								
									
										19
									
								
								bin/digd.js
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								bin/digd.js
									
									
									
									
									
								
							| @ -12,6 +12,10 @@ var common = require('dig.js/common'); | |||||||
| var defaultNameservers = require('dns').getServers(); | var defaultNameservers = require('dns').getServers(); | ||||||
| var hexdump; | var hexdump; | ||||||
| 
 | 
 | ||||||
|  | var SERVFAIL = 2; | ||||||
|  | //var NXDOMAIN = 3;
 | ||||||
|  | var REFUSED = 5; | ||||||
|  | 
 | ||||||
| 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' ]
 | ||||||
|   'class': [ 'c', 'class (defaults to IN)', 'string', 'IN' ] |   'class': [ 'c', 'class (defaults to IN)', 'string', 'IN' ] | ||||||
| @ -170,9 +174,10 @@ cli.main(function (args, cli) { | |||||||
|       //common.writeResponse(opts, query, nb, packet);
 |       //common.writeResponse(opts, query, nb, packet);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     function sendEmptyResponse(query, nx) { |     function sendEmptyResponse(query, rcode) { | ||||||
|       // rcode
 |       // rcode
 | ||||||
|       // 0 SUCCESS  // manages this domain and found a record
 |       // 0 SUCCESS  // manages this domain and found a record
 | ||||||
|  |       // 2 SERVFAIL // could not contact authoritatve nameserver (no recursion, etc)
 | ||||||
|       // 3 NXDOMAIN // manages this domain, but doesn't have a record
 |       // 3 NXDOMAIN // manages this domain, but doesn't have a record
 | ||||||
|       // 5 REFUSED  // doesn't manage this domain
 |       // 5 REFUSED  // doesn't manage this domain
 | ||||||
|       var newAb; |       var newAb; | ||||||
| @ -185,7 +190,7 @@ cli.main(function (args, cli) { | |||||||
|         , tc: 0 |         , tc: 0 | ||||||
|         , rd: query.header.rd |         , rd: query.header.rd | ||||||
|         , ra: cli.norecurse ? 0 : 1 // TODO is this bit dependent on the rd bit?
 |         , ra: cli.norecurse ? 0 : 1 // TODO is this bit dependent on the rd bit?
 | ||||||
|         , rcode: nx ? 3 : 0 // no error
 |         , rcode: rcode ? rcode : 0 // no error
 | ||||||
|         } |         } | ||||||
|       , question: [] |       , question: [] | ||||||
|       , answer: [] |       , answer: [] | ||||||
| @ -233,14 +238,14 @@ cli.main(function (args, cli) { | |||||||
| 
 | 
 | ||||||
|     function recurse() { |     function recurse() { | ||||||
|       if (!query.header.rd) { |       if (!query.header.rd) { | ||||||
|         console.log("[Could not answer. Sent empty response.]"); |         console.log("[DEV] no recursion desired. Sending empty response.]"); | ||||||
|         sendEmptyResponse(query, true); |         sendEmptyResponse(query, SERVFAIL); | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       if (cli.norecurse) { |       if (cli.norecurse) { | ||||||
|         console.log("[Could not answer. Sent empty response.]"); |         console.log("[DEV] recursion forbidden. Sending empty response.]"); | ||||||
|         sendEmptyResponse(query, true); |         sendEmptyResponse(query, REFUSED); | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
| @ -358,7 +363,7 @@ cli.main(function (args, cli) { | |||||||
| 
 | 
 | ||||||
|     // TODO get local answer first, if available
 |     // TODO get local answer first, if available
 | ||||||
|     require('../lib/dns-store').query(cli.input, query, function (err, resp) { |     require('../lib/dns-store').query(cli.input, query, function (err, resp) { | ||||||
|       if (err) { recurse(); return; } |       if (err) { console.log('[DEV] answer not found in local db, recursing'); recurse(); return; } | ||||||
| 
 | 
 | ||||||
|       sendResponse(resp); |       sendResponse(resp); | ||||||
|     }); |     }); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user