Exemplo n.º 1
0
var named = require('node-named');
var server = named.createServer();
var ttl = 300;

server.listen(9999, '127.0.0.1', function() {
  console.log('DNS server started on port 9999');
});

server.on('query', function(query) {
  var domain = query.name();
  var type = query.type();

  console.log('DNS Query: (%s) %s', type, domain);

  switch(type) {
  	case 'A':
  		query.addAnswer(domain, new named.ARecord('127.0.0.1'), 300);
  		break;
  	case 'SOA':
  		query.addAnswer(domain, new named.SOARecord(domain), 300);
  		break;
  }

  server.send(query);
});
Exemplo n.º 2
0
// DNS stuff
var named = require("node-named"),
	dnsServer = named.createServer();

// Webapp stuff
var express = require("express"),
	bodyParser = require("body-parser"),
	swig = require("swig"),
	webapp = express();

webapp.listen(3000, console.log("Webapp running..."));

webapp.use(bodyParser.json());
webapp.use(bodyParser.urlencoded({extended: true}));

webapp.set("view engine", "html");
webapp.engine("html", function(file, data, callback) {
	if (!data) data = {};

	data.domain = config.domain;
	data.name = config.name;
	data.tag = config.tags[Math.floor(Math.random() * config.tags.length)];
	data.footerLinks = config.footerLinks;;

	return callback(null, swig.renderFile(file, data));
});

// Other stuff
var fs = require("fs"),
	passwordHash = require("password-hash"),
	config = require("./config.js");
Exemplo n.º 3
0
// Load modules
var Net = require('net');
var Named = require('node-named');


// Declare internals
var internals = {
    ttl: 60 * 24 * 5,
    port: 53
};


var Server = Named.createServer();
var ARecord = Named.ARecord;

Server.on('query', function (query) {

    var domain = query.name() || '';
    var subDomains = domain.split('.');
    var octets = subDomains.slice(0,4);

    if (octets.length !== 4 || subDomains[subDomains.length - 1] === 'arpa') {
        return Server.send(query);
    }

    var ipString = octets[0] + '.' + octets[1] + '.' + octets[2] + '.' + octets[3];
    if (Net.isIPv4(ipString) === 0) {
        return Server.send(query);
    }

    var target = new ARecord(ipString);
Exemplo n.º 4
0
function setupServer() {

	var server = named.createServer();
	var ttl = 300;
	var port = process.env.PORT || 53;

	server.listen(port, function() {
		console.log('== DNS Server on port ' + port); 
	});

	server.on('query', function(query) {
		console.log(">> DNS query (%s) %s", query.type(), query.name());

		var domain = query.name();
		var match = domain.match(reg);
		var record;

		if ( match ) {
			var ip = match[1].replace(/\-/g, '.');
			console.log('  ...matched:  ' + match[1] + ' => ' + ip );
			record = new named.ARecord(ip);
			query.addAnswer(domain, record, ttl);
			server.send(query);
		} else {
			console.log('  ...unknown. fowarding to external server');
			foward(query, {
				onmessage: function(err, answer) {
					console.log('  >> response recieved.');
					//console.log(err, answer);
					if ( err ) {
						console.log("    ..error: ", err);
						return;
					}

					var a = answer.answer[0];

					try {
						if ( !a ) {
							console.log("    ..cannot resolve.");
							server.send(query); // 404?
						} else if ( a.type == 1 ) { // a
							console.log("    ..resolved: " + a.address);
							record = new named.ARecord(a.address);
							query.addAnswer(domain, record, a.ttl);
							server.send(query);
						} else if ( a.type == 5 ) { // cname
							console.log("    ..resolved: " + a.data);
							record = new named.CNAMERecord(a.data);
							query.addAnswer(domain, record, a.ttl);
							server.send(query);
						} else {
							console.log("    ..resolved but unknown type", a);
						}
					} catch (e) {
						console.log(e, "answer.answer[0] = ", a);
					}
				},
				ontimeout: function() {
					console.log('    ..timeout');
				}
			});
		}
	});

}