From ef7d91ad2c8eed99e7c6286415c4bb0d70b40480 Mon Sep 17 00:00:00 2001 From: Fabio Rauber Date: Tue, 27 Apr 2021 09:57:36 -0300 Subject: [PATCH 1/4] Fix error in README doc --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2afceaa..88de50d 100644 --- a/README.md +++ b/README.md @@ -46,9 +46,9 @@ mysql: ## Environment Variables Supported -Any setting from https://doc.powerdns.com/authoritative/settings.html is supported. Just add the prefix "PDNS\_" and replace any hyphens (-) with underscore (\_). Example: +Any setting from https://doc.powerdns.com/authoritative/settings.html is supported. Just add the prefix "PDNSCONF\_" and replace any hyphens (-) with underscore (\_). Example: -``` allow-axfr-ips ===> PDNS_ALLOW_AXFR_IPS ``` +``` allow-axfr-ips ===> PDNSCONF_ALLOW_AXFR_IPS ``` ### Additional Environment Variables: From 5ba28be4a01c6b4b8c126af71645c80f7f714d8d Mon Sep 17 00:00:00 2001 From: Carl Kittelberger Date: Mon, 28 Mar 2022 17:51:21 +0200 Subject: [PATCH 2/4] Fix MySQL check if PDNSCONF_GMYSQL_HOST is not "mysql". Fixes interlegis/docker-powerdns#3. --- pdns/start.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pdns/start.sh b/pdns/start.sh index 57c48ab..88935fb 100644 --- a/pdns/start.sh +++ b/pdns/start.sh @@ -5,6 +5,8 @@ mkdir -p /etc/powerdns/pdns.d PDNSVARS=`echo ${!PDNSCONF_*}` touch /etc/powerdns/pdns.conf +PDNSCONF_GMYSQL_HOST=${PDNSCONF_GMYSQL_HOST:-mysql} + if [ ! -z $MYSQL_ENV_MARIADB_DATABASE ]; then PDNSCONF_GMYSQL_USER=$MYSQL_ENV_MARIADB_USER PDNSCONF_GMYSQL_DBNAME=$MYSQL_ENV_MARIADB_DATABASE @@ -35,7 +37,7 @@ fi mysqlcheck() { # Wait for MySQL to be available... COUNTER=20 - until mysql -h mysql -u $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_PASSWORD -e "show databases" 2>/dev/null; do + until mysql -h "$PDNSCONF_GMYSQL_HOST" -u "$PDNSCONF_GMYSQL_USER" -p"$PDNSCONF_GMYSQL_PASSWORD" -e "show databases" 2>/dev/null; do echo "WARNING: MySQL still not up. Trying again..." sleep 10 let COUNTER-=1 @@ -45,10 +47,10 @@ mysqlcheck() { fi done - count=`mysql -h mysql -u $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_PASSWORD -e "select count(*) from information_schema.tables where table_type='BASE TABLE' and table_schema='$PDNSCONF_GMYSQL_DBNAME';" | tail -1` + count=`mysql -h "$PDNSCONF_GMYSQL_HOST" -u "$PDNSCONF_GMYSQL_USER" -p"$PDNSCONF_GMYSQL_PASSWORD" -e "select count(*) from information_schema.tables where table_type='BASE TABLE' and table_schema='$PDNSCONF_GMYSQL_DBNAME';" | tail -1` if [ "$count" == "0" ]; then echo "Database is empty. Importing PowerDNS schema..." - mysql -h mysql -u $PDNSCONF_GMYSQL_USER -p$PDNSCONF_GMYSQL_PASSWORD $PDNSCONF_GMYSQL_DBNAME < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql && echo "Import done." + mysql -h "$PDNSCONF_GMYSQL_HOST" -u "$PDNSCONF_GMYSQL_USER" -p"$PDNSCONF_GMYSQL_PASSWORD" "$PDNSCONF_GMYSQL_DBNAME" < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql && echo "Import done." fi } From 35a570c47d155ea956a5c61facdf0e69068f9809 Mon Sep 17 00:00:00 2001 From: Carl Kittelberger Date: Mon, 28 Mar 2022 18:10:43 +0200 Subject: [PATCH 3/4] Install powerdns keyring directly to trusted.gpg.d. This replaces the deprecated apt-key method that was previously used. --- pdns/Dockerfile | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pdns/Dockerfile b/pdns/Dockerfile index f049a66..20c16c3 100644 --- a/pdns/Dockerfile +++ b/pdns/Dockerfile @@ -12,16 +12,17 @@ ENV PDNSCONF_LAUNCH="gmysql" \ PDNSCONF_API_KEY="" \ SECALLZONES_CRONJOB="no" -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -q -y curl gnupg && \ - curl https://repo.powerdns.com/FD380FBB-pub.asc | apt-key add - +ADD https://repo.powerdns.com/FD380FBB-pub.asc /etc/apt/trusted.gpg.d/powerdns-key.asc ADD pdns.list /etc/apt/sources.list.d/pdns.list ADD pdns.preference /etc/apt/preferences.d/pdns -RUN apt-get update && \ +RUN \ + chmod 644 /etc/apt/trusted.gpg.d/powerdns-key.asc && \ + apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -q -y pdns-server pdns-backend-mysql mariadb-client && \ rm /etc/powerdns/pdns.d/*.conf && rm /etc/powerdns/*.conf && \ - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cron jq && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cron curl jq && \ rm /etc/cron.daily/* && \ mkdir /var/run/pdns && \ apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* From 4600c0b6ed989efdab2ad3100efa50d6fe02c353 Mon Sep 17 00:00:00 2001 From: Carl Kittelberger Date: Mon, 28 Mar 2022 18:09:16 +0200 Subject: [PATCH 4/4] Install mysql schema from package instead of supplying ourselves. This replaces the changes in b035eef30de694a2fb74331c8995ada13bb2cef8. --- pdns/Dockerfile | 2 +- pdns/schema.mysql.sql | 90 ------------------------------------------- 2 files changed, 1 insertion(+), 91 deletions(-) delete mode 100644 pdns/schema.mysql.sql diff --git a/pdns/Dockerfile b/pdns/Dockerfile index f049a66..b62888a 100644 --- a/pdns/Dockerfile +++ b/pdns/Dockerfile @@ -19,6 +19,7 @@ ADD pdns.list /etc/apt/sources.list.d/pdns.list ADD pdns.preference /etc/apt/preferences.d/pdns RUN apt-get update && \ + echo "path-include /usr/share/doc/*/*.sql" >> /etc/dpkg/dpkg.cfg.d/docker && \ DEBIAN_FRONTEND=noninteractive apt-get install -q -y pdns-server pdns-backend-mysql mariadb-client && \ rm /etc/powerdns/pdns.d/*.conf && rm /etc/powerdns/*.conf && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends cron jq && \ @@ -31,7 +32,6 @@ EXPOSE 53/udp 53/tcp ADD start.sh /usr/local/bin/start.sh ADD fixdsrrs.sh /usr/local/bin/fixdsrrs.sh ADD secallzones.sh /usr/local/bin/secallzones.sh -ADD schema.mysql.sql /usr/share/doc/pdns-backend-mysql/ RUN chmod a+x /usr/local/bin/*.sh CMD ["/usr/local/bin/start.sh"] diff --git a/pdns/schema.mysql.sql b/pdns/schema.mysql.sql deleted file mode 100644 index 002fe92..0000000 --- a/pdns/schema.mysql.sql +++ /dev/null @@ -1,90 +0,0 @@ -CREATE TABLE domains ( - id INT AUTO_INCREMENT, - name VARCHAR(255) NOT NULL, - master VARCHAR(128) DEFAULT NULL, - last_check INT DEFAULT NULL, - type VARCHAR(6) NOT NULL, - notified_serial INT DEFAULT NULL, - account VARCHAR(40) DEFAULT NULL, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE UNIQUE INDEX name_index ON domains(name); - - -CREATE TABLE records ( - id INT AUTO_INCREMENT, - domain_id INT DEFAULT NULL, - name VARCHAR(255) DEFAULT NULL, - type VARCHAR(10) DEFAULT NULL, - content VARCHAR(64000) DEFAULT NULL, - ttl INT DEFAULT NULL, - prio INT DEFAULT NULL, - change_date INT DEFAULT NULL, - disabled TINYINT(1) DEFAULT 0, - ordername VARCHAR(255) BINARY DEFAULT NULL, - auth TINYINT(1) DEFAULT 1, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX nametype_index ON records(name,type); -CREATE INDEX domain_id ON records(domain_id); -CREATE INDEX recordorder ON records (domain_id, ordername); - - -CREATE TABLE supermasters ( - ip VARCHAR(64) NOT NULL, - nameserver VARCHAR(255) NOT NULL, - account VARCHAR(40) NOT NULL, - PRIMARY KEY (ip, nameserver) -) Engine=InnoDB; - - -CREATE TABLE comments ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - name VARCHAR(255) NOT NULL, - type VARCHAR(10) NOT NULL, - modified_at INT NOT NULL, - account VARCHAR(40) NOT NULL, - comment VARCHAR(64000) NOT NULL, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX comments_domain_id_idx ON comments (domain_id); -CREATE INDEX comments_name_type_idx ON comments (name, type); -CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); - - -CREATE TABLE domainmetadata ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - kind VARCHAR(32), - content TEXT, - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); - - -CREATE TABLE cryptokeys ( - id INT AUTO_INCREMENT, - domain_id INT NOT NULL, - flags INT NOT NULL, - active BOOL, - content TEXT, - PRIMARY KEY(id) -) Engine=InnoDB; - -CREATE INDEX domainidindex ON cryptokeys(domain_id); - - -CREATE TABLE tsigkeys ( - id INT AUTO_INCREMENT, - name VARCHAR(255), - algorithm VARCHAR(50), - secret VARCHAR(255), - PRIMARY KEY (id) -) Engine=InnoDB; - -CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);