A PowerDNS web interface with advanced features
Go to file
Ivan Filippov 58c19894a1 Convert value returned from UI to string before storing it in DB.
This should allow for differences in how database engine store booleans.
2016-07-05 19:22:57 -06:00
app Convert value returned from UI to string before storing it in DB. 2016-07-05 19:22:57 -06:00
upload/avatar Adjustment in user_profile template. Add avatar uploading support 2015-12-17 00:50:28 +07:00
.gitignore Adjustment in user_profile template. Add avatar uploading support 2015-12-17 00:50:28 +07:00
config_template.py Adjustment to support new api url format in pdns 4.x.x 2016-06-07 13:50:31 +07:00
create_db.py Fix setting key naming 2016-06-13 00:13:29 +07:00
db_downgrade.py Initial commit 2015-12-13 16:34:12 +07:00
db_migrate.py Initial commit 2015-12-13 16:34:12 +07:00
db_upgrade.py Initial commit 2015-12-13 16:34:12 +07:00
LICENSE Add MIT LICENSE file 2016-01-09 09:43:04 +07:00
README.md Updated README to mention DynDNS 2 support 2016-06-21 16:22:02 -06:00
requirements.txt Add OTP authentication feature 2016-06-16 15:36:05 +07:00
run.py Adjustment in application config 2016-04-13 11:13:59 +07:00

PowerDNS-Admin

PowerDNS Web-GUI - Built by Flask

Features:

  • Multiple domain management
  • Local / LDAP user authentication
  • Support Two-factor authentication (TOTP)
  • User management
  • User access management based on domain
  • User activity logging
  • Dashboard and pdns service statistics
  • DynDNS 2 protocol support

Setup

PowerDNS Version Support:

PowerDNS-Admin supports PowerDNS autoritative server versions 3.4.2 and higher.

pdns Service

I assume that you have already installed powerdns service. Make sure that your /etc/pdns/pdns.conf has these contents

PowerDNS 4.0.0 and later

api=yes
api-key=your-powerdns-api-key
webserver=yes

PowerDNS before 4.0.0

experimental-json-interface=yes
experimental-api-key=your-powerdns-api-key
webserver=yes

This will enable API access in PowerDNS so PowerDNS-Admin can intergrate with PowerDNS.

Create Database

We will create a database which used by this web application. Please note that this database is difference from pdns database itself.

MariaDB [(none)]> CREATE DATABASE powerdnsadmin;

MariaDB [(none)]> GRANT ALL PRIVILEGES ON powerdnsadmin.* TO powerdnsadmin@'%' IDENTIFIED BY 'your-password';

PowerDNS-Admin

In this installation guide, I am using CentOS 7 and run my python stuffs with virtualenv. If you don't have it, lets install it:

$ sudo yum install python-pip
$ sudo pip install virtualenv

In your python web app directory, create a flask directory via virtualenv

$ virtualenv flask

Enable virtualenv and install python 3rd libraries

$ source ./flask/bin/activate
(flask)$ pip install -r requirements.txt

Web application configuration is stored in config.py file. Let's clone it from config_template.py file and then edit it

(flask)$ cp config_template.py config.py 
(flask)$ vim config.py

Create database after having proper configs

(flask)% ./create_db.py

Run the application and enjoy!

(flask)$ ./run.py

Screenshots

login page dashboard create domain page manage domain page two-factor authentication config