duppy: a RFC2136 dynamic DNS update server
This is a stand-alone server which implements both a subset of RFC2136 and offers a simple HTTP API for performing dynamic DNS updates.
The intended audience for this software are DNS service providers who store customer DNS data in a custom database, using something like bind's DLZ. Writing some code and/or SQL statements is required.
Project Status
Roadmap and project status are Issue #1
API Documentation
The HTTP APIs are very briefly documented on the root home-page of the HTTP server itself, a snapshot of which can be found here.
You can also read them using pydoc duppy.http_updates.
Getting started
Installation:
# Make sure the basics are installed
apt install python3 python3-pip git virtualenv
# Fetch duppy
git clone https://github.com/pagekite.net/duppy
# Install dependencies
cd duppy
virtualenv -p /usr/bin/python3 .env
. .env/bin/activate
pip install -r requirements.txt
Configuration:
cd /path/to/duppy
cp examples/duppy-sql.py duppy-local.py
vi duppy-local.py
Note: the duppy-sql.py example assumes you are using an SQL backend
for storing DNS records and gives an example of how to configure that by
writing SQL statements that match your schema. If you are doing
something more excited/complicated, other examples may be better starting
points. Browse around!
Running the server:
cd /path/to/duppy
. .env/bin/activate
python3 duppy-local.py
Copyright, License, Thanks
Copyright (C) 2022, The Beanstalks Project ehf. and Bjarni R. Einarsson.
MIT License: See the file LICENSE for details.
Big thanks to the async_dns, dnspython and aiohttp projects! Without them this would have been much more difficult.
Thanks to 1984 Hosting for sponsoring part of this work.