marketplace-dns-2014/README.md

69 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2013-05-21 16:14:05 +00:00
# Racket DNS resolver and server
This is a [Racket](http://racket-lang.org/) implementation of a DNS
server and iterative resolver. It's written to work with
[Syndicate](https://github.com/tonyg/syndicate), but could readily
2013-05-21 16:14:05 +00:00
be adapted to work with other I/O substrates. (It originally used
Racket's `sync` and events directly.)
The code is not quite fully separated into a reusable library (or even
a configurable service) yet. Changing this is straightforward, but
low-priority right now. Patches welcome!
## How to compile and run the code
2014-05-23 16:24:38 +00:00
You will need the latest version of Racket. Any version newer than or
equal to Racket 6.0 should work. Racket releases can be downloaded
[here](http://download.racket-lang.org/).
2013-05-21 16:14:05 +00:00
Once you have Racket installed,
raco pkg install syndicate bitsyntax
2013-05-21 16:14:05 +00:00
to install Syndicate and
2014-05-30 23:23:08 +00:00
[bitsyntax](https://github.com/tonyg/racket-bitsyntax/), and then
2013-05-21 16:14:05 +00:00
raco make driver.rkt proxy.rkt
to compile the DNS code. Once it has compiled successfully,
DNSPORT=5444 racket driver.rkt
will start a DNS leaf zone server on port 5444 holding records from
`test-rrs.rkt`'s `test-rrs` variable, and
DNSPORT=5444 racket proxy.rkt
will start an iterative DNS resolver service on port 5444 offering
regular DNS service to all comers.
You can try out the service with
dig @localhost -p 5444 localhost.example
2014-05-23 16:24:38 +00:00
To enable debug output, set the `MATRIX_LOG` environment variable to
`info`:
2013-05-21 16:14:05 +00:00
MATRIX_LOG=info DNSPORT=5444 racket driver.rkt
2014-05-23 16:24:38 +00:00
MATRIX_LOG=info DNSPORT=5444 racket proxy.rkt
2013-05-21 16:14:05 +00:00
## Copyright and License
Copyright 2010, 2011, 2012, 2013 Tony Garnock-Jones <tonyg@ccs.neu.edu>
This file is part of marketplace-dns.
marketplace-dns is free software: you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
marketplace-dns is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with marketplace-dns. If not, see
<http://www.gnu.org/licenses/>.