Skip to content

Commit fa36aa6

Browse files
powerdns
1 parent d0e10f8 commit fa36aa6

File tree

6 files changed

+73
-48
lines changed

6 files changed

+73
-48
lines changed

Dockerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ RUN set -eux; \
110110
php81-mbstring \
111111
php81-xml \
112112
\
113-
composer musl musl-utils musl-locales tzdata patch; \
113+
composer musl musl-utils musl-locales tzdata patch bind-tools; \
114114
rm -f /var/cache/apk/*
115115

116116
RUN set -eux; \
@@ -145,6 +145,8 @@ RUN set -eux; \
145145

146146
#bug source correction
147147
RUN set -eux; \
148+
sed -i "s!latin1!utf8mb4!g" /sql/pdns_schema.sql; \
149+
sed -i "s!latin1!utf8mb4!g" /sql/poweradmin.sql; \
148150
# ERROR 1074 (42000) Column length too big (max = 21844); use BLOB or TEXT instead
149151
sed -i "s!VARCHAR(64000) DEFAULT NULL!TEXT(64000) DEFAULT NULL!g" /sql/pdns_schema.sql; \
150152
# BUGs Undefined constant id,error
@@ -166,7 +168,7 @@ RUN set -eux; \
166168
rm -r /var/www/html/poweradmin/Dockerfile
167169

168170

169-
EXPOSE 53 8081 80
171+
EXPOSE 53
170172
EXPOSE 53/UDP
171173

172174
ENTRYPOINT [ "entrypoint" ]

docker-compose.yml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,36 @@ services:
3434
- powerdns
3535
environment:
3636
- TZ=Europe/Moscow
37-
37+
3838
- MYSQL_HOST=mariadb
3939
- MYSQL_DATABASE=pdns_db
4040
- MYSQL_USER=pdns_user
4141
- MYSQL_PASSWORD=pdns_pass
4242

43-
- PDNS_ALLOW_AXFR_IPS=127.0.0.1
43+
- PDNS_ALLOW_AXFR_IPS=127.0.0.1/32, 172.17.0.1/32
4444
- PDNS_MASTER=yes
45-
- PDNS_SLAVE=no
45+
- PDNS_SLAVE=yes
4646
- PDNS_CACHE_TTL=20
4747
- PDNS_DISTRIBUTOR_THREADS=3
48-
- PDNS_RECURSIVE_CACHE_TTL=10
49-
- PDNS_ALLOW_RECURSION=127.0.0.1
50-
- PDNS_RECURSOR=no
48+
- PDNS_ALLOW_DNSUPDATE_FROM=127.0.0.1/32, 172.17.0.33/23
49+
50+
- PDNS_WEBSERVER_ENABLE=yes
51+
- PDNS_WEBSERVER_IP=0.0.0.0
52+
- PDNS_WEBSERVER_ALLOW_FROM=127.0.0.1/32, 172.17.0.1/32
53+
- PDNS_WEBSERVER_PASSWORD=adminpass
54+
- PDNS_WEBSERVER_PORT=8080
55+
- PDNS_WEBSERVER_API_ENABLE=no
56+
- PDNS_WEBSERVER_API_KEY=adminapikey
5157

5258
- POWERADMIN_HOSTMASTER=email.admmin.soa
5359
- POWERADMIN_IFACE_STYLE=spark
54-
#- POWERADMIN_IFACE_INDEX=list
5560
- POWERADMIN_IFACE_LANG=ru_RU
5661
- POWERADMIN_NS1=ns1.example.com
5762
- POWERADMIN_NS2=ns2.example.com
5863
depends_on:
5964
- mariadb
6065
ports:
6166
- 80:80/TCP
62-
- 8081:8081/TCP
63-
- 8053:53/TCP
64-
- 8053:53/UDP
67+
- 8080:8080/TCP
68+
- 53:53/TCP
69+
- 53:53/UDP

entrypoint

Lines changed: 39 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
TZ=${TZ:-Europe/Moscow}
44

5+
#mysql
56
MYSQL_HOST=${MYSQL_HOST:-localhost}
67
MYSQL_PORT=${MYSQL_PORT:-3306}
78
MYSQL_DATABASE=${MYSQL_DATABASE:-pdns}
89
MYSQL_USER=${MYSQL_USER:-pdns}
910
MYSQL_PASSWORD=${MYSQL_PASSWORD:-pdns}
1011

12+
#poweradmin
1113
POWERADMIN_IFACE_LANG=${POWERADMIN_IFACE_LANG:-en_EN}
1214
POWERADMIN_IFACE_STYLE=${POWERADMIN_IFACE_STYLE:-ignite}
1315
POWERADMIN_IFACE_INDEX=${POWERADMIN_IFACE_INDEX:-cards}
@@ -16,15 +18,27 @@ POWERADMIN_NS1=${POWERADMIN_NS1:-}
1618
POWERADMIN_NS2=${POWERADMIN_NS2:-}
1719
POWERADMIN_SESSION_KEY=${POWER_ADMIN:-`pwgen 32 1`}
1820

21+
#pdns
1922
PDNS_ALLOW_AXFR_IPS=${PDNS_ALLOW_AXFR_IPS:-127.0.0.1}
2023
PDNS_MASTER=${PDNS_MASTER:-yes}
2124
PDNS_SLAVE=${PDNS_SLAVE:-no}
2225
PDNS_CACHE_TTL=${PDNS_CACHE_TTL:-20}
2326
PDNS_DISTRIBUTOR_THREADS=${PDNS_DISTRIBUTOR_THREADS:-3}
27+
PDNS_ALLOW_DNSUPDATE_FROM=${PDNS_ALLOW_DNSUPDATE_FROM:-127.0.0.1}
28+
29+
#pdns recursor
2430
PDNS_RECURSIVE_CACHE_TTL=${PDNS_RECURSIVE_CACHE_TTL:-10}
2531
PDNS_ALLOW_RECURSION=${PDNS_ALLOW_RECURSION:-127.0.0.1}
2632
PDNS_RECURSOR=${PDNS_RECURSOR:-no}
2733

34+
#pdns webserver
35+
PDNS_WEBSERVER_ENABLE=${PDNS_WEBSERVER_ENABLE:-no}
36+
PDNS_WEBSERVER_IP=${PDNS_WEBSERVER_IP:-127.0.0.1}
37+
PDNS_WEBSERVER_ALLOW_FROM=${PDNS_WEBSERVER_ALLOW_FROM:-127.0.0.1}
38+
PDNS_WEBSERVER_PASSWORD=${PDNS_WEBSERVER_PASSWORD:-`pwgen 8 1`}
39+
PDNS_WEBSERVER_PORT=${PDNS_WEBSERVER_PORT:-8081}
40+
PDNS_WEBSERVER_API_ENABLE=${PDNS_WEBSERVER_API_ENABLE:-no}
41+
PDNS_WEBSERVER_API_KEY=${PDNS_WEBSERVER_API_KEY:-`pwgen 32 1`}
2842

2943
cp /usr/share/zoneinfo/${TZ} /etc/localtime
3044

@@ -38,20 +52,30 @@ export LANGUAGE
3852
export LC_ALL
3953
export MUSL_LOCPATH
4054

41-
#ERROR 1074 (42000) Column length too big (max = 21844); use BLOB or TEXT instead
42-
sed -i "s!VARCHAR(64000) DEFAULT NULL!TEXT(64000) DEFAULT NULL!g" /sql/pdns_schema.sql
43-
#BUG Ungefined constant
44-
sed -i "s!$this->redirect('dnssec.php', [id => $zone_id]);!$this->redirect('dnssec.php', ['id' => $zone_id]);!"
45-
46-
sed -i "s!latin1!utf8mb4!g" /sql/pdns_schema.sql
47-
sed -i "s!latin1!utf8mb4!g" /sql/poweradmin.sql
48-
55+
#pdns mysql
4956
sed -i "s!MYSQL_HOST!${MYSQL_HOST}!" /etc/powerdns/conf.d/gmysql.conf
5057
sed -i "s!MYSQL_PORT!${MYSQL_PORT}!" /etc/powerdns/conf.d/gmysql.conf
5158
sed -i "s!MYSQL_DATABASE!${MYSQL_DATABASE}!" /etc/powerdns/conf.d/gmysql.conf
5259
sed -i "s!MYSQL_USER!${MYSQL_USER}!" /etc/powerdns/conf.d/gmysql.conf
5360
sed -i "s!MYSQL_PASSWORD!${MYSQL_PASSWORD}!" /etc/powerdns/conf.d/gmysql.conf
5461

62+
#pdns webserver
63+
sed -i "s!PDNS_WEBSERVER_ENABLE!${PDNS_WEBSERVER_ENABLE}!" /etc/powerdns/conf.d/webserver.conf
64+
sed -i "s!PDNS_WEBSERVER_IP!${PDNS_WEBSERVER_IP}!" /etc/powerdns/conf.d/webserver.conf
65+
sed -i "s!PDNS_WEBSERVER_ALLOW_FROM!${PDNS_WEBSERVER_ALLOW_FROM}!" /etc/powerdns/conf.d/webserver.conf
66+
sed -i "s!PDNS_WEBSERVER_PASSWORD!${PDNS_WEBSERVER_PASSWORD}!" /etc/powerdns/conf.d/webserver.conf
67+
sed -i "s!PDNS_WEBSERVER_PORT!${PDNS_WEBSERVER_PORT}!" /etc/powerdns/conf.d/webserver.conf
68+
sed -i "s!PDNS_WEBSERVER_API_ENABLE!${PDNS_WEBSERVER_API_ENABLE}!" /etc/powerdns/conf.d/webserver.conf
69+
sed -i "s!PDNS_WEBSERVER_API_KEY!${PDNS_WEBSERVER_API_KEY}!" /etc/powerdns/conf.d/webserver.conf
70+
71+
#pdns
72+
sed -i "s!PDNS_ALLOW_AXFR_IPS!${PDNS_ALLOW_AXFR_IPS}!" /etc/powerdns/conf.d/dns.conf
73+
sed -i "s!PDNS_MASTER!${PDNS_MASTER}!" /etc/powerdns/conf.d/dns.conf
74+
sed -i "s!PDNS_SLAVE!${PDNS_SLAVE}!" /etc/powerdns/conf.d/dns.conf
75+
sed -i "s!PDNS_CACHE_TTL!${PDNS_CACHE_TTL}!" /etc/powerdns/conf.d/dns.conf
76+
sed -i "s!PDNS_DISTRIBUTOR_THREADS!${PDNS_DISTRIBUTOR_THREADS}!" /etc/powerdns/conf.d/dns.conf
77+
78+
#poweradmin
5579
sed -i "s!MYSQL_HOST!${MYSQL_HOST}!" /var/www/html/poweradmin/inc/config.inc.php
5680
sed -i "s!MYSQL_PORT!${MYSQL_PORT}!" /var/www/html/poweradmin/inc/config.inc.php
5781
sed -i "s!MYSQL_DATABASE!${MYSQL_DATABASE}!" /var/www/html/poweradmin/inc/config.inc.php
@@ -65,6 +89,8 @@ sed -i "s!POWERADMIN_IFACE_INDEX!${POWERADMIN_IFACE_INDEX}!" /var/www/html/power
6589
sed -i "s!POWERADMIN_HOSTMASTER!${POWERADMIN_HOSTMASTER}!" /var/www/html/poweradmin/inc/config.inc.php
6690
sed -i "s!POWERADMIN_NS1!${POWERADMIN_NS1}!" /var/www/html/poweradmin/inc/config.inc.php
6791
sed -i "s!POWERADMIN_NS2!${POWERADMIN_NS2}!" /var/www/html/poweradmin/inc/config.inc.php
92+
93+
#other
6894
sed -i "s!TZ!${TZ}!" /var/www/html/poweradmin/inc/config.inc.php
6995

7096
until nc -z ${MYSQL_HOST} ${MYSQL_PORT}; do
@@ -105,30 +131,9 @@ fi
105131
# INSERT INTO perm_templ ( id, name, descr ) VALUES ( 1, 'Administrator', 'Administrator template with full rights.' );
106132
#
107133

108-
#
109-
# # Setup web access
110-
# if [ ! -f /etc/powerdns/conf.d/webserver.conf ] && [ -n "$POWERDNS_WEBSERVER_ALLOW_FROM" ]; then
111-
# # Check if we got a password
112-
# if [ -z "$POWERDNS_WEBSERVER_PASSWORD" ]; then
113-
# POWERDNS_WEBSERVER_PASSWORD=$(pwgen 16 1)
114-
# fdc_notice "PowerDNS webserver password: $POWERDNS_WEBSERVER_PASSWORD"
115-
# fi
116-
# # Check if we got a API key
117-
# if [ -z "$POWERDNS_API_KEY" ]; then
118-
# POWERDNS_API_KEY=$(pwgen 16 1)
119-
# fdc_notice "PowerDNS webserver API key: $POWERDNS_API_KEY"
120-
# fi
121-
#
122-
# cat <<EOF > /etc/powerdns/conf.d/webserver.conf
123-
# webserver = yes
124-
# webserver-address = 0.0.0.0
125-
# webserver-allow-from = $POWERDNS_WEBSERVER_ALLOW_FROM
126-
# webserver-loglevel = normal
127-
# webserver-password = $POWERDNS_WEBSERVER_PASSWORD
128-
# webserver-port=8081
129-
# api = yes
130-
# api-key = $POWERDNS_API_KEY
131-
# EOF
132-
# fi
133-
#
134+
echo "*****"
135+
echo "POWERDNS WEBSERVER PASSWORD = "${PDNS_WEBSERVER_PASSWORD}
136+
echo "POWERDNS WEBSERVER API KEY = "${PDNS_WEBSERVER_API_KEY}
137+
echo "*****"
138+
134139
exec "$@"

powerdns/conf.d/dns.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
allow-axfr-ips=PDNS_ALLOW_AXFR_IPS
2+
master=PDNS_MASTER
3+
slave=PDNS_SLAVE
4+
cache-ttl=PDNS_CACHE_TTL
5+
distributor-threads=PDNS_DISTRIBUTOR_THREADS
6+
allow-dnsupdate-from=PDNS_ALLOW_DNSUPDATE-FROM

powerdns/conf.d/webserver.conf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
webserver = PDNS_WEBSERVER_ENABLE
2+
webserver-address = PDNS_WEBSERVER_IP
3+
webserver-allow-from = PDNS_WEBSERVER_ALLOW_FROM
4+
webserver-loglevel = normal
5+
webserver-password = PDNS_WEBSERVER_PASSWORD
6+
webserver-port = PDNS_WEBSERVER_PORT
7+
api = PDNS_WEBSERVER_API_ENABLE
8+
api-key = PDNS_WEBSERVER_API_KEY

powerdns/pdns.conf

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
#################################
134134
# daemon Operate as a daemon
135135
#
136-
# daemon=no
136+
daemon=no
137137

138138
#################################
139139
# default-api-rectify Default API-RECTIFY value for zones
@@ -724,4 +724,3 @@ version-string = anonymous
724724
# zone-metadata-cache-ttl Seconds to cache zone metadata from the database
725725
#
726726
# zone-metadata-cache-ttl=60
727-

0 commit comments

Comments
 (0)