Historical interest only: marketplace-2014-based implementation of a DNS server and recursive resolver.
Go to file
Tony Garnock-Jones d91c729772 Merge branch 'typeless' into syndicate 2018-01-22 16:46:42 +00:00
.gitignore Initial commit extracted from racket-dns repo 2013-05-10 16:38:25 -04:00
COPYING README and GPLv3 2013-05-21 12:14:05 -04:00
Makefile Simple makefile 2013-05-31 13:16:36 -04:00
README.md Initial progress. driver.rkt runs; now on proxy.rkt 2016-06-06 17:07:33 -04:00
TODO Initial commit extracted from racket-dns repo 2013-05-10 16:38:25 -04:00
api-untyped.rkt Initial progress. driver.rkt runs; now on proxy.rkt 2016-06-06 17:07:33 -04:00
api.rkt Initial progress. driver.rkt runs; now on proxy.rkt 2016-06-06 17:07:33 -04:00
codec.rkt First pass at stripping types 2014-08-06 21:58:50 -07:00
driver.rkt Initial progress. driver.rkt runs; now on proxy.rkt 2016-06-06 17:07:33 -04:00
fetch-root-zone.rkt Update root zone info and add script for doing the update 2016-09-09 15:12:55 -04:00
mapping.rkt First pass at stripping types 2014-08-06 21:58:50 -07:00
network-query.rkt The Big Spawn/Actor Swap 2017-02-20 17:23:10 -05:00
proxy.rkt The Big Spawn/Actor Swap 2017-02-20 17:23:10 -05:00
resolver.rkt First pass at stripping types 2014-08-06 21:58:50 -07:00
send-signal.rkt README and GPLv3 2013-05-21 12:14:05 -04:00
test-dns.rkt Dust off tests. 2016-06-06 16:08:53 -04:00
test-mapping.rkt README and GPLv3 2013-05-21 12:14:05 -04:00
test-rrs.rkt Update root zone info and add script for doing the update 2016-09-09 15:12:55 -04:00
tk-dns.rkt The Big Spawn/Actor Swap 2017-02-20 17:23:10 -05:00
zonedb.rkt First pass at stripping types 2014-08-06 21:58:50 -07:00

README.md

Racket DNS resolver and server

This is a Racket implementation of a DNS server and iterative resolver. It's written to work with Syndicate, but could readily 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

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.

Once you have Racket installed,

raco pkg install syndicate bitsyntax

to install Syndicate and bitsyntax, and then

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

To enable debug output, set the MATRIX_LOG environment variable to info:

MATRIX_LOG=info DNSPORT=5444 racket driver.rkt
MATRIX_LOG=info DNSPORT=5444 racket proxy.rkt

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/.