CustomDNS is built out of several different components. These can be
replaced or modified for specific applications.
VirtualDNS
This is a modified version of jnamed
. (The original
jnamed
can be found in Brian Wellington's dnsjava package.)
VirtualDNS is a Java DNS server with support for virtual
zones. A virtual zone contains a mixture of static and
dynamic DNS records. Static records are served out of a normal
zone file. Dynamic records are created on the fly. You can provide your own
dynamic records by subclassing VirtualDNS.
This code does not depend on anything but dnsjava. So if you don't want to
use e-speak, this is your best starting point.
ZoneAuthorityIntf
This is an abstract e-speak service interface for looking up an address
record. You can browse
the ESIDL online.
If you want to provide your own source of IP addresses, you should
implement this interface.
ESpeakDNS
This is a subclass of VirtualDNS that looks for an implementation of
ZoneAuthorityIntf and queries it for address records. Because e-speak
allows you to build distributed applications, you can run run several
instances of this server on different machines.
ZoneRegistrarIntf
Another abstract e-speak interface. (Browse
it.)
ZoneRegistrarIntf provides an interface for updating an address
record. It's used by the UpdateServer.
ZoneAuthenticatorIntf
Another abstract e-speak interface. (Browse
it.)
ZoneAuthenticatorIntf approves address updates. It's also used by the
UpdateServer. If you want to replace CustomDNS's user database with your
own, implement this interface.
UpdateServer
This class implements a simple update server. Clients can contact it
using a trivial TCP/IP protocol. The UpdateServer looks for implementations
of ZoneAuthenticatorIntf and ZoneRegistrarIntf using e-speak at startup
time.
If you want to support other update protocols (like DDNS or XML-RPC),
you'll need to provide your own UpdateServer.
CGI Interface
The CustomDNS distribution includes a simple web
interface for creating new hostnames and updating addresses. If you
want to provide a clone of DynDNS.org
with your own branding, use these scripts as a starting point.