Skip to content
Little Javascript DNS Server for resolve internet's hostname only
JavaScript Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config Update serv.ini Jun 23, 2014
node_modules
LICENSE
README
fun_dns
fun_dns.daemon
setup.sh

README

 _____   __   _   _____     _____   _____   _____      _____   _   _   __   _  
|  _  \ |  \ | | /  ___/   |  ___| /  _  \ |  _  \    |  ___| | | | | |  \ | | 
| | | | |   \| | | |___    | |__   | | | | | |_| |    | |__   | | | | |   \| | 
| | | | | |\   | \___  \   |  __|  | | | | |  _  /    |  __|  | | | | | |\   | 
| |_| | | | \  |  ___| |   | |     | |_| | | | \ \    | |     | |_| | | | \  | 
|_____/ |_|  \_| /_____/   |_|     \_____/ |_|  \_\   |_|     \_____/ |_|  \_| 
                                                                version 0.1.12

Fun DNS server  build on top of Nodejs

How install
	Run $ sudo setup.sh
OR
	$ wget -O /tmp/fun_dns.tar.gz https://github.com/downloads/badlee/fun-dns/fun_dns.v0.1.12.tar.gz
	$ sudo -s 
	$ mkdir /opt/fun_dns
	$ cd /opt/fun_dns
	$ tar xvf /tmp/fun_dns.tar.gz
	$ ln -s /opt/fun_dns/fun_dns.daemon /etc/init.d/fun_dns
	$ update-rc.d fun_dns defaults
	$ #Start service
	$ service fun_dns start

How define hostname
	edit 'config/conf.json',
	the syntaxe of this file respect json format
		{
			"hostname1" : {
				[property...]
			},
			"hostname2" : {
				[property...]
			},
			"hostname3" : {
				[property...]
			},
			[...]
			"hostnameN" : {
				[property...]
			}
		}
	properties of a hostname
		"name" : {
			"ip" : "127.0.0.1",
			"description" : "je suis le serveur web local",
			"autority" : "dns.{name},admin@{name}",
			"mail" : {
				"ip" : "127.0.0.2",
				"name" : "mail.{name}",
				"priority" : 10
			},
			"nameserver" : [{
				"ip" : "127.0.0.1",
				"name" : "ns1.{name}"
			}]
		}
	The hostname can have a short regex like syntaxe.
		*  : this expression respect ".*" in regex;
		%w : this expression respect "[a-zA-Z0-9_]+" in regex;
		%h : this expression respect "[a-fA-F0-9]+" in regex;
		%d : this expression respect "[0-9]+" in regex;

	sample conf.json :
		{
			"server.web" : {
				"ip" : "192.168.1.3",
				"nameserver" : [{
					"name" : "dns3.local.web"
				},{
					"ip" : "192.168.1.2",
					"name" : "dns2.local.web"
				},{
					"ip" : "192.168.1.1",
					"name" : "dns.local.web"
				}]
			},
			"!*.lo" : {
				"ip" : "127.0.0.1",
				"autority" : "dns.{name},admin@{name}",
		
				"nameserver" : [{
					"ip" : "127.0.0.1",
					"name" : "dns.{name}"
				},{
					"ip" : "127.0.0.1",
					"name" : "dns2.{name}"
				}]
		
			}
		}

Server confiurations(config/serv.ini)
	conf = configuration hostname file(if not defined is set to app://config/conf.json)
	host = your ip4 addresse to listen(if not defined listen all)
	port = port to listen(if not defined listen 53)
	Section nameserver = list of dns server used to found response when no response found on server(as a proxy, but it's eprouve the global performances)
	[nameserver] 
		nameOfTheDnsServer1 = Ip_Address
		nameOfTheDnsServer2 = Ip_Address
		...
		nameOfTheDnsServer3 = Ip_Address
	Section ttl = list of ttl in dns reponse (in secondes)
	[ttl]
		ip  = ttl for any ip (A or AAAA) address (if not defined 77)
		ttl = ttl for any field different of ip (A or AAAA) (if not defined 600)
		refresh = time to refresh the zone (if not defined 1800)
		retry   = time to retry when refresh (above) has expired (if not defined 900)
		expiration = ttl for DNS response (if not defined 604800)

	sample serv.ini:
		conf = app://config/lab.json
		port = 53
		host = 192.168.1.1
		spf  = "v=spf1 +all"
		[ttl]
		    ttl = 600
		    ip  = 77
		[nameserver]
		    google.dns.a = 8.8.8.8
		    google.dns.b = 8.8.4.4



Command line option
	Usage:
		fun_dns [options]
	Options:
	---	-p|--port <value>  
			port to listen.
	---	-h|--host <value>  
			host to bind.
	---	-c|--conf <value>  
			configuration file(hostname).
	---	-s|--servConf <value>
			configuration file(server).
	---	-v|--version       
			Get the version of fun_dns
	---	-z|--zone <value>  
			Lookup a zoneWalk
	---	-l|--log <value>  
			path to log file
Something went wrong with that request. Please try again.