Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e2393d965a | 
| @ -5,7 +5,7 @@ digd.js | |||||||
| | [dig.js](https://git.coolaj86.com/coolaj86/dig.js) | | [dig.js](https://git.coolaj86.com/coolaj86/dig.js) | ||||||
| | [mdig.js](https://git.coolaj86.com/coolaj86/mdig.js) | | [mdig.js](https://git.coolaj86.com/coolaj86/mdig.js) | ||||||
| | **digd.js** | | **digd.js** | ||||||
| | A [Root project](https://rootprojects.org). | | Sponsored by [Daplie](https://daplie.com). | ||||||
| 
 | 
 | ||||||
| A lightweight DNS / mDNS daemon (server) in node.js. | A lightweight DNS / mDNS daemon (server) in node.js. | ||||||
| 
 | 
 | ||||||
| @ -39,7 +39,8 @@ npm install -g 'git+https://git.coolaj86.com/coolaj86/digd.js.git#v1.2.0' | |||||||
| 
 | 
 | ||||||
| ### without git | ### without git | ||||||
| 
 | 
 | ||||||
| Don't have git? You can use npm's centralized repository: | 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 digd.js | npm install -g digd.js | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								dist/etc/systemd/system/digd.js.service
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/etc/systemd/system/digd.js.service
									
									
									
									
										vendored
									
									
								
							| @ -8,7 +8,7 @@ Wants=network-online.target systemd-networkd-wait-online.service | |||||||
| # Restart on crash (bad signal), but not on 'clean' failure (error exit code) | # Restart on crash (bad signal), but not on 'clean' failure (error exit code) | ||||||
| # Allow up to 3 restarts within 10 seconds | # Allow up to 3 restarts within 10 seconds | ||||||
| # (it's unlikely that a user or properly-running script will do this) | # (it's unlikely that a user or properly-running script will do this) | ||||||
| Restart=always | Restart=on-abnormal | ||||||
| StartLimitInterval=10 | StartLimitInterval=10 | ||||||
| StartLimitBurst=3 | StartLimitBurst=3 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -53,10 +53,11 @@ module.exports.create = function (cli, dnsd) { | |||||||
|         process.exit(0); |         process.exit(0); | ||||||
|       } |       } | ||||||
|       console.error("TCP Server Error:"); |       console.error("TCP Server Error:"); | ||||||
|       console.error(err); |       console.error(err.stack); | ||||||
|       tcpServer.close(function () { |       tcpServer.close(function () { | ||||||
|         setTimeout(runTcp, 1000); |         setTimeout(runTcp, 1000); | ||||||
|       }); |       }); | ||||||
|  |       //throw new Error(err);
 | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     tcpServer.listen(cli.port, function () { |     tcpServer.listen(cli.port, function () { | ||||||
|  | |||||||
							
								
								
									
										104
									
								
								lib/udpd.js
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								lib/udpd.js
									
									
									
									
									
								
							| @ -1,58 +1,66 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
| 
 | 
 | ||||||
| module.exports.create = function (cli, dnsd) { | module.exports.create = function (cli, dnsd) { | ||||||
|   var server = require('dgram').createSocket({ |   function runUdp() { | ||||||
|     type: cli.udp6 ? 'udp6' : 'udp4' |     var server = require('dgram').createSocket({ | ||||||
|   , reuseAddr: true |       type: cli.udp6 ? 'udp6' : 'udp4' | ||||||
|   }); |     , reuseAddr: true | ||||||
|   server.bind({ |     }); | ||||||
|     port: cli.port |     server.bind({ | ||||||
|   , address: cli.address |       port: cli.port | ||||||
|   }); |     , address: cli.address | ||||||
| 
 |  | ||||||
|   var handlers = {}; |  | ||||||
|   handlers.onError = function (err) { |  | ||||||
|     if ('EACCES' === err.code) { |  | ||||||
|       console.error(""); |  | ||||||
|       console.error("EACCES: Couldn't bind to port. You probably need to use sudo, authbind, or setcap."); |  | ||||||
|       console.error(""); |  | ||||||
|       process.exit(123); |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     console.error("error:", err.stack); |  | ||||||
|     server.close(); |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   handlers.onMessage = function (nb, rinfo) { |  | ||||||
|     //console.log('[DEBUG] got a UDP message', nb.length);
 |  | ||||||
|     //console.log(nb.toString('hex'));
 |  | ||||||
| 
 |  | ||||||
|     dnsd.onMessage(nb, function (err, newAb, dbgmsg) { |  | ||||||
|       // TODO send legit error message
 |  | ||||||
|       if (err) { server.send(Buffer.from([0x00])); return; } |  | ||||||
|       server.send(newAb, rinfo.port, rinfo.address, function () { |  | ||||||
|         console.log(dbgmsg, rinfo.port, rinfo.address); |  | ||||||
|       }); |  | ||||||
|     }); |     }); | ||||||
|   }; |  | ||||||
| 
 | 
 | ||||||
|   handlers.onListening = function () { |     var handlers = {}; | ||||||
|     /*jshint validthis:true*/ |     handlers.onError = function (err) { | ||||||
|     var server = this; |       if ('EACCES' === err.code) { | ||||||
|  |         console.error(""); | ||||||
|  |         console.error("EACCES: Couldn't bind to port. You probably need to use sudo, authbind, or setcap."); | ||||||
|  |         console.error(""); | ||||||
|  |         process.exit(123); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       console.error("UDP Server Error:"); | ||||||
|  |       console.error(err.stack); | ||||||
|  |       server.close(function () { | ||||||
|  |         setTimeout(runUdp, 1000); | ||||||
|  |       }); | ||||||
|  |       //throw new Error(err);
 | ||||||
|  |     }; | ||||||
| 
 | 
 | ||||||
|     if (cli.mdns || '224.0.0.251' === cli.nameserver) { |     handlers.onMessage = function (nb, rinfo) { | ||||||
|       server.setBroadcast(true); |       //console.log('[DEBUG] got a UDP message', nb.length);
 | ||||||
|       server.addMembership(cli.nameserver); |       //console.log(nb.toString('hex'));
 | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     console.log(''); |       dnsd.onMessage(nb, function (err, newAb, dbgmsg) { | ||||||
|     console.log('Bound and Listening:'); |         // TODO send legit error message
 | ||||||
|     console.log(server.address().address + '#' + server.address().port + ' (' + server.type + ')'); |         if (err) { server.send(Buffer.from([0x00]), rinfo.port, rinfo.address); return; } | ||||||
|   }; |         server.send(newAb, rinfo.port, rinfo.address, function () { | ||||||
|  |           console.log('[dnsd.onMessage] ' + dbgmsg, rinfo.port, rinfo.address); | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  |     }; | ||||||
| 
 | 
 | ||||||
|   server.on('error', handlers.onError); |     handlers.onListening = function () { | ||||||
|   server.on('message', handlers.onMessage); |       /*jshint validthis:true*/ | ||||||
|   server.on('listening', handlers.onListening); |       var server = this; | ||||||
| 
 | 
 | ||||||
|   return server; |       if (cli.mdns || '224.0.0.251' === cli.nameserver) { | ||||||
|  |         server.setBroadcast(true); | ||||||
|  |         server.addMembership(cli.nameserver); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       console.log(''); | ||||||
|  |       console.log('Bound and Listening:'); | ||||||
|  |       console.log(server.address().address + '#' + server.address().port + ' (' + server.type + ')'); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     server.on('error', handlers.onError); | ||||||
|  |     server.on('message', handlers.onMessage); | ||||||
|  |     server.on('listening', handlers.onListening); | ||||||
|  | 
 | ||||||
|  |     return server; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return runUdp(); | ||||||
| }; | }; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user