dnsserver = require "dnsserver"
NS_T_A = 1
NS_C_IN = 1
NS_RCODE_NXDOMAIN = 3
module.exports = class DnsServer extends dnsserver.ServerPow’s DnsServer is designed to respond to DNS A queries with
127.0.0.1 for all subdomains of the specified top-level domain.
When used in conjunction with Mac OS X’s /etc/resolver
system,
there’s no configuration needed to add and remove host names for
local web development.
dnsserver = require "dnsserver"
NS_T_A = 1
NS_C_IN = 1
NS_RCODE_NXDOMAIN = 3
module.exports = class DnsServer extends dnsserver.ServerCreate a DnsServer with the given Configuration instance. The
server installs a single event handler for responding to DNS
queries.
constructor: (@configuration) ->
super()
@on "request", @handleRequestThe listen method is just a wrapper around bind that makes
DnsServer quack like a HttpServer (for initialization, at
least).
listen: (port, callback) ->
@bind port
callback?()Each incoming DNS request ends up here. If it’s an A query
and the domain name matches the top-level domain specified in our
configuration, we respond with 127.0.0.1. Otherwise, we respond
with NXDOMAIN.
handleRequest: (req, res) ->
pattern = @configuration.dnsDomainPattern
q = req.question ? {}
if q.type is NS_T_A and q.class is NS_C_IN and pattern.test q.name
res.addRR q.name, NS_T_A, NS_C_IN, 600, "127.0.0.1"
else
res.header.rcode = NS_RCODE_NXDOMAIN
res.send()