Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
04344ad
add: add PowerDNS authoritative and recursor services with Docker sup…
iyashnov Dec 24, 2025
1103484
refactor: update DNS service adapter and router for improved zone man…
iyashnov Dec 24, 2025
ab47183
refactor: add PDNS_API_KEY to local environment configuration
iyashnov Dec 24, 2025
b574f0d
refactor: restructure DNS module with PowerDNS integration and enhanc…
iyashnov Dec 24, 2025
beab9b9
refactor: update DNS settings and add PowerDNS client support
iyashnov Dec 24, 2025
933df99
refactor: enhance DNS management with PowerDNS integration and DTO up…
iyashnov Dec 24, 2025
4defc82
refactor: remove SelfHostedDNSManager class and associated methods
iyashnov Dec 24, 2025
7caa9e6
refactor: remove unused DNS entrypoint script and zone templates
iyashnov Dec 24, 2025
be08bf9
refactor: remove obsolete bind9 Dockerfile
iyashnov Dec 24, 2025
379d17a
refactor: remove SelfHostedDNSManager import and clean up exception h…
iyashnov Dec 24, 2025
94b5d67
refactor: update DNS adapter and use cases for improved zone manageme…
iyashnov Dec 24, 2025
53f214a
test: update DNS DTOs and improve test cases for DNS record and zone …
iyashnov Dec 24, 2025
bf3964d
refactor: implement get_zones method in StubDNSManager to return an e…
iyashnov Dec 24, 2025
ba6ff12
refactor: add DEFAULT_NAMESERVER and PDNS_API_KEY to md-test service …
iyashnov Dec 24, 2025
cf84397
refactor: remove SelfHostedDNSManager from exports in DNS module
iyashnov Dec 24, 2025
a53bc0d
refactor: update DNS error handling to use DNSError for consistency
iyashnov Dec 24, 2025
9d79ce8
refactor: fix codestyle and naming
iyashnov Dec 24, 2025
0f4f8ec
refactor: simplify client selection logic by introducing _get_client_…
iyashnov Dec 24, 2025
6af8c05
refactor: simplify client selection logic in _get_client_by_zone_kind…
iyashnov Dec 24, 2025
cba99d8
refactor: improve code readability by simplifying select statement an…
iyashnov Dec 24, 2025
50f50d2
refactor: enhance DNS error handling by adding DNSRecordGetError and …
iyashnov Dec 24, 2025
03f8def
refactor: add missing line breaks for improved readability in DNS exc…
iyashnov Dec 24, 2025
7385dd1
refactor: rename bind9 to pdns_auth and update related configurations…
iyashnov Dec 24, 2025
20fdede
fix: codestyle
iyashnov Dec 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,395 changes: 0 additions & 1,395 deletions .dns/dns_api.py

This file was deleted.

19 changes: 0 additions & 19 deletions .dns/entrypoint.sh

This file was deleted.

11 changes: 0 additions & 11 deletions .dns/templates/zone.template

This file was deleted.

10 changes: 0 additions & 10 deletions .dns/templates/zone_options.template

This file was deleted.

45 changes: 0 additions & 45 deletions .docker/bind9.Dockerfile

This file was deleted.

68 changes: 68 additions & 0 deletions .docker/pdns_auth.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
FROM alpine:3.20 AS builder

RUN apk add --no-cache --virtual .build-deps \
build-base \
lmdb-dev \
openssl-dev \
boost-dev \
autoconf automake libtool \
git ragel bison flex \
lua5.4-dev \
curl-dev

RUN apk add --no-cache \
lua \
lua-dev \
lmdb \
boost-libs \
openssl-libs-static \
curl \
libstdc++

RUN git clone https://github.com/PowerDNS/pdns.git /pdns
WORKDIR /pdns

RUN git submodule init &&\
git submodule update &&\
git checkout auth-5.0.1

RUN autoreconf -vi

