Skip to content
This repository has been archived by the owner on Aug 16, 2019. It is now read-only.
/ panubo-dns Public archive

DNS Management UI (Django)

License

Notifications You must be signed in to change notification settings

panubo/panubo-dns

Repository files navigation

Deprecation Notice!

NB: This project is no longer maintained and the repository has been archived.


DNS Management UI

This is a web based DNS zone editor written in Django. It relies upon the following components for the heavy lifting:

  • Django DNS Manager - Django DNS Zone Editor
  • Squab - CouchDB bindings for Python Applications
  • CouchDB is used as a transport for replicating zone changes to disparate DNS slaves.

Integration with Unbound DNS is handled with Panubo DNS Integration.

Features

  • API
  • Bind compatible zone file import (via API)
  • Automatic Validation / Delegation Checking
  • Delegate access to sub-organisations or users.

Local Install

Step 1: Create a virtual environment

Create a virtual environment. Python Bootstrap is a handy tool for this.

Step 2: Clone this repo

Clone this repo to the base of your newly created virtual environment.

Step 3: Initialise the app

After entering the virtual environment. Run the following:

pip install bureaucrat
cp .env.example .env  # edit as required
bureaucrat init

Running bureaucrat init will run the deployment steps, and start the app.

Optionally: Add the following to bin/activate:

OLDIFS=$IFS; IFS=$'\n'; for l in $(cat $VIRTUAL_ENV/.env); do eval export echo "$l"; done; IFS=$OLDIFS

This will automatically load the .env settings when entering the virtual environment. Which makes it easier to manually run ./manage.py.

Docker Install

Build the Dockerfile or pull the container.

Zone upload

Example Bind zone file upload to the API

curl -X POST -F "data=@${ZONE_FILE}" https://$USER:$PASS@dns/api/v1/zone-upload/$ZONE_NAME/