mirror of
https://github.com/cwinfo/powerdns-admin.git
synced 2024-11-09 15:10:27 +00:00
Merge branch 'PowerDNS-Admin:master' into docs-updates
This commit is contained in:
commit
12892d70a5
25
.github/workflows/build-and-publish.yml
vendored
25
.github/workflows/build-and-publish.yml
vendored
@ -1,4 +1,7 @@
|
|||||||
|
name: 'Docker Image'
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'master'
|
- 'master'
|
||||||
@ -7,45 +10,45 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-push-docker-image:
|
build-and-push-docker-image:
|
||||||
name: Build Docker image and push to repositories
|
name: Build Docker Image
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Repository Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker Image Metadata
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v3
|
uses: docker/metadata-action@v3
|
||||||
with:
|
with:
|
||||||
images: |
|
images: |
|
||||||
ngoduykhanh/powerdns-admin
|
powerdnsadmin/pda-legacy
|
||||||
tags: |
|
tags: |
|
||||||
type=ref,event=tag
|
type=ref,event=tag
|
||||||
type=semver,pattern={{version}}
|
type=semver,pattern={{version}}
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
type=semver,pattern={{major}}
|
type=semver,pattern={{major}}
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Docker Buildx Setup
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Docker Hub Authentication
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v1
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME_V2 }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN_V2 }}
|
||||||
|
|
||||||
- name: Build latest image
|
- name: Docker Image Build
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v2
|
||||||
if: github.ref == 'refs/heads/master'
|
if: github.ref == 'refs/heads/master'
|
||||||
with:
|
with:
|
||||||
context: ./
|
context: ./
|
||||||
file: ./docker/Dockerfile
|
file: ./docker/Dockerfile
|
||||||
push: true
|
push: true
|
||||||
tags: ngoduykhanh/powerdns-admin:latest
|
tags: powerdnsadmin/pda-legacy:latest
|
||||||
|
|
||||||
- name: Build release image
|
- name: Docker Image Release Tagging
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v2
|
||||||
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
|
||||||
with:
|
with:
|
||||||
|
1
.github/workflows/codeql-analysis.yml
vendored
1
.github/workflows/codeql-analysis.yml
vendored
@ -12,6 +12,7 @@
|
|||||||
name: "CodeQL"
|
name: "CodeQL"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
push:
|
push:
|
||||||
branches: [ master ]
|
branches: [ master ]
|
||||||
pull_request:
|
pull_request:
|
||||||
|
10
README.md
10
README.md
@ -1,8 +1,8 @@
|
|||||||
# PowerDNS-Admin
|
# PowerDNS-Admin
|
||||||
A PowerDNS web interface with advanced features.
|
A PowerDNS web interface with advanced features.
|
||||||
|
|
||||||
[![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/PowerDNS-Admin/PowerDNS-Admin.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/PowerDNS-Admin/PowerDNS-Admin/context:python)
|
[![CodeQL](https://github.com/PowerDNS-Admin/PowerDNS-Admin/actions/workflows/codeql-analysis.yml/badge.svg?branch=master)](https://github.com/PowerDNS-Admin/PowerDNS-Admin/actions/workflows/codeql-analysis.yml)
|
||||||
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/PowerDNS-Admin/PowerDNS-Admin.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/PowerDNS-Admin/PowerDNS-Admin/context:javascript)
|
[![Docker Image](https://github.com/PowerDNS-Admin/PowerDNS-Admin/actions/workflows/build-and-publish.yml/badge.svg?branch=master)](https://github.com/PowerDNS-Admin/PowerDNS-Admin/actions/workflows/build-and-publish.yml)
|
||||||
|
|
||||||
#### Features:
|
#### Features:
|
||||||
- Multiple domain management
|
- Multiple domain management
|
||||||
@ -24,8 +24,8 @@ There are several ways to run PowerDNS-Admin. The easiest way is to use Docker.
|
|||||||
If you are looking to install and run PowerDNS-Admin directly onto your system check out the [Wiki](https://github.com/PowerDNS-Admin/PowerDNS-Admin/wiki#installation-guides) for ways to do that.
|
If you are looking to install and run PowerDNS-Admin directly onto your system check out the [Wiki](https://github.com/PowerDNS-Admin/PowerDNS-Admin/wiki#installation-guides) for ways to do that.
|
||||||
|
|
||||||
### Docker
|
### Docker
|
||||||
This are two options to run PowerDNS-Admin using Docker.
|
Here are two options to run PowerDNS-Admin using Docker.
|
||||||
To get started as quickly as possible try option 1. If you want to make modifications to the configuration option 2 may be cleaner.
|
To get started as quickly as possible, try option 1. If you want to make modifications to the configuration option 2 may be cleaner.
|
||||||
|
|
||||||
#### Option 1: From Docker Hub
|
#### Option 1: From Docker Hub
|
||||||
The easiest is to just run the latest Docker image from Docker Hub:
|
The easiest is to just run the latest Docker image from Docker Hub:
|
||||||
@ -34,7 +34,7 @@ $ docker run -d \
|
|||||||
-e SECRET_KEY='a-very-secret-key' \
|
-e SECRET_KEY='a-very-secret-key' \
|
||||||
-v pda-data:/data \
|
-v pda-data:/data \
|
||||||
-p 9191:80 \
|
-p 9191:80 \
|
||||||
ngoduykhanh/powerdns-admin:latest
|
powerdnsadmin/pda-legacy:latest
|
||||||
```
|
```
|
||||||
This creates a volume called `pda-data` to persist the SQLite database with the configuration.
|
This creates a volume called `pda-data` to persist the SQLite database with the configuration.
|
||||||
|
|
||||||
|
15
deploy/docker/portainer.yaml
Normal file
15
deploy/docker/portainer.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
version: '3.3'
|
||||||
|
services:
|
||||||
|
|
||||||
|
core:
|
||||||
|
image: powerdnsadmin/pda-legacy:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- SECRET_KEY=INSECURE-CHANGE-ME-9I0DAtfkfj5JmBkPSaHah3ECAa8Df5KK
|
||||||
|
ports:
|
||||||
|
- "12000:9191"
|
||||||
|
volumes:
|
||||||
|
- "core_data:/data"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
core_data:
|
@ -1,5 +1,4 @@
|
|||||||
FROM alpine:3.13 AS builder
|
FROM alpine:3.13 AS builder
|
||||||
LABEL maintainer="k@ndk.name"
|
|
||||||
|
|
||||||
ARG BUILD_DEPENDENCIES="build-base \
|
ARG BUILD_DEPENDENCIES="build-base \
|
||||||
libffi-dev \
|
libffi-dev \
|
||||||
|
@ -18,6 +18,11 @@ quit
|
|||||||
|
|
||||||
## Install required packages:
|
## Install required packages:
|
||||||
### Red-hat based systems:
|
### Red-hat based systems:
|
||||||
|
```
|
||||||
|
yum install MariaDB-shared mariadb-devel mysql-community-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
If you use MariaDB ( from [MariaDB repositories](https://mariadb.com/resources/blog/installing-mariadb-10-on-centos-7-rhel-7/) )
|
||||||
|
|
||||||
### Debian based systems:
|
### Debian based systems:
|
||||||
```
|
```
|
||||||
|
@ -53,4 +53,24 @@ docker run --name pdnsadmin-test -e BIND_ADDRESS=0.0.0.0
|
|||||||
-e SQLA_DB_HOST='192.168.0.100'
|
-e SQLA_DB_HOST='192.168.0.100'
|
||||||
-e SQLA_DB_NAME='powerdns_admin_test'
|
-e SQLA_DB_NAME='powerdns_admin_test'
|
||||||
-v /data/node_modules:/var/www/powerdns-admin/node_modules -d -p 9191:9191 ixpict/powerdns-admin-pgsql:latest
|
-v /data/node_modules:/var/www/powerdns-admin/node_modules -d -p 9191:9191 ixpict/powerdns-admin-pgsql:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Install required packages:
|
||||||
|
### Red-hat based systems:
|
||||||
|
```
|
||||||
|
sudo yum install postgresql-libs
|
||||||
|
```
|
||||||
|
|
||||||
|
### Debian based systems:
|
||||||
|
```
|
||||||
|
apt install libpq-dev python-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Install python packages:
|
||||||
|
```
|
||||||
|
pip3 install psycopg2
|
||||||
|
```
|
||||||
|
|
||||||
|
## Known Issues:
|
||||||
|
|
||||||
|
** To fill in **
|
||||||
|
@ -1,59 +1,43 @@
|
|||||||
|
# Installing PowerDNS-Admin on CentOS 7
|
||||||
|
|
||||||
```
|
```
|
||||||
NOTE: If you are logged in as User and not root, add "sudo", or get root by sudo -i.
|
NOTE: If you are logged in as User and not root, add "sudo", or get root by sudo -i.
|
||||||
```
|
```
|
||||||
<br>
|
|
||||||
|
|
||||||
**Remove old Python 3.4**<br>
|
## Install required packages:
|
||||||
If you had it installed because of older instructions<br>
|
### Install needed repositories:
|
||||||
```
|
|
||||||
yum remove python34*
|
|
||||||
yum autoremove
|
|
||||||
```
|
|
||||||
<br>
|
|
||||||
|
|
||||||
## Install required packages
|
|
||||||
**Install needed repositories:**
|
|
||||||
<br>
|
|
||||||
```
|
```
|
||||||
yum install epel-release
|
yum install epel-release
|
||||||
yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
yum install https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
|
||||||
```
|
```
|
||||||
|
|
||||||
**Install Python 3.6 and tools**
|
### Install Python 3.6 and tools:
|
||||||
|
First remove python 3.4 if installed
|
||||||
|
```
|
||||||
|
yum remove python34*
|
||||||
|
yum autoremove
|
||||||
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
yum install python3 python3-devel python3-pip
|
yum install python3 python3-devel python3-pip
|
||||||
pip3.6 install -U pip
|
pip3.6 install -U pip
|
||||||
pip install -U virtualenv
|
pip install -U virtualenv
|
||||||
```
|
```
|
||||||
|
|
||||||
**Install required packages for building python libraries from requirements.txt file**
|
### Install required packages for building python libraries from requirements.txt file:
|
||||||
```
|
```
|
||||||
--> NOTE: I am using MySQL Community server as the database backend.
|
yum install gcc openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
|
||||||
So `mysql-community-devel` is required. For MariaDB,
|
|
||||||
and PostgreSQL the required package will be different.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you use MariaDB ( from [MariaDB repositories](https://mariadb.com/resources/blog/installing-mariadb-10-on-centos-7-rhel-7/) )
|
### Install yarn to build asset files + Nodejs 14:
|
||||||
|
|
||||||
```
|
|
||||||
yum install gcc MariaDB-devel MariaDB-shared openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
|
|
||||||
```
|
|
||||||
|
|
||||||
If you use default Centos mariadb (5.5)
|
|
||||||
```
|
|
||||||
yum install gcc mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
**Install yarn to build asset files + Nodejs 14**
|
|
||||||
```
|
```
|
||||||
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
|
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
|
||||||
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
|
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
|
||||||
yum install yarn
|
yum install yarn
|
||||||
```
|
```
|
||||||
<br>
|
|
||||||
|
|
||||||
## Checkout source code and create virtualenv
|
### Checkout source code and create virtualenv:
|
||||||
NOTE: Please adjust `/opt/web/powerdns-admin` to your local web application directory
|
NOTE: Please adjust `/opt/web/powerdns-admin` to your local web application directory
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -68,15 +52,14 @@ Activate your python3 environment and install libraries:
|
|||||||
pip install python-dotenv
|
pip install python-dotenv
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
<br>
|
|
||||||
|
|
||||||
## Running PowerDNS-Admin
|
## Running PowerDNS-Admin:
|
||||||
NOTE: The default config file is located at `./powerdnsadmin/default_config.py`. If you want to load another one, please set the `FLASK_CONF` environment variable. E.g.
|
NOTE: The default config file is located at `./powerdnsadmin/default_config.py`. If you want to load another one, please set the `FLASK_CONF` environment variable. E.g.
|
||||||
```bash
|
```bash
|
||||||
export FLASK_CONF=../configs/development.py
|
export FLASK_CONF=../configs/development.py
|
||||||
```
|
```
|
||||||
|
|
||||||
**Then create the database schema by running:**
|
### Create the database schema:
|
||||||
```
|
```
|
||||||
export FLASK_APP=powerdnsadmin/__init__.py
|
export FLASK_APP=powerdnsadmin/__init__.py
|
||||||
flask db upgrade
|
flask db upgrade
|
||||||
@ -97,4 +80,4 @@ Open your web browser and access to `http://localhost:9191` to visit PowerDNS-Ad
|
|||||||
|
|
||||||
At the first time you login into the PDA UI, you will be redirected to setting page to configure the PDNS API information.
|
At the first time you login into the PDA UI, you will be redirected to setting page to configure the PDNS API information.
|
||||||
|
|
||||||
_**Note:**_ For production environment, i would recommend you to run PowerDNS-Admin with gunicorn or uwsgi instead of flask's built-in web server, take a look at WIKI page to see how to configure them.
|
_**Note:**_ For production environment, i would recommend you to run PowerDNS-Admin with gunicorn or uwsgi instead of flask's built-in web server, take a look at WIKI page to see how to configure them.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Installation on docker
|
# Installation on docker
|
||||||
|
|
||||||
The Docker image is ngoduykhanh/powerdns-admin available on [DockerHub](https://hub.docker.com/r/ngoduykhanh/powerdns-admin)
|
The Docker image is powerdnsadmin/pda-legacy available on [DockerHub](https://hub.docker.com/r/powerdnsadmin/pda-legacy)
|
||||||
|
|
||||||
The supported environment variables to configure the container are located [here](../configuration/Environment-variables.md).
|
The supported environment variables to configure the container are located [here](../configuration/Environment-variables.md).
|
||||||
|
|
||||||
@ -10,5 +10,5 @@ docker run -d \
|
|||||||
-e SECRET_KEY='a-very-secret-key' \
|
-e SECRET_KEY='a-very-secret-key' \
|
||||||
-v pda-data:/data \
|
-v pda-data:/data \
|
||||||
-p 9191:80 \
|
-p 9191:80 \
|
||||||
ngoduykhanh/powerdns-admin:latest
|
powerdnsadmin/pda-legacy:latest
|
||||||
```
|
```
|
||||||
|
@ -14,11 +14,6 @@ dnf install python37 python3-devel python3-pip
|
|||||||
```bash
|
```bash
|
||||||
dnf install mariadb-devel mariadb-common openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
|
dnf install mariadb-devel mariadb-common openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel
|
||||||
```
|
```
|
||||||
**Install Postgres dependencies**
|
|
||||||
```bash
|
|
||||||
$ sudo yum install postgresql-libs
|
|
||||||
$ pip3 install psycopg2
|
|
||||||
```
|
|
||||||
**Install Development tools**
|
**Install Development tools**
|
||||||
```bash
|
```bash
|
||||||
dnf install gcc gc make
|
dnf install gcc gc make
|
||||||
@ -31,8 +26,6 @@ pip3.7 install -U pip
|
|||||||
```bash
|
```bash
|
||||||
pip install -U virtualenv
|
pip install -U virtualenv
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
**Install Yarn for building NodeJS asset files:**
|
**Install Yarn for building NodeJS asset files:**
|
||||||
```bash
|
```bash
|
||||||
dnf install npm
|
dnf install npm
|
||||||
|
@ -110,6 +110,22 @@ class Domain(db.Model):
|
|||||||
'Domain does not exist. ERROR: {0}'.format(e))
|
'Domain does not exist. ERROR: {0}'.format(e))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def search_idn_domains(self, search_string):
|
||||||
|
"""
|
||||||
|
Search for IDN domains using the provided search string.
|
||||||
|
"""
|
||||||
|
# Compile the regular expression pattern for matching IDN domain names
|
||||||
|
idn_pattern = re.compile(r'^xn--')
|
||||||
|
|
||||||
|
# Search for domain names that match the IDN pattern
|
||||||
|
idn_domains = [
|
||||||
|
domain for domain in self.get_domains() if idn_pattern.match(domain)
|
||||||
|
]
|
||||||
|
|
||||||
|
# Filter the search results based on the provided search string
|
||||||
|
return [domain for domain in idn_domains if search_string in domain]
|
||||||
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""
|
"""
|
||||||
Fetch zones (domains) from PowerDNS and update into DB
|
Fetch zones (domains) from PowerDNS and update into DB
|
||||||
@ -906,4 +922,4 @@ class Domain(db.Model):
|
|||||||
current_app.logger.error('Domain already exists as a record: {} under domain: {}'.format(r['name'].rstrip('.'), upper_domain_name))
|
current_app.logger.error('Domain already exists as a record: {} under domain: {}'.format(r['name'].rstrip('.'), upper_domain_name))
|
||||||
return upper_domain_name
|
return upper_domain_name
|
||||||
upper_domain_name = '.'.join(upper_domain_name.split('.')[1:])
|
upper_domain_name = '.'.join(upper_domain_name.split('.')[1:])
|
||||||
return None
|
return None
|
||||||
|
@ -4,6 +4,7 @@ Flask-Login==0.5.0
|
|||||||
Flask-SQLAlchemy==2.4.4
|
Flask-SQLAlchemy==2.4.4
|
||||||
Flask-Migrate==2.5.3
|
Flask-Migrate==2.5.3
|
||||||
SQLAlchemy==1.3.19
|
SQLAlchemy==1.3.19
|
||||||
|
mysqlclient==2.0.1
|
||||||
configobj==5.0.6
|
configobj==5.0.6
|
||||||
bcrypt>=3.1.7
|
bcrypt>=3.1.7
|
||||||
requests==2.24.0
|
requests==2.24.0
|
||||||
|
Loading…
Reference in New Issue
Block a user