2018-11-21 01:31:02 +01:00
#!/bin/bash
set -euo pipefail
# Configure mysql env vars
2023-05-06 21:50:58 +02:00
: " ${ PDNS_ADMIN_SQLA_DB_HOST : = ${ MYSQL_ENV_MYSQL_HOST :- mysql } } "
: " ${ PDNS_ADMIN_SQLA_DB_PORT : = ${ MYSQL_ENV_MYSQL_PORT :- 3306 } } "
: " ${ PDNS_ADMIN_SQLA_DB_USER : = ${ MYSQL_ENV_MYSQL_USER :- root } } "
if [ " ${ PDNS_ADMIN_SQLA_DB_USER } " = "root" ] ; then
: " ${ PDNS_ADMIN_SQLA_DB_PASSWORD : = $MYSQL_ENV_MYSQL_ROOT_PASSWORD } "
2018-11-21 01:31:02 +01:00
fi
2023-05-06 21:50:58 +02:00
: " ${ PDNS_ADMIN_SQLA_DB_PASSWORD : = ${ MYSQL_ENV_MYSQL_PASSWORD :- powerdnsadmin } } "
: " ${ PDNS_ADMIN_SQLA_DB_NAME : = ${ MYSQL_ENV_MYSQL_DATABASE :- powerdnsadmin } } "
# Cleanup quotes from mysql env vars
PDNS_ADMIN_SQLA_DB_HOST = " ${ PDNS_ADMIN_SQLA_DB_HOST //[ \' \" ] } "
PDNS_ADMIN_SQLA_DB_PORT = " ${ PDNS_ADMIN_SQLA_DB_PORT //[ \' \" ] } "
PDNS_ADMIN_SQLA_DB_USER = " ${ PDNS_ADMIN_SQLA_DB_USER //[ \' \" ] } "
PDNS_ADMIN_SQLA_DB_PASSWORD = " ${ PDNS_ADMIN_SQLA_DB_PASSWORD //[ \' \" ] } "
PDNS_ADMIN_SQLA_DB_NAME = " ${ PDNS_ADMIN_SQLA_DB_NAME //[ \' \" ] } "
2018-11-21 01:31:02 +01:00
export PDNS_ADMIN_SQLA_DB_HOST PDNS_ADMIN_SQLA_DB_PORT PDNS_ADMIN_SQLA_DB_USER PDNS_ADMIN_SQLA_DB_PASSWORD PDNS_ADMIN_SQLA_DB_NAME
# Configure pdns server env vars
2018-11-22 19:01:52 +01:00
: " ${ PDNS_API_URL : =http : // ${ PDNS_ENV_PDNS_webserver_host :- pdns } : ${ PDNS_ENV_PDNS_webserver_port :- 8081 } / } "
2018-11-21 01:31:02 +01:00
: " ${ PDNS_API_KEY : = ${ PDNS_ENV_PDNS_api_key :- } } "
: " ${ PDNS_VERSION : = ${ PDNS_ENV_VERSION :- } } "
# Generate secret key
[ -f /root/secret-key ] || tr -dc _A-Z-a-z-0-9 < /dev/urandom | head -c 32 > /root/secret-key || true
2023-05-06 21:50:58 +02:00
PDNS_ADMIN_SECRET_KEY = " $( cat /root/secret-key) "
2018-11-21 01:31:02 +01:00
export PDNS_ADMIN_SECRET_KEY
2023-12-19 23:12:51 +01:00
subvars --prefix 'PDNS_ADMIN_' < '/config.py.tpl' > '/opt/powerdns-admin/powerdnsadmin/default_config.py'
2018-11-21 01:31:02 +01:00
# Initialize DB if needed
2023-05-06 21:50:58 +02:00
MYSQL_COMMAND = " mysql -h ${ PDNS_ADMIN_SQLA_DB_HOST } -P ${ PDNS_ADMIN_SQLA_DB_PORT } -u ${ PDNS_ADMIN_SQLA_DB_USER } -p ${ PDNS_ADMIN_SQLA_DB_PASSWORD } "
2018-11-21 01:31:02 +01:00
until $MYSQL_COMMAND -e ';' ; do
>& 2 echo 'MySQL is unavailable - sleeping'
sleep 1
done
2023-05-06 21:50:58 +02:00
$MYSQL_COMMAND -e " CREATE DATABASE IF NOT EXISTS ${ PDNS_ADMIN_SQLA_DB_NAME } "
2018-11-21 01:31:02 +01:00
flask db upgrade
# initial settings if not available in the DB
2023-12-19 23:12:51 +01:00
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " INSERT INTO setting (name, value) SELECT * FROM (SELECT 'pdns_api_url', ' ${ PDNS_API_URL //[ \' \" ] } ') AS tmp WHERE NOT EXISTS (SELECT name FROM setting WHERE name = 'pdns_api_url') LIMIT 1; "
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " INSERT INTO setting (name, value) SELECT * FROM (SELECT 'pdns_api_key', ' ${ PDNS_API_KEY //[ \' \" ] } ') AS tmp WHERE NOT EXISTS (SELECT name FROM setting WHERE name = 'pdns_api_key') LIMIT 1; "
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " INSERT INTO setting (name, value) SELECT * FROM (SELECT 'pdns_version', ' ${ PDNS_VERSION //[ \' \" ] } ') AS tmp WHERE NOT EXISTS (SELECT name FROM setting WHERE name = 'pdns_version') LIMIT 1; "
2018-11-21 01:31:02 +01:00
# update pdns api settings if env changed
2023-12-19 23:12:51 +01:00
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " UPDATE setting SET value=' ${ PDNS_API_URL //[ \' \" ] } ' WHERE name='pdns_api_url'; "
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " UPDATE setting SET value=' ${ PDNS_API_KEY //[ \' \" ] } ' WHERE name='pdns_api_key'; "
$MYSQL_COMMAND " ${ PDNS_ADMIN_SQLA_DB_NAME } " -e " UPDATE setting SET value=' ${ PDNS_VERSION //[ \' \" ] } ' WHERE name='pdns_version'; "
2018-11-21 01:31:02 +01:00
mkdir -p /run/uwsgi
chown uwsgi: /run/uwsgi
2018-11-22 19:45:43 +01:00
exec " $@ "