RUN mkdir /build && \
./configure \
--sysconfdir=/etc/powerdns \
--enable-option-checking=fatal \
--with-dynmodules='lmdb' \
--with-modules='' \
--with-unixodbc-lib=/usr/lib/$(dpkg-architecture -q DEB_BUILD_GNU_TYPE) && \
make clean && \
make $MAKEFLAGS -C ext &&\
make $MAKEFLAGS -C modules &&\
make $MAKEFLAGS -C pdns && \
make -C pdns install DESTDIR=/build &&\
make -C modules install DESTDIR=/build &&\
make clean && \
strip /build/usr/local/bin/* /build/usr/local/sbin/* /build/usr/local/lib/pdns/*.so

# ====================================================================================================

FROM alpine:3.20 AS runtime

COPY --from=builder /build /

RUN apk add --no-cache \
lua \
lua-dev \
lmdb \
boost-libs \
openssl-libs-static \
curl \
libstdc++

RUN mkdir -p /etc/powerdns/pdns.d /var/run/pdns /var/lib/powerdns /etc/powerdns/templates.d /var/lib/pdns-lmdb

COPY ./pdns.conf /etc/powerdns/pdns.conf

EXPOSE 8082/tcp

CMD ["/usr/local/sbin/pdns_server"]
6 changes: 3 additions & 3 deletions .github/workflows/build-beta.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ jobs:
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg VERSION=beta

build-bind9:
build-pdns_auth:
runs-on: ubuntu-latest
needs: [build-tests, run-ssh-test, run-tests]
steps:
Expand All @@ -172,14 +172,14 @@ jobs:

- name: Build docker image
env:
TAG: ghcr.io/${{ env.REPO }}_bind9:beta
TAG: ghcr.io/${{ env.REPO }}_pdns_auth:beta
DOCKER_BUILDKIT: '1'
run: |
echo $TAG
docker build \
--push \
--target=runtime \
-f .docker/bind9.Dockerfile . \
-f .docker/pdns_auth.Dockerfile . \
-t $TAG \
--cache-to type=gha,mode=max \
--cache-from $TAG \
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/build-docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ jobs:
--build-arg BUILDKIT_INLINE_CACHE=1 \
--build-arg VERSION=latest

build-bind9:
build-pdns_auth:
runs-on: ubuntu-latest
needs: [build-tests, run-ssh-test, run-tests]
steps:
Expand All @@ -193,14 +193,14 @@ jobs:

- name: Build docker image
env:
TAG: ghcr.io/${{ env.REPO }}_bind9:latest
TAG: ghcr.io/${{ env.REPO }}_pdns_auth:latest
DOCKER_BUILDKIT: '1'
run: |
echo $TAG
docker build \
--push \
--target=runtime \
-f .docker/bind9.Dockerfile . \
-f .docker/pdns_auth.Dockerfile . \
-t $TAG \
--cache-to type=gha,mode=max \
--cache-from $TAG \
Expand Down
44 changes: 26 additions & 18 deletions .package/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -296,27 +296,32 @@ services:
- traefik.tcp.routers.kpasswd.service=kpasswd
- traefik.tcp.services.kpasswd.loadbalancer.server.port=464

bind_dns:
image: ghcr.io/multidirectorylab/multidirectory_bind9:${VERSION:-latest}
container_name: bind9
hostname: bind9
restart: unless-stopped
pdns_auth:
image: ghcr.io/multidirectorylab/multidirectory_pdns_auth:${VERSION:-latest}
container_name: pdns_auth
expose:
- 8082
- 53
volumes:
- dns_server_file:/opt/
- dns_server_config:/etc/bind/
tty: true
env_file:
- .env
environment:
- USE_CONFIG_FILE_LOGGING=true
depends_on:
ldap_server:
condition: service_healthy
restart: true
- dns_lmdb:/var/lib/pdns-lmdb
- dns_config:/etc/powerdns


pdns_recursor:
image: powerdns/pdns-recursor-51:5.1.7
container_name: pdns_recursor
expose:
- 8083
ports:
- "53:53/udp"
- "53:53/tcp"
volumes:
- ./recursor.conf:/etc/powerdns/recursor.conf
- forward_zones:/etc/powerdns/recursor.d/
labels:
- traefik.enable=true
- traefik.udp.routers.bind_dns_udp.entrypoints=bind_dns_udp
- traefik.udp.services.bind_dns_udp.loadbalancer.server.port=53
- traefik.udp.routers.power_dns_recursor_udp.entrypoints=power_dns_recursor_udp
- traefik.udp.services.power_dns_recursor_udp.loadbalancer.server.port=53

kea_dhcp4:
image: ghcr.io/multidirectorylab/multidirectory_dhcp4:${VERSION:-latest}
Expand Down Expand Up @@ -427,3 +432,6 @@ volumes:
leases:
sockets:
dhcp:
dns_lmdb:
dns_config:
forward_zones:
2 changes: 1 addition & 1 deletion .package/traefik.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ entryPoints:
address: ":749"
kpasswd:
address: ":464"
bind_dns_udp:
power_dns_recursor_udp:
address: ":53/udp"
websecure:
address: ":443"
Expand Down
Loading