--- /dev/null
+See /usr/share/doc/quilt/README.source
--- /dev/null
+# Bind backend configuration
+
+launch+=bind
+
+#################################
+# bind-check-interval Interval for zonefile changes
+#
+# bind-check-interval=0
+
+#################################
+# bind-config Location of named.conf
+#
+# bind-config=
+bind-config=/etc/powerdns/named.conf
+
+#################################
+# bind-dnssec-db Filename to store & access our DNSSEC metadatabase, empty for none
+#
+# bind-dnssec-db=
+
+#################################
+# bind-hybrid Store DNSSEC metadata in other backend
+#
+# bind-hybrid=no
+
+#################################
+# bind-ignore-broken-records Ignore records that are out-of-bound for the zone.
+#
+# bind-ignore-broken-records=no
+
+#################################
+# bind-supermaster-config Location of (part of) named.conf where pdns can write zone-statements to
+#
+# bind-supermaster-config=
+bind-supermaster-config=/var/lib/powerdns/supermaster.conf
+
+#################################
+# bind-supermaster-destdir Destination directory for newly added slave zones
+#
+# bind-supermaster-destdir=
+bind-supermaster-destdir=/var/lib/powerdns/zones.slave.d
+
+#################################
+# bind-supermasters List of IP-addresses of supermasters
+#
+# bind-supermasters=
--- /dev/null
+# A schema for storing DNS zones in LDAP
+#
+# ORDERING is not necessary, and some servers don't support
+# integerOrderingMatch. Omit or change if you like
+
+attributetype ( 1.3.6.1.4.1.2428.20.0.0 NAME 'dNSTTL'
+ DESC 'An integer denoting time to live'
+ EQUALITY integerMatch
+ ORDERING integerOrderingMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.0.1 NAME 'dNSClass'
+ DESC 'The class of a resource record'
+ EQUALITY caseIgnoreIA5Match
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.11 NAME 'wKSRecord'
+ DESC 'a well known service description, RFC 1035'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.12 NAME 'pTRRecord'
+ DESC 'domain name pointer, RFC 1035'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.13 NAME 'hInfoRecord'
+ DESC 'host information, RFC 1035'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.14 NAME 'mInfoRecord'
+ DESC 'mailbox or mail list information, RFC 1035'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.16 NAME 'tXTRecord'
+ DESC 'text string, RFC 1035'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.17 NAME 'rPRecord'
+ DESC 'for Responsible Person, RFC 1183'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.18 NAME 'aFSDBRecord'
+ DESC 'for AFS Data Base location, RFC 1183'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.24 NAME 'SigRecord'
+ DESC 'Signature, RFC 2535'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.25 NAME 'KeyRecord'
+ DESC 'Key, RFC 2535'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.27 NAME 'gPosRecord'
+ DESC 'Geographical Position, RFC 1712'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.28 NAME 'aAAARecord'
+ DESC 'IPv6 address, RFC 1886'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.29 NAME 'LocRecord'
+ DESC 'Location, RFC 1876'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.30 NAME 'nXTRecord'
+ DESC 'non-existant, RFC 2535'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.33 NAME 'sRVRecord'
+ DESC 'service location, RFC 2782'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.35 NAME 'nAPTRRecord'
+ DESC 'Naming Authority Pointer, RFC 2915'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.36 NAME 'kXRecord'
+ DESC 'Key Exchange Delegation, RFC 2230'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.37 NAME 'certRecord'
+ DESC 'certificate, RFC 2538'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.38 NAME 'a6Record'
+ DESC 'A6 Record Type, RFC 2874'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.39 NAME 'dNameRecord'
+ DESC 'Non-Terminal DNS Name Redirection, RFC 2672'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.42 NAME 'aPLRecord'
+ DESC 'Lists of Address Prefixes, RFC 3123'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.43 NAME 'dSRecord'
+ DESC 'Delegation Signer, RFC 3658'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.44 NAME 'sSHFPRecord'
+ DESC 'SSH Key Fingerprint, RFC 4255'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.45 NAME 'iPSecKeyRecord'
+ DESC 'SSH Key Fingerprint, RFC 4025'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.46 NAME 'rRSIGRecord'
+ DESC 'RRSIG, RFC 3755'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.47 NAME 'nSECRecord'
+ DESC 'NSEC, RFC 3755'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.48 NAME 'dNSKeyRecord'
+ DESC 'DNSKEY, RFC 3755'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.49 NAME 'dHCIDRecord'
+ DESC 'DHCID, RFC 4701'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+attributetype ( 1.3.6.1.4.1.2428.20.1.99 NAME 'sPFRecord'
+ DESC 'Sender Policy Framework, RFC 4408'
+ EQUALITY caseIgnoreIA5Match
+ SUBSTR caseIgnoreIA5SubstringsMatch
+ SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
+
+objectclass ( 1.3.6.1.4.1.2428.20.2 NAME 'dNSDomain2'
+ SUP 'dNSDomain' STRUCTURAL
+ MAY ( DNSTTL $ DNSClass $ WKSRecord $ PTRRecord $
+ HINFORecord $ MINFORecord $ TXTRecord $ RPRecord $
+ AFSDBRecord $ SIGRecord $ KEYRecord $ GPOSRecord $
+ AAAARecord $ LOCRecord $ NXTRecord $ SRVRecord $
+ NAPTRRecord $ KXRecord $ CERTRecord $ A6Record $
+ DNAMERecord $ APLRecord $ DSRecord $ SSHFPRecord $
+ IPSECKEYRecord $ RRSIGRecord $ NSECRecord $
+ DNSKEYRecord $ DHCIDRecord $ SPFRecord
+ ) )
--- /dev/null
+# geoip Configuration
+#
+# See for more information https://doc.powerdns.com/md/authoritative/backend-geoip/
+#
+# geoip-database-file=
+# geoip-database-file6=
+# geoip-zones-file=
+# geoip-dnssec-keydir=
--- /dev/null
+# godbc Configuration
+#
+# Uncomment to launch the godbc backend
+#launch+=godbc
+
+#################################
+# godbc-datasource Datasource (DSN) to use
+#
+# godbc-datasource=PowerDNS
+
+#################################
+# godbc-username User to connect as
+#
+# godbc-username=powerdns
+
+#################################
+# godbc-password Password to connect with
+#
+# godbc-password=
--- /dev/null
+# LDAP Configuration
+#
+# ldap-host=
+# ldap-method=
+# ldap-basedn=
+# ldap-binddn=
+# ldap-secret=
--- /dev/null
+# Configuration for the lua backend
+#lua-filename = powerdns-luabackend.lua
+#lua-logging-query = no
+
+# You can also override all the default functionsnames for the luafunctions if you
+# want. The prefix is lua-f_<functionname>=mynewfunction. For example:
+#lua-f_lookup = mynewfunction
+#
+# will call the function 'mynewfunction' for the lookup-routine.
+#
+# If you want your own configuration parameters you can have that too.
+# Just call the function getarg("my_parameter") and it will return the value
+# of 'lua-my_parameter'. For boolean you use the function mustdo("my_parameter").
--- /dev/null
+# Debian default: supermaster created zones are written here:
+include "/var/lib/powerdns/supermaster.conf";
+
+# Example for a manually configured slave zone:
+#
+# zone "example.net" {
+# file "/var/lib/powerdns/zones.slave.d/example.net.zone";
+# type slave;
+# masters { 192.0.2.53; };
+# };
--- /dev/null
+# OpenDBX Configuration
+#
+# The backend to use
+# opendbx-backend=
+#
+# The database host to read from
+# opendbx-host-read=
+#
+# The database host to write to
+# opendbx-host-write=
+#
+# The port on which the database hosts listen
+# opendbx-port=
+#
+# The name of the database
+# opendbx-database=
+#
+# The username to connect to the database
+# opendbx-username=
+#
+# The password to connect to the database
+# opendbx-password
--- /dev/null
+# MySQL Configuration
+#
+# Launch gmysql backend
+launch+=gmysql
+
+# gmysql parameters
+gmysql-host=_DBC_DBSERVER_
+gmysql-port=_DBC_DBPORT_
+gmysql-dbname=_DBC_DBNAME_
+gmysql-user=_DBC_DBUSER_
+gmysql-password=_DBC_DBPASS_
+gmysql-dnssec=yes
+# gmysql-socket=
--- /dev/null
+# PostgreSQL Configuration
+#
+# Launch gpgsql backend
+launch+=gpgsql
+
+# gpgsql parameters
+gpgsql-host=_DBC_DBSERVER_
+gpgsql-port=_DBC_DBPORT_
+gpgsql-dbname=_DBC_DBNAME_
+gpgsql-user=_DBC_DBUSER_
+gpgsql-password=_DBC_DBPASS_
+gpgsql-dnssec=yes
--- /dev/null
+# Configuration for gsqlite
+#
+# Launch gsqlite3
+launch+=gsqlite3
+
+# Database location
+gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
+gsqlite3-dnssec=on
--- /dev/null
+# Configuration for pipe backend
+#
+# pipe-command=
+# pipe-timeout=
+# pipe-regex=
+
--- /dev/null
+# Config file for the TinyDNS backend
+# Specifies the name of the data file to use.
+# tinydns-dbfile=data.cdb
+
+# Adjusts the TAI value if timestamps are used. These seconds will be added to
+# the start point (1970) and will allow you to adjust for leap seconds. The
+# current default is 11. The last update was on june 30th 2012.
+# tinydns-tai-adjust=11
+#
+# Notify all the slave nameservers on startup. This might cause broadcast storms.
+# tinydns-notify-on-startup=no
+
+# The tinydns-data program can create data.cdb files that have bad/corrupt
+# RDATA. PowerDNS will crash when it tries to read that bad/corrupt data. This
+# option (change to yes), allows you to ignore that bad RDATA to make PowerDNS
+# operate when bad data is in your CDB file. Be aware that the records are then
+# ignored, where tinydns would still send out the bogus data. The option is
+# primarily useful in master mode, as that reads all the packets in the zone to
+# find all the SOA records.
+# tinydns-ignore-bogus-records=no
+
+
+# Enable or Disable location support in the backend. Changing the value to 'no'
+# will make the backend ignore the locations. This then returns all records.
+# When the setting is changed to 'no' an AXFR will also return all the records.
+# With the setting on 'yes' an AXFR will only return records without a location.
+# tinydns-locations=no
--- /dev/null
+Source: pdns
+Section: net
+Priority: extra
+Standards-Version: 4.1.1
+Maintainer: PowerDNS Autobuilder <powerdns.support@powerdns.com>
+Origin: PowerDNS
+Build-Depends: autoconf,
+ automake,
+ autotools-dev,
+ bison,
+ curl,
+ debhelper (>= 9.20160114~),
+ default-libmysqlclient-dev,
+ dh-autoreconf,
+ dh-systemd,
+ dpkg-dev (>= 1.17.0~),
+ flex,
+ libboost-dev,
+ libboost-program-options-dev,
+ libboost-serialization-dev,
+ libboost-test-dev,
+ libcdb-dev,
+ libgeoip-dev,
+ libkrb5-dev,
+ libldap2-dev,
+ liblua5.3-dev,
+ libopendbx1-dev,
+ libpq-dev,
+ libsodium-dev,
+ libsqlite3-dev,
+ libssl-dev,
+ libsystemd-dev [linux-any],
+ libtool,
+ libyaml-cpp-dev (>= 0.5),
+ pkg-config,
+ po-debconf,
+ ragel,
+ unixodbc-dev (>= 2.3.1)
+Homepage: http://www.powerdns.com/
+
+Package: pdns-server
+Architecture: any
+Depends: adduser,
+ ${misc:Depends},
+ ${shlibs:Depends}
+Recommends: pdns-backend-bind
+Suggests: pdns-backend
+Description: extremely powerful and versatile nameserver
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This is the authoritative nameserver that answers questions about
+ domains that it knows about. You also need at least one backend installed to
+ serve data.
+
+Package: pdns-tools
+Architecture: any
+Depends: ${misc:Depends},
+ ${shlibs:Depends}
+Replaces: pdns-server (<< 3.4.6-2)
+Breaks: pdns-server (<< 3.4.6-2)
+Description: Tools for DNS debugging by PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains several tools to debug DNS issues. These tools do not
+ require any part of the PowerDNS server components to work.
+ .
+ * dnsbulktest: A resolver stress-tester
+ * dnsgram: Show per 5-second statistics to study intermittent resolver issues
+ * dnsreplay: Replay a pcap with DNS queries
+ * dnsscan: Prints the query-type amounts in a pcap
+ * dnsscope: Calculates statistics without replaying traffic
+ * dnstcpbench: Perform TCP benchmarking of DNS servers
+ * dnswasher: Clean a pcap of identifying IP information
+ * ixplore: Explore diffs from IXFRs
+ * nsec3dig: Calculate the correctness of NSEC3 proofs
+ * saxfr: AXFR zones and show extra information
+
+Package: pdns-backend-bind
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Replaces: pdns-server (<< 4.0.0-2~)
+Breaks: pdns-server (<< 4.0.0-2~)
+Description: BIND backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the bind backend for the PowerDNS nameserver.
+ Zone data will be read from flat BIND-style zone files, and the list
+ of zones needs to be given in a named.conf-style file.
+
+Package: pdns-backend-pipe
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: pipe/coprocess backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the pipe backend for the PowerDNS nameserver. This
+ allows PowerDNS to retrieve domain info from a process that accepts
+ questions on stdin and returns answers on stdout.
+
+Package: pdns-backend-ldap
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: LDAP backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains an LDAP backend for the PowerDNS nameserver.
+
+Package: pdns-backend-geoip
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: geoip backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains a geoip-backend for the PowerDNS nameserver. This
+ backend balances the load throughout the world so that people access the
+ geographically nearest available server based on a zonefile written in
+ YAML.
+
+Package: pdns-backend-mysql
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Suggests: default-mysql-server
+Provides: pdns-backend
+Description: generic MySQL backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains a generic MySQL backend for the PowerDNS
+ nameserver. It has configurable SQL statements.
+
+Package: pdns-backend-odbc
+Architecture: any
+Depends: pdns-server (>= ${source:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: generic UnixODBC backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains a generic UnixODBC backend for the PowerDNS
+ nameserver. It has configurable SQL statements.
+
+Package: pdns-backend-pgsql
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Suggests: postgresql
+Provides: pdns-backend
+Description: generic PostgreSQL backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains a generic PostgreSQL backend for the PowerDNS
+ nameserver. It has configurable SQL statements.
+
+Package: pdns-backend-sqlite3
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: sqlite 3 backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains a generic SQLite 3 backend for PowerDNS.
+
+Package: pdns-backend-lua
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: Lua backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the Lua backend for PowerDNS.
+
+Package: pdns-backend-remote
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: remote backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the remote backend for PowerDNS. It is suitable
+ for serving data acquired from an AF_UNIX, pipe, or HTTP connector.
+
+Package: pdns-backend-opendbx
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: OpenDBX backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the OpenDBX backend for PowerDNS. Please install
+ the libopendbx1-DATABASE package to allow OpenDBX to connect to
+ the chosen database.
+
+Package: pdns-backend-mydns
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: MyDNS compatibility backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the MyDNS compatibility backend for PowerDNS.
+
+Package: pdns-backend-tinydns
+Architecture: any
+Depends: pdns-server (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends}
+Provides: pdns-backend
+Description: tinydns compatibility backend for PowerDNS
+ PowerDNS is a versatile nameserver which supports a large number
+ of different backends ranging from simple zonefiles to relational
+ databases and load balancing/failover algorithms.
+ PowerDNS tries to emphasize speed and security.
+ .
+ This package contains the tinydns compatibility backend for PowerDNS.
--- /dev/null
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: PowerDNS
+Source: https://www.powerdns.com/downloads.html
+
+Files: *
+Copyright: 2002 - 2016 PowerDNS.COM BV and contributors
+License: GPL-2 with OpenSSL Exception
+Comment: Sometimes, Netherlabs BV is credited, which is a precursor
+ to todays PowerDNS.COM BV.
+
+Files: m4/ax_cxx_compile_stdcxx_11.m4
+Copyright: 2008 Benjamin Kosnik <bkoz@redhat.com>
+ 2012 Zack Weinberg <zackw@panix.com>
+ 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+ 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+License: free-generic
+
+Files: m4/boost.m4
+Copyright: 2007-2011, 2014 Benoit Sigoure <tsuna@lrde.epita.fr>
+License: GPL-3 or Autoconf
+
+Files: m4/libtool.m4 m4/lt*.m4
+Copyright: 1996-2011 Free Software Foundation, Inc.
+License: free-fsf
+
+Files: m4/systemd.m4
+Copyright: 2014 Luis R. Rodriguez <mcgrof@suse.com>
+ 2016 Pieter Lexis <pieter.lexis@powerdns.com>
+License: GPL-2+
+
+Files: m4/warnings.m4
+Copyright: 2008-2015 Free Software Foundation, Inc.
+License: free-fsf
+
+Files: m4/pdns_d_fortify_source.m4 m4/pdns_param_ssp_buffer_size.m4 m4/pdns_pie.m4 m4/pdns_relro.m4 m4/pdns_stack_protector.m4
+Copyright: 2013 Red Hat, Inc.
+License: LGPL-2.1+
+
+Files: debian/*
+Copyright: 2002 - 2004 Wichert Akkermann <wichert@wiggy.net>
+ 2004 - 2013 Matthijs Möhlmann <matthijs@cacholong.nl>
+ 2012 - 2013 Marc Haber <mh+debian-packages@zugschlus.de>
+ 2014 - 2015 Christian Hofstaedtler <zeha@debian.org>
+License: GPL-2
+
+Files: modules/gsqlite3backend/*
+Copyright: 2003 Michel Stol <michel@powerdns.com>
+ 2011 PowerDNS.COM BV
+License: GPL-2 with OpenSSL Exception
+
+Files: modules/mydnsbackend/*
+Copyright: 2011 Jonathan Oddy (Hostway UK) <jonathan@woaf.net>
+License: GPL-2 with OpenSSL Exception
+
+Files: modules/mydnsbackend/schema.mydns.sql
+Copyright: 2002-2005 Don Moore
+ 2007-2008 Howard Wilkinson
+License: GPL-2+
+
+Files: modules/ldapbackend/* pdns/zone2ldap.cc
+Copyright: 2003-2007 Norbert Sendetzky <norbert@linuxnetworks.de>
+License: GPL-2 with OpenSSL Exception
+
+Files: modules/luabackend/*
+Copyright: 2011 Fredrik Danerklint
+License: GPL-2 with OpenSSL Exception
+
+Files: modules/oraclebackend/*
+Copyright: 2010 - 2011 Maik Zumstrull
+ Steinbuch Centre for Computing,
+ Karlsruhe Institute of Technology
+License: Expat
+
+Files: modules/opendbxbackend/*
+Copyright: 2005-2007 Norbert Sendetzky <norbert@linuxnetworks.de>
+License: GPL-2 with OpenSSL Exception
+
+Files: ext/yahttp/*
+Copyright: 2014 Aki Tuomi
+License: Expat
+
+Files: ext/json11/*
+Copyright: 2013 Dropbox, Inc.
+License: Expat
+
+Files: ext/luawrapper/*
+Copyright: 2013, Pierre KRIEGER
+License: BSD-3
+
+Files: pdns/effective_tld_names.dat
+Copyright: 2007–11 Mozilla Foundation
+License: MPL-2.0
+
+License: MPL-2.0
+ Mozilla Public License Version 2.0
+ ==================================
+ .
+ 1. Definitions
+ --------------
+ .
+ 1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+ .
+ 1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+ .
+ 1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+ .
+ 1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+ .
+ 1.5. "Incompatible With Secondary Licenses"
+ means
+ .
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+ .
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+ .
+ 1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+ .
+ 1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+ .
+ 1.8. "License"
+ means this document.
+ .
+ 1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+ .
+ 1.10. "Modifications"
+ means any of the following:
+ .
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+ .
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+ .
+ 1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+ .
+ 1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+ .
+ 1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+ .
+ 1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+ .
+ 2. License Grants and Conditions
+ --------------------------------
+ .
+ 2.1. Grants
+ .
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+ .
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+ .
+ (b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+ .
+ 2.2. Effective Date
+ .
+ The licenses granted in Section 2.1 with respect to any Contribution
+ become effective for each Contribution on the date the Contributor first
+ distributes such Contribution.
+ .
+ 2.3. Limitations on Grant Scope
+ .
+ The licenses granted in this Section 2 are the only rights granted under
+ this License. No additional rights or licenses will be implied from the
+ distribution or licensing of Covered Software under this License.
+ Notwithstanding Section 2.1(b) above, no patent license is granted by a
+ Contributor:
+ .
+ (a) for any code that a Contributor has removed from Covered Software;
+ or
+ .
+ (b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+ .
+ (c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+ .
+ This License does not grant any rights in the trademarks, service marks,
+ or logos of any Contributor (except as may be necessary to comply with
+ the notice requirements in Section 3.4).
+ .
+ 2.4. Subsequent Licenses
+ .
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this
+ License (see Section 10.2) or under the terms of a Secondary License (if
+ permitted under the terms of Section 3.3).
+ .
+ 2.5. Representation
+ .
+ Each Contributor represents that the Contributor believes its
+ Contributions are its original creation(s) or it has sufficient rights
+ to grant the rights to its Contributions conveyed by this License.
+ .
+ 2.6. Fair Use
+ .
+ This License is not intended to limit any rights You have under
+ applicable copyright doctrines of fair use, fair dealing, or other
+ equivalents.
+ .
+ 2.7. Conditions
+ .
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+ in Section 2.1.
+ .
+ 3. Responsibilities
+ -------------------
+ .
+ 3.1. Distribution of Source Form
+ .
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under
+ the terms of this License. You must inform recipients that the Source
+ Code Form of the Covered Software is governed by the terms of this
+ License, and how they can obtain a copy of this License. You may not
+ attempt to alter or restrict the recipients' rights in the Source Code
+ Form.
+ .
+ 3.2. Distribution of Executable Form
+ .
+ If You distribute Covered Software in Executable Form then:
+ .
+ (a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+ .
+ (b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+ .
+ 3.3. Distribution of a Larger Work
+ .
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for
+ the Covered Software. If the Larger Work is a combination of Covered
+ Software with a work governed by one or more Secondary Licenses, and the
+ Covered Software is not Incompatible With Secondary Licenses, this
+ License permits You to additionally distribute such Covered Software
+ under the terms of such Secondary License(s), so that the recipient of
+ the Larger Work may, at their option, further distribute the Covered
+ Software under the terms of either this License or such Secondary
+ License(s).
+ .
+ 3.4. Notices
+ .
+ You may not remove or alter the substance of any license notices
+ (including copyright notices, patent notices, disclaimers of warranty,
+ or limitations of liability) contained within the Source Code Form of
+ the Covered Software, except that You may alter any license notices to
+ the extent required to remedy known factual inaccuracies.
+ .
+ 3.5. Application of Additional Terms
+ .
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on
+ behalf of any Contributor. You must make it absolutely clear that any
+ such warranty, support, indemnity, or liability obligation is offered by
+ You alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+ .
+ 4. Inability to Comply Due to Statute or Regulation
+ ---------------------------------------------------
+ .
+ If it is impossible for You to comply with any of the terms of this
+ License with respect to some or all of the Covered Software due to
+ statute, judicial order, or regulation then You must: (a) comply with
+ the terms of this License to the maximum extent possible; and (b)
+ describe the limitations and the code they affect. Such description must
+ be placed in a text file included with all distributions of the Covered
+ Software under this License. Except to the extent prohibited by statute
+ or regulation, such description must be sufficiently detailed for a
+ recipient of ordinary skill to be able to understand it.
+ .
+ 5. Termination
+ --------------
+ .
+ 5.1. The rights granted under this License will terminate automatically
+ if You fail to comply with any of its terms. However, if You become
+ compliant, then the rights granted under this License from a particular
+ Contributor are reinstated (a) provisionally, unless and until such
+ Contributor explicitly and finally terminates Your grants, and (b) on an
+ ongoing basis, if such Contributor fails to notify You of the
+ non-compliance by some reasonable means prior to 60 days after You have
+ come back into compliance. Moreover, Your grants from a particular
+ Contributor are reinstated on an ongoing basis if such Contributor
+ notifies You of the non-compliance by some reasonable means, this is the
+ first time You have received notice of non-compliance with this License
+ from such Contributor, and You become compliant prior to 30 days after
+ Your receipt of the notice.
+ .
+ 5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions,
+ counter-claims, and cross-claims) alleging that a Contributor Version
+ directly or indirectly infringes any patent, then the rights granted to
+ You by any and all Contributors for the Covered Software under Section
+ 2.1 of this License shall terminate.
+ .
+ 5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+ end user license agreements (excluding distributors and resellers) which
+ have been validly granted by You or Your distributors under this License
+ prior to termination shall survive termination.
+ .
+ ************************************************************************
+ * *
+ * 6. Disclaimer of Warranty *
+ * ------------------------- *
+ * *
+ * Covered Software is provided under this License on an "as is" *
+ * basis, without warranty of any kind, either expressed, implied, or *
+ * statutory, including, without limitation, warranties that the *
+ * Covered Software is free of defects, merchantable, fit for a *
+ * particular purpose or non-infringing. The entire risk as to the *
+ * quality and performance of the Covered Software is with You. *
+ * Should any Covered Software prove defective in any respect, You *
+ * (not any Contributor) assume the cost of any necessary servicing, *
+ * repair, or correction. This disclaimer of warranty constitutes an *
+ * essential part of this License. No use of any Covered Software is *
+ * authorized under this License except under this disclaimer. *
+ * *
+ ************************************************************************
+ .
+ ************************************************************************
+ * *
+ * 7. Limitation of Liability *
+ * -------------------------- *
+ * *
+ * Under no circumstances and under no legal theory, whether tort *
+ * (including negligence), contract, or otherwise, shall any *
+ * Contributor, or anyone who distributes Covered Software as *
+ * permitted above, be liable to You for any direct, indirect, *
+ * special, incidental, or consequential damages of any character *
+ * including, without limitation, damages for lost profits, loss of *
+ * goodwill, work stoppage, computer failure or malfunction, or any *
+ * and all other commercial damages or losses, even if such party *
+ * shall have been informed of the possibility of such damages. This *
+ * limitation of liability shall not apply to liability for death or *
+ * personal injury resulting from such party's negligence to the *
+ * extent applicable law prohibits such limitation. Some *
+ * jurisdictions do not allow the exclusion or limitation of *
+ * incidental or consequential damages, so this exclusion and *
+ * limitation may not apply to You. *
+ * *
+ ************************************************************************
+ .
+ 8. Litigation
+ -------------
+ .
+ Any litigation relating to this License may be brought only in the
+ courts of a jurisdiction where the defendant maintains its principal
+ place of business and such litigation shall be governed by laws of that
+ jurisdiction, without reference to its conflict-of-law provisions.
+ Nothing in this Section shall prevent a party's ability to bring
+ cross-claims or counter-claims.
+ .
+ 9. Miscellaneous
+ ----------------
+ .
+ This License represents the complete agreement concerning the subject
+ matter hereof. If any provision of this License is held to be
+ unenforceable, such provision shall be reformed only to the extent
+ necessary to make it enforceable. Any law or regulation which provides
+ that the language of a contract shall be construed against the drafter
+ shall not be used to construe this License against a Contributor.
+ .
+ 10. Versions of the License
+ ---------------------------
+ .
+ 10.1. New Versions
+ .
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+ .
+ 10.2. Effect of New Versions
+ .
+ You may distribute the Covered Software under the terms of the version
+ of the License under which You originally received the Covered Software,
+ or under the terms of any subsequent version published by the license
+ steward.
+ .
+ 10.3. Modified Versions
+ .
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a
+ modified version of this License if you rename the license and remove
+ any references to the name of the license steward (except to note that
+ such modified license differs from this License).
+ .
+ 10.4. Distributing Source Code Form that is Incompatible With Secondary
+ Licenses
+ .
+ If You choose to distribute Source Code Form that is Incompatible With
+ Secondary Licenses under the terms of this version of the License, the
+ notice described in Exhibit B of this License must be attached.
+ .
+ Exhibit A - Source Code Form License Notice
+ -------------------------------------------
+ .
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ .
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to look
+ for such a notice.
+ .
+ You may add additional accurate notices of copyright ownership.
+ .
+ Exhibit B - "Incompatible With Secondary Licenses" Notice
+ ---------------------------------------------------------
+ .
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
+
+License: BSD-3
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ * Neither the name of the <organization> nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License: Expat
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+License: GPL-2
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: GPL-2+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: GPL-3 or Autoconf
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ Additional permission under section 7 of the GNU General Public
+ License, version 3 ("GPLv3"):
+ .
+ If you convey this file as part of a work that contains a
+ configuration script generated by Autoconf, you may do so under
+ terms of your choice.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 3 can be found in the file
+ `/usr/share/common-licenses/GPL-3'.
+
+License: GPL-2 with OpenSSL Exception
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of version 2 of the GNU General Public License as
+ published by the Free Software Foundation.
+ .
+ In addition, for the avoidance of any doubt, permission is granted to
+ link this program with OpenSSL and to (re)distribute the binaries
+ produced as the result of such linking.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+
+License: LGPL-2.1+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ .
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+ .
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library. If not, see
+ <http://www.gnu.org/licenses/>.
+ .
+ On Debian systems, the full text of the GNU Lesser General Public
+ License version 2.1 can be found in the file
+ `/usr/share/common-licenses/LGPL-2.1'.
+
+License: free-fsf
+ This file is free software; the Free Software Foundation gives
+ unlimited permission to copy and/or distribute it, with or without
+ modifications, as long as this notice is preserved.
+
+License: free-generic
+ Copying and distribution of this file, with or without modification, are
+ permitted in any medium without royalty provided the copyright notice
+ and this notice are preserved. This file is offered as-is, without any
+ warranty.
--- /dev/null
+[DEFAULT]
+pristine-tar = True
--- /dev/null
+var/lib/powerdns/zones.slave.d
--- /dev/null
+debian/config/bind.conf etc/powerdns/pdns.d/
+debian/config/named.conf etc/powerdns/
+usr/lib/*/pdns/libbindbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+case "$1" in
+ configure)
+ chown pdns:pdns /var/lib/powerdns/zones.slave.d || :
+
+ # Create suggested supermaster.conf, which is included from /etc/powerdns/named.conf by default.
+ BINDCONF=/etc/powerdns/pdns.d/bind.conf
+ SUPERMASTERCONF=/var/lib/powerdns/supermaster.conf
+ if test -e $BINDCONF && grep "^bind-supermaster-config=$SUPERMASTERCONF" $BINDCONF >/dev/null 2>&1; then
+ touch $SUPERMASTERCONF
+ chown pdns:pdns $SUPERMASTERCONF
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+case "$1" in
+ purge)
+ # remove data file, if empty (created by postinst).
+ if [ -e /var/lib/powerdns/supermaster.conf ] && echo "d41d8cd98f00b204e9800998ecf8427e /var/lib/powerdns/supermaster.conf" | md5sum --check --status; then
+ rm -f /var/lib/powerdns/supermaster.conf
+ fi
+ ;;
+esac
+
+#DEBHELPER#
--- /dev/null
+debian/config/geoip.conf
--- /dev/null
+usr/lib/*/pdns/libgeoipbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+debian/config/ldap.conf
--- /dev/null
+debian/config/dnsdomain2.schema etc/ldap/schema/
+usr/bin/zone2ldap usr/bin/
+usr/lib/*/pdns/libldapbackend.so*
--- /dev/null
+debian/tmp/usr/share/man/man1/zone2ldap.1
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+modules/luabackend/README
--- /dev/null
+debian/config/lua.conf
--- /dev/null
+usr/lib/*/pdns/libluabackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+modules/mydnsbackend/schema.mydns.sql
--- /dev/null
+usr/lib/*/pdns/libmydnsbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+Instructions on setting up MySQL as a backend for PowerDNS
+----------------------------------------------------------
+
+PowerDNS uses dbconfig-common. The database backends offer you to
+automatically create and maintain the databases for you. If you choose
+yes, you're fine, no more action needed.
+
+Should you decide to create your databases yourself, for example, if
+you decide to use a non-standard schema, please find the database
+schema recommended by Upstream for MySQL in
+/usr/share/dbconfig-common/data/pdns-backend-mysql/install/mysql
+
+Just create a database (for example, named pdns) and then feed these
+SQL commands to MySQL to get some defaults to start with:
+
+ mysql -u root -p <database> < /usr/share/dbconfig-common/data/pdns-backend-mysql/install/mysql
+
+Then add your data to the database.
--- /dev/null
+#!/bin/sh
+#
+# Install / upgrade database.
+
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then
+ . /usr/share/dbconfig-common/dpkg/config.mysql
+
+ # Default values
+ dbc_dbuser="pdns"
+ dbc_dbname="pdns"
+ dbc_first_version="3.0-1"
+
+ dbc_go pdns-backend-mysql $@
+fi
+
+exit 0
+
--- /dev/null
+modules/gmysqlbackend/dnssec-3.x_to_3.4.0_schema.mysql.sql
+modules/gmysqlbackend/nodnssec-3.x_to_3.4.0_schema.mysql.sql
+modules/gmysqlbackend/schema.mysql.sql
--- /dev/null
+debian/config/pdns.local.gmysql.conf usr/share/pdns-backend-mysql
+debian/sql/mysql/*.* usr/share/dbconfig-common/data/pdns-backend-mysql/upgrade/mysql/
+debian/sql/mysql/mysql usr/share/dbconfig-common/data/pdns-backend-mysql/install/
+usr/lib/*/pdns/libgmysqlbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-mysql"
+
+# rename ucf-conffile. This was mostly stolen from cacti.postinst after
+# a short discussion on debian-mentors, see
+# http://lists.debian.org/debian-mentors/2013/07/msg00027.html
+# and the following thread. Thanks to Paul Gevers
+renameconffile() {
+ oldname="$1"
+ newname="$2"
+ sourcefile="$3"
+ if [ -f $oldname ] ; then
+ if [ ! -e $newname ] ; then
+ mv $oldname $newname
+# else: Don't do anything, leave old file in place
+ fi
+ ucf --purge $oldname
+ ucfr --purge $PKGNAME $oldname
+ elif [ ! -e $newname ] ; then
+# The file was removed, we should respect that. Unfortunately, we don't
+# have a proper way to tell ucf that for the new location, so we need
+# to hack it a bit.
+# We only need to do this if the target does not already exist. If the
+# target already exists, we can later call ucf straight as there
+# is already a version of the file available, althought never
+# provided by this package, but we can just propose the new file anyway.
+ ucf --debconf-ok $sourcefile $newname
+ ucfr $PKGNAME $newname
+ rm -f $newname
+ fi
+}
+
+if [ "$1" = "configure" ]; then
+ if ucfq -w /etc/powerdns/pdns.d/pdns.local.gmysql.conf | grep 'pdns-backend-gmysql' >/dev/null; then
+ # before 4.0.0~beta1, PKGNAME was incorrectly set to pdns-backend-gmysql. Fix that.
+ ucfr --purge 'pdns-backend-gmysql' '/etc/powerdns/pdns.d/pdns.local.gmysql.conf'
+ fi
+ if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.3; then
+ renameconffile /etc/powerdns/pdns.d/pdns.local.gmysql /etc/powerdns/pdns.d/pdns.local.gmysql.conf /dev/null
+ fi
+fi
+
+
+. /usr/share/dbconfig-common/dpkg/postinst.mysql
+dbc_first_version="3.0-1"
+dbc_generate_include_args="-o template_infile=/usr/share/pdns-backend-mysql/pdns.local.gmysql.conf"
+dbc_generate_include=template:/etc/powerdns/pdns.d/pdns.local.gmysql.conf
+dbc_generate_include_owner=pdns
+dbc_generate_include_perms=0640
+dbc_go $PKGNAME $@
+
+# Activate trigger
+dpkg-trigger pdns-server
+
+ucfr $PKGNAME /etc/powerdns/pdns.d/pdns.local.gmysql.conf
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-mysql"
+
+# Execute dbconfig-common
+if [ -f /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+fi
+if [ -f /usr/share/dbconfig-common/dpkg/postrm.mysql ]; then
+ . /usr/share/dbconfig-common/dpkg/postrm.mysql
+ dbc_go pdns-backend-mysql $@
+fi
+
+if [ "$1" = "purge" ]; then
+ # Remove files registered with ucf.
+ if command -v ucfq >/dev/null; then
+ for file in $(ucfq --with-colons "$PKGNAME" | cut --delimiter=: --fields=1); do
+ rm -f ${file}
+ ucf --purge ${file}
+ ucfr --purge $PKGNAME ${file}
+ done
+ else
+ echo >&2 "ucf no longer installed, not cleaning up"
+ fi
+fi
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+. /usr/share/dbconfig-common/dpkg/prerm.mysql
+dbc_go pdns-backend-mysql $@
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+modules/godbcbackend/schema.mssql.sql
--- /dev/null
+debian/config/godbc.conf
--- /dev/null
+usr/lib/*/pdns/libgodbcbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+debian/config/opendbx.conf
--- /dev/null
+usr/lib/*/pdns/libopendbxbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+Instructions on setting up PostgreSQL as a backend for PowerDNS
+---------------------------------------------------------------
+
+PowerDNS uses dbconfig-common. The database backends offer you to
+automatically create and maintain the databases for you. If you choose
+yes, you're fine, no more action needed.
+
+Should you decide to create your databases yourself, for example, if
+you decide to use a non-standard schema, please find the database
+schema recommended by Upstream for PostgreSQL in
+/usr/share/dbconfig-common/data/pdns-backend-pgsql/install/pgsql
+
+Just create a database using 'createdb' (for example named pdns) and
+then feed these SQL commands to PostgreSQL to get some defaults to
+start with:
+
+ psql -h <host> -U <user> <database> -f /usr/share/dbconfig-common/data/pdns-backend-pgsql/install/pgsql
+
+Then add your data to the database.
+
+*** SSL WARNING ***
+Please note that SSL connections to a PostgreSQL database currently do not
+work when PowerDNS is run chrooted because PowerDNS cannot access the
+libssl library from within the chroot.
+*** SSL WARNING ***
+
--- /dev/null
+#!/bin/sh
+#
+# Install / upgrade database.
+
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+if [ -f /usr/share/dbconfig-common/dpkg/config.pgsql ]; then
+ . /usr/share/dbconfig-common/dpkg/config.pgsql
+
+ # Default values
+ dbc_dbuser="pdns"
+ dbc_dbname="pdns"
+ dbc_first_version="3.0-1"
+
+ dbc_go pdns-backend-pgsql $@
+fi
+
+exit 0
+
--- /dev/null
+modules/gpgsqlbackend/dnssec-3.x_to_3.4.0_schema.pgsql.sql
+modules/gpgsqlbackend/nodnssec-3.x_to_3.4.0_schema.pgsql.sql
+modules/gpgsqlbackend/schema.pgsql.sql
--- /dev/null
+debian/config/pdns.local.gpgsql.conf usr/share/pdns-backend-pgsql
+debian/sql/pgsql/*.* usr/share/dbconfig-common/data/pdns-backend-pgsql/upgrade/pgsql/
+debian/sql/pgsql/pgsql usr/share/dbconfig-common/data/pdns-backend-pgsql/install/
+usr/lib/*/pdns/libgpgsqlbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-pgsql"
+
+# rename ucf-conffile. This was mostly stolen from cacti.postinst after
+# a short discussion on debian-mentors, see
+# http://lists.debian.org/debian-mentors/2013/07/msg00027.html
+# and the following thread. Thanks to Paul Gevers
+renameconffile() {
+ oldname="$1"
+ newname="$2"
+ sourcefile="$3"
+ if [ -f $oldname ] ; then
+ if [ ! -e $newname ] ; then
+ mv $oldname $newname
+# else: Don't do anything, leave old file in place
+ fi
+ ucf --purge $oldname
+ ucfr --purge $PKGNAME $oldname
+ elif [ ! -e $newname ] ; then
+# The file was removed, we should respect that. Unfortunately, we don't
+# have a proper way to tell ucf that for the new location, so we need
+# to hack it a bit.
+# We only need to do this if the target does not already exist. If the
+# target already exists, we can later call ucf straight as there
+# is already a version of the file available, althought never
+# provided by this package, but we can just propose the new file anyway.
+ ucf --debconf-ok $sourcefile $newname
+ ucfr $PKGNAME $newname
+ rm -f $newname
+ fi
+}
+
+if [ "$1" = "configure" ]; then
+ if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.3; then
+ renameconffile /etc/powerdns/pdns.d/pdns.local.gpgsql /etc/powerdns/pdns.d/pdns.local.gpgsql.conf /dev/null
+ fi
+fi
+
+. /usr/share/dbconfig-common/dpkg/postinst.pgsql
+dbc_first_version="3.0-1"
+dbc_pgsql_createdb_encoding="UTF8"
+dbc_generate_include_args="-o template_infile=/usr/share/pdns-backend-pgsql/pdns.local.gpgsql.conf"
+dbc_generate_include=template:/etc/powerdns/pdns.d/pdns.local.gpgsql.conf
+dbc_generate_include_owner=pdns
+dbc_generate_include_perms=0640
+dbc_go $PKGNAME $@
+
+# Activate trigger
+dpkg-trigger pdns-server
+
+ucfr $PKGNAME /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-pgsql"
+
+# Execute dbconfig-common
+if [ -f /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+fi
+if [ -f /usr/share/dbconfig-common/dpkg/postrm.pgsql ]; then
+ . /usr/share/dbconfig-common/dpkg/postrm.pgsql
+ dbc_go pdns-backend-pgsql $@
+fi
+
+if [ "$1" = "purge" ]; then
+ # Remove files registered with ucf.
+ UCF="ucf"
+ UCFR="ucfr"
+
+ if command -v ucfq >/dev/null; then
+ for file in $(ucfq --with-colons "$PKGNAME" | cut --delimiter=: --fields=1); do
+ rm -f ${file}
+ ucf --purge ${file}
+ ucfr --purge $PKGNAME ${file}
+ done
+ else
+ echo >&2 "ucf no longer installed, not cleaning up"
+ fi
+fi
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+. /usr/share/dbconfig-common/dpkg/prerm.pgsql
+dbc_go pdns-backend-pgsql $@
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+debian/config/pipe.conf
--- /dev/null
+usr/lib/*/pdns/libpipebackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+usr/lib/*/pdns/libremotebackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+#
+# Install / upgrade database.
+
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+if [ -f /usr/share/dbconfig-common/dpkg/config.sqlite3 ]; then
+ . /usr/share/dbconfig-common/dpkg/config.sqlite3
+
+ # Default values
+ dbc_basepath=/var/lib/powerdns
+ dbc_dbname="pdns.sqlite3"
+ dbc_first_version="3.0-1"
+
+ dbc_go pdns-backend-sqlite3 $@
+fi
+
+exit 0
+
--- /dev/null
+var/lib/powerdns
--- /dev/null
+modules/gsqlite3backend/dnssec-3.x_to_3.4.0_schema.sqlite3.sql
+modules/gsqlite3backend/nodnssec-3.x_to_3.4.0_schema.sqlite3.sql
+modules/gsqlite3backend/schema.sqlite3.sql
--- /dev/null
+debian/config/pdns.local.gsqlite3.conf usr/share/pdns-backend-sqlite3
+debian/sql/sqlite3/*.* usr/share/dbconfig-common/data/pdns-backend-sqlite3/upgrade/sqlite3/
+debian/sql/sqlite3/sqlite3 usr/share/dbconfig-common/data/pdns-backend-sqlite3/install/
+usr/lib/*/pdns/libgsqlite3backend.so*
--- /dev/null
+#! /bin/sh
+#
+# postinst script for pdns-backend-sqlite3
+
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-sqlite3"
+
+# rename ucf-conffile. This was mostly stolen from cacti.postinst after
+# a short discussion on debian-mentors, see
+# http://lists.debian.org/debian-mentors/2013/07/msg00027.html
+# and the following thread. Thanks to Paul Gevers
+renameconffile() {
+ oldname="$1"
+ newname="$2"
+ sourcefile="$3"
+ if [ -f $oldname ] ; then
+ if [ ! -e $newname ] ; then
+ mv $oldname $newname
+# else: Don't do anything, leave old file in place
+ fi
+ ucf --purge $oldname
+ ucfr --purge $PKGNAME $oldname
+ elif [ ! -e $newname ] ; then
+# The file was removed, we should respect that. Unfortunately, we don't
+# have a proper way to tell ucf that for the new location, so we need
+# to hack it a bit.
+# We only need to do this if the target does not already exist. If the
+# target already exists, we can later call ucf straight as there
+# is already a version of the file available, althought never
+# provided by this package, but we can just propose the new file anyway.
+ ucf --debconf-ok $sourcefile $newname
+ ucfr $PKGNAME $newname
+ rm -f $newname
+ fi
+}
+
+if [ "$1" = "configure" ]; then
+ if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.3; then
+ renameconffile /etc/powerdns/pdns.d/pdns.local.gsqlite3 /etc/powerdns/pdns.d/pdns.local.gsqlite3.conf /dev/null
+ fi
+fi
+
+. /usr/share/dbconfig-common/dpkg/postinst.sqlite3
+dbc_first_version="3.0-1"
+dbc_generate_include_args="-o template_infile=/usr/share/pdns-backend-sqlite3/pdns.local.gsqlite3.conf"
+dbc_generate_include=template:/etc/powerdns/pdns.d/pdns.local.gsqlite3.conf
+dbc_generate_include_owner=pdns
+dbc_generate_include_perms=0640
+dbc_dbfile_owner=pdns:pdns
+dbc_dbfile_perms=0640
+dbc_go pdns-backend-sqlite3 $@
+
+ucfr $PKGNAME /etc/powerdns/pdns.d/pdns.local.gsqlite3.conf
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+PKGNAME="pdns-backend-sqlite3"
+
+# Execute dbconfig-common
+if [ -f /usr/share/debconf/confmodule ]; then
+ . /usr/share/debconf/confmodule
+fi
+if [ -f /usr/share/dbconfig-common/dpkg/postrm.sqlite3 ]; then
+ . /usr/share/dbconfig-common/dpkg/postrm.sqlite3
+ dbc_go pdns-backend-sqlite3 $@
+fi
+
+if [ "$1" = "purge" ]; then
+ # Remove files registered with ucf.
+ if command -v ucfq >/dev/null; then
+ for file in $(ucfq --with-colons "$PKGNAME" | cut --delimiter=: --fields=1); do
+ rm -f ${file}
+ ucf --purge ${file}
+ ucfr --purge $PKGNAME ${file}
+ done
+ else
+ echo >&2 "ucf no longer installed, not cleaning up"
+ fi
+fi
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+# Execute dbconfig-common
+. /usr/share/debconf/confmodule
+. /usr/share/dbconfig-common/dpkg/prerm.sqlite3
+dbc_go pdns-backend-sqlite3 $@
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+debian/config/tinydns.conf
--- /dev/null
+usr/lib/*/pdns/libtinydnsbackend.so*
--- /dev/null
+#!/bin/sh
+set -e
+
+dpkg-trigger pdns-server
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+Notes about Debian's PowerDNS package
+-------------------------------------
+
+ + Introduction
+
+PowerDNS is a powerful DNS server, it has the ability to serve data
+from different backends, including MySQL, PostgreSQL, LDAP etc.
+
+ + Configure
+
+The configuration for PowerDNS is separated in different files. In
+/etc/powerdns/pdns.conf are the base server settings, the configuration for
+specific backends could go into any other file (ending in .conf) in
+/etc/powerdns/pdns.d/. launch= settings can be chained by using the launch+=
+syntax.
+
+ + Chroot
+
+PowerDNS can run in a chrooted environment, but this has some disadvantages.
+It is not easy to connect via a socket to another service like MySQL or
+PostgreSQL. When using the sqlite backend, the database needs to live inside
+the chroot. With systemd, the service startup notification currently does
+not work for similar reasons. If you don't have these restrictions you can
+enable the chroot option.
+
--- /dev/null
+etc/powerdns/pdns.d
--- /dev/null
+lib/systemd/system/*
+usr/bin/pdns_control
+usr/bin/pdnsutil
+usr/bin/zone2json
+usr/bin/zone2sql
+usr/lib/*/pdns/librandombackend.so*
+usr/sbin/pdns_server
--- /dev/null
+# Often this file will contain passwords.
+pdns-server: non-standard-file-perm etc/powerdns/pdns.conf 0600 != 0644
+# We load lsb-functions conditionally.
+pdns-server: init.d-script-needs-depends-on-lsb-base
--- /dev/null
+debian/tmp/usr/share/man/man1/pdns_control.1
+debian/tmp/usr/share/man/man1/pdns_server.1
+debian/tmp/usr/share/man/man1/pdnsutil.1
+debian/tmp/usr/share/man/man1/zone2json.1
+debian/tmp/usr/share/man/man1/zone2sql.1
--- /dev/null
+# Variables for the PowerDNS sysv init script.
+# Note: ignored under systemd.
+
+# Arguments to the started daemon
+DAEMON_ARGS=""
--- /dev/null
+#!/bin/sh
+### BEGIN INIT INFO
+# Provides: pdns
+# Required-Start: $network $remote_fs $syslog
+# Required-Stop: $network $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Should-Start: slapd
+# Should-Stop: slapd
+# Short-Description: PowerDNS Authoritative Name Server
+# Description: PDNS is a versatile high performance authoritative nameser
+### END INIT INFO
+
+PATH=/bin:/sbin:/usr/bin:/usr/sbin
+BINARYPATH=/usr/bin
+SBINARYPATH=/usr/sbin
+
+ODESC="PowerDNS Authoritative Name Server"
+DESC="$ODESC"
+NAME=pdns
+DAEMON=/usr/sbin/pdns_server
+DAEMON_ARGS=""
+CONTROL=/usr/bin/pdns_control
+PIDFILE=/var/run/$NAME.pid
+SCRIPTNAME=/etc/init.d/$NAME
+
+[ -x "$DAEMON" ] || exit 0
+
+[ -r /etc/default/pdns ] && . /etc/default/pdns
+
+# Handle instance scripts
+suffix=$(basename $0 | cut -d- -f2- -s)
+
+if [ -n "$suffix" ]; then
+ SUFFIX="--config-name=$suffix"
+ DAEMON_ARGS="$DAEMON_ARGS $SUFFIX"
+ NAME="$NAME-$suffix"
+ DESC="$DESC (config name $suffix)"
+ PIDFILE="/var/run/$NAME-$suffix.pid"
+fi
+
+# Load lsb stuff for systemd redirection (if available).
+if [ -e /lib/lsb/init-functions ]; then
+ . /lib/lsb/init-functions
+fi
+
+# function to invoke properly parametrized pdns_control
+doPC()
+{
+ $CONTROL $SUFFIX $1 $2 2> /dev/null
+ return $?
+}
+
+isrunning()
+{
+ doPC ping > /dev/null
+ return $?
+}
+
+#
+# Function that starts the daemon/service
+#
+do_start()
+{
+ # Return
+ # 0 if daemon has been started
+ # 1 if daemon was already running
+ # 2 if daemon could not be started
+ if isrunning; then
+ return 1
+ fi
+ start-stop-daemon --start --quiet \
+ --pidfile $PIDFILE --exec $DAEMON -- \
+ $DAEMON_ARGS --daemon --guardian=yes \
+ || return 2
+}
+
+#
+# Function that stops the daemon/service
+#
+do_stop()
+{
+ # Return
+ # 0 if daemon has been stopped
+ # 1 if daemon was already stopped
+ # 2 if daemon could not be stopped
+ # other if a failure occurred
+ doPC quit >/dev/null
+ RETVAL="2"
+ for sec in $(seq 1 5); do
+ if ! isrunning; then
+ RETVAL="0"
+ break
+ fi
+ sleep 1
+ done
+ [ "$RETVAL" = 2 ] && return 2
+ rm -f $PIDFILE
+}
+
+case "$1" in
+ start)
+ echo -n "Starting $DESC: $NAME ..."
+ do_start
+ case "$?" in
+ 0|1)
+ echo done
+ exit 0
+ ;;
+ 2)
+ echo failed
+ exit 1
+ ;;
+ esac
+ ;;
+ stop)
+ echo -n "Stopping $DESC: $NAME ..."
+ do_stop
+ case "$?" in
+ 0|1)
+ echo done
+ exit 0
+ ;;
+ 2)
+ echo failed
+ exit 1
+ ;;
+ esac
+ ;;
+ status)
+ if isrunning; then
+ echo "$NAME is running: $(doPC status)"
+ exit 0
+ else
+ echo "$NAME is not running"
+ exit 3
+ fi
+ ;;
+ force-stop)
+ echo -n "Killing $ODESC (all instances): $NAME ..."
+ kill -9 $(pidof pdns_server)
+ case "$?" in
+ 0)
+ echo done
+ exit 0
+ ;;
+ 1)
+ echo failed
+ exit 1
+ ;;
+ esac
+ ;;
+ restart)
+ echo -n "Restarting $DESC: $NAME ..."
+ do_stop
+ case "$?" in
+ 0|1)
+ do_start
+ case "$?" in
+ 0)
+ echo done
+ exit 0
+ ;;
+ 1)
+ echo failed # Old process is still running
+ exit 1
+ ;;
+ *)
+ echo failed # Failed to start
+ exit 1
+ ;;
+ esac
+ ;;
+ *)
+ # Failed to stop
+ echo failed
+ exit 1
+ ;;
+ esac
+ ;;
+ reload|force-reload)
+ echo -n "Reloading $DESC: $NAME ..."
+ if isrunning; then
+ doPC cycle >/dev/null
+ case "$?" in
+ 0)
+ echo done
+ exit 0
+ ;;
+ 1)
+ echo failed
+ exit 1
+ ;;
+ esac
+ else
+ echo done
+ exit 7
+ fi
+ ;;
+ monitor)
+ if isrunning; then
+ echo "already running"
+ exit 1
+ else
+ $DAEMON $DAEMON_ARGS --daemon=no --guardian=no --control-console --loglevel=9
+ exit 0
+ fi
+ ;;
+ dump)
+ if isrunning; then
+ doPC list
+ exit 0
+ else
+ echo "not running"
+ exit 7
+ fi
+ ;;
+ show)
+ if isrunning; then
+ if [ $# -lt 2 ]; then
+ echo "Insufficient parameters"
+ exit 2
+ fi
+ echo -n "$2="
+ doPC show $2
+ exit 0
+ else
+ echo "not running"
+ exit 7
+ fi
+ ;;
+ mrtg)
+ if isrunning; then
+ if [ $# -lt 2 ]; then
+ echo "Insufficient parameters"
+ exit 2
+ fi
+ doPC show $2
+ if [ "$3x" != "x" ]; then
+ doPC show $3
+ else
+ echo 0
+ fi
+ doPC uptime
+ echo "$DESC"
+ exit 0
+ else
+ echo "not running"
+ exit 7
+ fi
+ ;;
+ cricket)
+ if isrunning; then
+ if [ $# -lt 2 ]; then
+ echo "Insufficient parameters"
+ exit 1
+ fi
+ doPC show $2
+ exit 0
+ else
+ echo "not running"
+ exit 7
+ fi
+ ;;
+ *)
+ echo "Usage: $SCRIPTNAME {start|stop|status|force-stop|restart|reload|monitor|dump|show|mrtg|cricket}"
+ ;;
+esac
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+if [ -n "$PDNSDEBUG" ]; then
+ echo "now debugging $0 $@"
+ set -x
+fi
+
+# Startup errors should never cause dpkg to fail.
+initscript_error() {
+ return 0
+}
+
+case "$1" in
+ configure)
+ if [ -z "`getent group pdns`" ]; then
+ addgroup --quiet --system pdns
+ fi
+ if [ -z "`getent passwd pdns`" ]; then
+ echo -n "Creating user and group pdns..."
+ adduser --quiet --system --home /var/spool/powerdns --shell /bin/false --ingroup pdns --disabled-password --disabled-login --gecos "PowerDNS" pdns
+ echo "done"
+ fi
+ ;;
+
+ triggered)
+ invoke-rc.d pdns restart || :
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- /dev/null
+#!/bin/sh
+set -e
+
+ucf_delete_unchanged() {
+ # pdns-server no longer Depends: ucf, so only do this if ucf is installed.
+ if which ucf >/dev/null; then
+ if ucfq --with-colons "$1" | grep -q ':pdns-server:Yes:No'; then
+ # file exists, not changed; delete it
+ echo "Removing unchanged configuration file $1"
+ rm -f "$1"
+ fi
+ ucf --purge "$1"
+ ucfr --purge pdns-server "$1"
+ else
+ echo "E: ucf not installed, can not remove unchanged configuration file $1."
+ fi
+}
+
+backup_conffile() {
+ if [ -e "$1" ]; then
+ echo "Moving configuration file $1 to $1.dpkg-bak"
+ mv -f "$1" "$1".dpkg-bak
+ fi
+}
+
+case "$1" in
+ install|upgrade)
+ # for upgrades from before 4.0.0-2, drop empty file created by previous postinst.
+ if [ -e /etc/powerdns/bindbackend.conf ] && echo "d41d8cd98f00b204e9800998ecf8427e /etc/powerdns/bindbackend.conf" | md5sum --check --status; then
+ rm -f /etc/powerdns/bindbackend.conf
+ fi
+
+ # 4.0.0-2 moved pdns-server' configuration files back under dpkg conffile control (from ucf),
+ # and bindbackend was split into its own package.
+ # the upgrade code in 4.0.0-2 did not delete unchanged files.
+ if [ ! -z "$2" ] && dpkg --compare-versions "$2" le "4.0.0-3~"; then
+ # we want to preserve the following if they were changed.
+ ucf_delete_unchanged "/etc/default/pdns"
+ ucf_delete_unchanged "/etc/powerdns/pdns.conf"
+ ucf_delete_unchanged "/etc/powerdns/pdns.d/pdns.local.conf"
+ # pdns.simplebind.conf is no longer useful with just pdns-server,
+ # pdns-backend-bind will install bind.conf instead.
+ ucf_delete_unchanged "/etc/powerdns/pdns.d/pdns.simplebind.conf"
+ backup_conffile "/etc/powerdns/pdns.d/pdns.simplebind.conf"
+ fi
+ ;;
+esac
+
+#DEBHELPER#
--- /dev/null
+usr/bin/calidns
+usr/bin/dnsbulktest
+usr/bin/dnsgram
+usr/bin/dnsreplay
+usr/bin/dnsscan
+usr/bin/dnsscope
+usr/bin/dnstcpbench
+usr/bin/dnswasher
+usr/bin/dumresp
+usr/bin/ixplore
+usr/bin/nproxy
+usr/bin/nsec3dig
+usr/bin/pdns_notify
+usr/bin/saxfr
+usr/bin/sdig
--- /dev/null
+debian/tmp/usr/share/man/man1/calidns.1
+debian/tmp/usr/share/man/man1/dnsbulktest.1
+debian/tmp/usr/share/man/man1/dnsgram.1
+debian/tmp/usr/share/man/man1/dnsreplay.1
+debian/tmp/usr/share/man/man1/dnsscan.1
+debian/tmp/usr/share/man/man1/dnsscope.1
+debian/tmp/usr/share/man/man1/dnstcpbench.1
+debian/tmp/usr/share/man/man1/dnswasher.1
+debian/tmp/usr/share/man/man1/dumresp.1
+debian/tmp/usr/share/man/man1/ixplore.1
+debian/tmp/usr/share/man/man1/nproxy.1
+debian/tmp/usr/share/man/man1/nsec3dig.1
+debian/tmp/usr/share/man/man1/pdns_notify.1
+debian/tmp/usr/share/man/man1/saxfr.1
+debian/tmp/usr/share/man/man1/sdig.1
--- /dev/null
+#!/usr/bin/make -f
+DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
+DEB_HOST_ARCH_BITS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+# Backends
+backends := bind ldap pipe gmysql godbc gpgsql gsqlite3 geoip lua mydns remote random opendbx tinydns
+
+# Disable systemd integration on non-linux archs
+ifeq ($(DEB_HOST_ARCH_OS),linux)
+CONFIGURE_ARGS += --enable-systemd --with-systemd=/lib/systemd/system
+else
+CONFIGURE_ARGS += --disable-systemd
+endif
+
+
+# Use new build system
+%:
+ dh $@ \
+ --with autoreconf \
+ --with systemd \
+ --parallel
+
+override_dh_auto_configure:
+ test -f pdns/dnslabeltext.cc && mv pdns/dnslabeltext.cc debian/dnslabeltext.cc.moved || true
+ dh_auto_configure -- \
+ --sysconfdir=/etc/powerdns \
+ --with-dynmodules="$(backends)" \
+ --with-modules="" \
+ --enable-libsodium \
+ --enable-tools \
+ --without-protobuf \
+ --enable-unit-tests \
+ --enable-reproducible \
+ $(CONFIGURE_ARGS)
+
+override_dh_strip:
+ dh_strip --ddeb-migration='pdns-server-dbg (<< 4.0.0-0)'
+
+override_dh_systemd_enable:
+ dh_systemd_enable --name=pdns
+
+# init script needs to be named pdns, not pdns-server. if no pdns-backend
+# is installed, start will fail, so pass --no-start. backends will trigger
+# a restart.
+override_dh_installinit:
+ dh_installinit --error-handler=initscript_error --no-start --restart-after-upgrade --name=pdns
+
+override_dh_install:
+ dh_install
+ ./pdns/pdns_server --no-config --config | sed \
+ -e 's!# module-dir=.*!!' \
+ -e 's!# include-dir=.*!&\ninclude-dir=/etc/powerdns/pdns.d!' \
+ -e 's!# launch=.*!&\nlaunch=!' \
+ -e 's!# setgid=.*!setgid=pdns!' \
+ -e 's!# setuid=.*!setuid=pdns!' \
+ -e 's!# security-poll-suffix=.*!&\nsecurity-poll-suffix=!' \
+ > debian/pdns-server/etc/powerdns/pdns.conf
+ifeq ($(DEB_HOST_ARCH_BITS),32)
+ echo RestrictAddressFamilies is broken on 32bit, removing it from service file
+ perl -ni -e 'print unless /RestrictAddressFamilies/' debian/pdns-server/lib/systemd/system/*.service
+endif
+
+# Verbose tests (shows used compiler/linker and their flags)
+override_dh_auto_test:
+ echo Skipping make test, as dependencies are missing.
+ make check
+
+override_dh_fixperms:
+ dh_fixperms
+ # these files often contain passwords.
+ chmod 0600 debian/pdns-server/etc/powerdns/pdns.conf
+
+# restore moved files
+override_dh_clean:
+ test -f debian/dnslabeltext.cc.moved && mv debian/dnslabeltext.cc.moved pdns/dnslabeltext.cc || true
+ dh_clean
--- /dev/null
+3.0 (quilt)
--- /dev/null
+create table domainmetadata (
+ id INT auto_increment,
+ domain_id INT NOT NULL,
+ kind VARCHAR(16),
+ content TEXT,
+ primary key(id)
+);
+
+create table cryptokeys (
+ id INT auto_increment,
+ domain_id INT NOT NULL,
+ flags INT NOT NULL,
+ active BOOL,
+ content TEXT,
+ primary key(id)
+);
+
+alter table records add ordername VARCHAR(255);
+alter table records add auth bool;
+create index orderindex on records(ordername);
+
+create table tsigkeys (
+ id INT auto_increment,
+ name VARCHAR(255),
+ algorithm VARCHAR(255),
+ secret VARCHAR(255),
+ primary key(id)
+);
+
+create unique index namealgoindex on tsigkeys(name, algorithm);
+
+alter table records change column type type VARCHAR(10);
--- /dev/null
+-- 3.0 to 3.1
+
+ALTER TABLE records MODIFY content VARCHAR(64000);
+ALTER TABLE tsigkeys MODIFY algorithm VARCHAR(50);
+
+-- 3.1 to 3.2
+ALTER TABLE records MODIFY ordername VARCHAR(255) BINARY;
+DROP INDEX orderindex ON records;
+CREATE INDEX recordorder ON records (domain_id, ordername);
+
+-- 3.2 to 3.3
+ALTER TABLE supermasters MODIFY ip VARCHAR(64);
+DROP INDEX rec_name_index ON records;
+
+-- 3.3 to 3.3.1
+-- None for MySQL
+
--- /dev/null
+-- 3.3.1 dnssec to 3.4
+ALTER TABLE records ADD disabled TINYINT(1) DEFAULT 0 AFTER change_date;
+ALTER TABLE records MODIFY content VARCHAR(64000) DEFAULT NULL;
+ALTER TABLE records MODIFY ordername VARCHAR(255) BINARY DEFAULT NULL;
+ALTER TABLE records MODIFY auth TINYINT(1) DEFAULT 1;
+ALTER TABLE records MODIFY type VARCHAR(10);
+ALTER TABLE supermasters MODIFY ip VARCHAR(64) NOT NULL;
+ALTER TABLE supermasters ADD PRIMARY KEY(ip, nameserver);
+ALTER TABLE supermasters MODIFY account VARCHAR(40) NOT NULL;
+ALTER TABLE domainmetadata MODIFY kind VARCHAR(32);
+ALTER TABLE tsigkeys MODIFY algorithm VARCHAR(50);
+ALTER TABLE domainmetadata ENGINE=InnoDB;
+ALTER TABLE cryptokeys ENGINE=InnoDB;
+ALTER TABLE tsigkeys ENGINE=InnoDB;
+
+CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);
+
+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);
--- /dev/null
+-- MariaDB default index size and default character set causes the
+-- name indexes to fail to create. Therefore we are overriding the
+-- character set to something smaller than the insane utf8mb4 def.
+
+ALTER TABLE domains CONVERT TO CHARACTER SET 'latin1';
+ALTER TABLE domains MODIFY account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL;
+
+ALTER TABLE records CONVERT TO CHARACTER SET 'latin1';
+
+ALTER TABLE supermasters CONVERT TO CHARACTER SET 'latin1';
+ALTER TABLE supermasters MODIFY account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL;
+
+ALTER TABLE comments CONVERT TO CHARACTER SET 'latin1';
+ALTER TABLE comments MODIFY account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL;
+ALTER TABLE comments MODIFY comment TEXT CHARACTER SET 'utf8' NOT NULL;
+
+ALTER TABLE domainmetadata CONVERT TO CHARACTER SET 'latin1';
+
+ALTER TABLE cryptokeys CONVERT TO CHARACTER SET 'latin1';
+
+ALTER TABLE tsigkeys CONVERT TO CHARACTER SET 'latin1';
--- /dev/null
+-- Use TEXT in place of VARCHAR(64000) for compatibility with mysql 5.6 and mariadb.
+-- pdns 4.0.1, 4.0.2 got this wrong.
+ALTER TABLE comments MODIFY comment TEXT CHARACTER SET 'utf8' NOT NULL;
--- /dev/null
+ALTER TABLE records MODIFY id BIGINT AUTO_INCREMENT;
+CREATE INDEX ordername ON records (ordername);
+DROP INDEX recordorder ON records;
+
+DROP INDEX comments_domain_id_idx ON comments;
--- /dev/null
+-- MariaDB default index size and default character set causes the
+-- name indexes to fail to create. Therefore we are overriding the
+-- character set to something smaller than the insane utf8mb4 def.
+
+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) CHARACTER SET 'utf8' DEFAULT NULL,
+ PRIMARY KEY (id)
+) Engine=InnoDB CHARACTER SET 'latin1';
+
+CREATE UNIQUE INDEX name_index ON domains(name);
+
+
+CREATE TABLE records (
+ id BIGINT 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 CHARACTER SET 'latin1';
+
+CREATE INDEX nametype_index ON records(name,type);
+CREATE INDEX domain_id ON records(domain_id);
+CREATE INDEX ordername ON records (ordername);
+
+
+CREATE TABLE supermasters (
+ ip VARCHAR(64) NOT NULL,
+ nameserver VARCHAR(255) NOT NULL,
+ account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL,
+ PRIMARY KEY (ip, nameserver)
+) Engine=InnoDB CHARACTER SET 'latin1';
+
+
+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) CHARACTER SET 'utf8' NOT NULL,
+ comment TEXT CHARACTER SET 'utf8' NOT NULL,
+ PRIMARY KEY (id)
+) Engine=InnoDB CHARACTER SET 'latin1';
+
+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 CHARACTER SET 'latin1';
+
+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 CHARACTER SET 'latin1';
+
+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 CHARACTER SET 'latin1';
+
+CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
--- /dev/null
+alter table records add ordername VARCHAR(255);
+alter table records add auth bool;
+create index orderindex on records(ordername);
+
+create table domainmetadata (
+ id SERIAL PRIMARY KEY,
+ domain_id INT REFERENCES domains(id) ON DELETE CASCADE,
+ kind VARCHAR(16),
+ content TEXT
+);
+
+create table cryptokeys (
+ id SERIAL PRIMARY KEY,
+ domain_id INT REFERENCES domains(id) ON DELETE CASCADE,
+ flags INT NOT NULL,
+ active BOOL,
+ content TEXT
+);
+
+create table tsigkeys (
+ id SERIAL PRIMARY KEY,
+ name VARCHAR(255),
+ algorithm VARCHAR(255),
+ secret VARCHAR(255)
+);
+
+create unique index namealgoindex on tsigkeys(name, algorithm);
+
+alter table records alter column type type VARCHAR(10);
--- /dev/null
+-- Change master VARCHAR(20) -> VARCHAR(255)
+ALTER TABLE domains ALTER COLUMN master TYPE VARCHAR(255);
+
+-- Change content VARCHAR(255) -> VARCHAR(65535)
+ALTER TABLE records ALTER COLUMN content TYPE VARCHAR(65535);
+
+-- Lowercase the name column and add a lowercase constraint check
+UPDATE records SET name=lower(name);
+ALTER TABLE records ADD CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)));
+
+-- Change ip VARCHAR(25) -> VARCHAR(64)
+ALTER TABLE supermasters ALTER COLUMN ip TYPE VARCHAR(64);
+
+-- Recreate index
+DROP INDEX IF EXISTS orderindex;
+CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
+
+-- Create an index on domainmetadata
+CREATE INDEX domainidmetaindex ON domainmetadata(domain_id);
+
+-- Create an index on cryptokeys
+CREATE INDEX domainidindex ON cryptokeys(domain_id);
+
+-- Change algorithm VARCHAR(255) -> VARCHAR(50)
+ALTER TABLE tsigkeys ALTER COLUMN algorithm TYPE VARCHAR(50);
+
--- /dev/null
+-- 3.3 to 3.3.1
+ALTER TABLE domains ADD CONSTRAINT c_lowercase_name CHECK (((name)::text = lower((name)::text)));
+ALTER TABLE tsigkeys ADD CONSTRAINT c_lowercase_name check (((name)::text = lower((name)::text)));
+
--- /dev/null
+-- 3.3.1 to 3.4
+ALTER TABLE records ADD disabled BOOL DEFAULT 'f';
+ALTER TABLE records ALTER COLUMN content TYPE VARCHAR(65535);
+ALTER TABLE records ALTER COLUMN auth SET DEFAULT 't';
+ALTER TABLE records ALTER COLUMN type TYPE VARCHAR(10);
+ALTER TABLE supermasters ALTER COLUMN ip TYPE INET USING ip::INET;
+ALTER TABLE supermasters ALTER COLUMN account SET DEFAULT NOT NULL;
+ALTER TABLE supermasters ADD CONSTRAINT supermasters_pkey PRIMARY KEY (ip, nameserver);
+ALTER TABLE domainmetadata ALTER COLUMN kind TYPE VARCHAR(32);
+ALTER TABLE tsigkeys ALTER COLUMN algorithm TYPE VARCHAR(50);
+
+-- recordorder was already in our 3.3.1 upgrade scripts, so drop it if needed
+DROP INDEX IF EXISTS recordorder;
+
+CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
+DROP INDEX IF EXISTS orderindex;
+
+
+CREATE TABLE comments (
+ id SERIAL PRIMARY KEY,
+ domain_id INT NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ type VARCHAR(10) NOT NULL,
+ modified_at INT NOT NULL,
+ account VARCHAR(40) DEFAULT NULL,
+ comment VARCHAR(65535) NOT NULL,
+ CONSTRAINT domain_exists
+ FOREIGN KEY(domain_id) REFERENCES domains(id)
+ ON DELETE CASCADE,
+ CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
+);
+
+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);
--- /dev/null
+ALTER TABLE records ALTER id TYPE BIGINT;
--- /dev/null
+CREATE TABLE domains (
+ id SERIAL PRIMARY KEY,
+ 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,
+ CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
+);
+
+CREATE UNIQUE INDEX name_index ON domains(name);
+
+
+CREATE TABLE records (
+ id BIGSERIAL PRIMARY KEY,
+ domain_id INT DEFAULT NULL,
+ name VARCHAR(255) DEFAULT NULL,
+ type VARCHAR(10) DEFAULT NULL,
+ content VARCHAR(65535) DEFAULT NULL,
+ ttl INT DEFAULT NULL,
+ prio INT DEFAULT NULL,
+ change_date INT DEFAULT NULL,
+ disabled BOOL DEFAULT 'f',
+ ordername VARCHAR(255),
+ auth BOOL DEFAULT 't',
+ CONSTRAINT domain_exists
+ FOREIGN KEY(domain_id) REFERENCES domains(id)
+ ON DELETE CASCADE,
+ CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
+);
+
+CREATE INDEX rec_name_index ON records(name);
+CREATE INDEX nametype_index ON records(name,type);
+CREATE INDEX domain_id ON records(domain_id);
+CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
+
+
+CREATE TABLE supermasters (
+ ip INET NOT NULL,
+ nameserver VARCHAR(255) NOT NULL,
+ account VARCHAR(40) NOT NULL,
+ PRIMARY KEY(ip, nameserver)
+);
+
+
+CREATE TABLE comments (
+ id SERIAL PRIMARY KEY,
+ domain_id INT NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ type VARCHAR(10) NOT NULL,
+ modified_at INT NOT NULL,
+ account VARCHAR(40) DEFAULT NULL,
+ comment VARCHAR(65535) NOT NULL,
+ CONSTRAINT domain_exists
+ FOREIGN KEY(domain_id) REFERENCES domains(id)
+ ON DELETE CASCADE,
+ CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
+);
+
+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 SERIAL PRIMARY KEY,
+ domain_id INT REFERENCES domains(id) ON DELETE CASCADE,
+ kind VARCHAR(32),
+ content TEXT
+);
+
+CREATE INDEX domainidmetaindex ON domainmetadata(domain_id);
+
+
+CREATE TABLE cryptokeys (
+ id SERIAL PRIMARY KEY,
+ domain_id INT REFERENCES domains(id) ON DELETE CASCADE,
+ flags INT NOT NULL,
+ active BOOL,
+ content TEXT
+);
+
+CREATE INDEX domainidindex ON cryptokeys(domain_id);
+
+
+CREATE TABLE tsigkeys (
+ id SERIAL PRIMARY KEY,
+ name VARCHAR(255),
+ algorithm VARCHAR(50),
+ secret VARCHAR(255),
+ CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
+);
+
+CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
--- /dev/null
+alter table records add ordername VARCHAR(255);
+alter table records add auth bool;
+create index orderindex on records(ordername);
+
+create table domainmetadata (
+ id INTEGER PRIMARY KEY,
+ domain_id INT NOT NULL,
+ kind VARCHAR(16) COLLATE NOCASE,
+ content TEXT
+);
+
+create table cryptokeys (
+ id INTEGER PRIMARY KEY,
+ domain_id INT DEFAULT NULL,
+ flags INT NOT NULL,
+ active BOOL,
+ content TEXT
+);
+
+create table tsigkeys (
+ id INTEGER PRIMARY KEY,
+ name VARCHAR(255) COLLATE NOCASE,
+ algorithm VARCHAR(255) COLLATE NOCASE,
+ secret VARCHAR(255)
+);
+
+create unique index namealgoindex on tsigkeys(name, algorithm);
--- /dev/null
+-- 3.x to 3.4
+
+CREATE TABLE comments (
+ id INTEGER PRIMARY KEY,
+ domain_id INTEGER NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ type VARCHAR(10) NOT NULL,
+ modified_at INT NOT NULL,
+ account VARCHAR(40) DEFAULT NULL,
+ comment VARCHAR(65535) NOT NULL
+);
+
+CREATE INDEX comments_domain_id_index ON comments (domain_id);
+CREATE INDEX comments_nametype_index ON comments (name, type);
+CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
+
+
+BEGIN TRANSACTION;
+ CREATE TEMPORARY TABLE records_backup(
+ id INTEGER PRIMARY KEY,
+ domain_id INTEGER DEFAULT NULL,
+ name VARCHAR(255) DEFAULT NULL,
+ type VARCHAR(10) DEFAULT NULL,
+ content VARCHAR(65535) DEFAULT NULL,
+ ttl INTEGER DEFAULT NULL,
+ prio INTEGER DEFAULT NULL,
+ change_date INTEGER DEFAULT NULL,
+ ordername VARCHAR(255),
+ auth BOOL DEFAULT 1
+ );
+
+ INSERT INTO records_backup SELECT id,domain_id,name,type,content,ttl,prio,change_date,ordername,auth FROM records;
+ DROP TABLE records;
+
+ CREATE TABLE records (
+ id INTEGER PRIMARY KEY,
+ domain_id INTEGER DEFAULT NULL,
+ name VARCHAR(255) DEFAULT NULL,
+ type VARCHAR(10) DEFAULT NULL,
+ content VARCHAR(65535) DEFAULT NULL,
+ ttl INTEGER DEFAULT NULL,
+ prio INTEGER DEFAULT NULL,
+ change_date INTEGER DEFAULT NULL,
+ disabled BOOLEAN DEFAULT 0,
+ ordername VARCHAR(255),
+ auth BOOL DEFAULT 1
+ );
+
+ CREATE INDEX rec_name_index ON records(name);
+ CREATE INDEX nametype_index ON records(name,type);
+ CREATE INDEX domain_id ON records(domain_id);
+ CREATE INDEX orderindex ON records(ordername);
+
+ INSERT INTO records SELECT id,domain_id,name,type,content,ttl,prio,change_date,0,ordername,auth FROM records_backup;
+ DROP TABLE records_backup;
+COMMIT;
+
+
+BEGIN TRANSACTION;
+ CREATE TEMPORARY TABLE supermasters_backup (
+ ip VARCHAR(64) NOT NULL,
+ nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
+ account VARCHAR(40) DEFAULT NULL
+ );
+
+ INSERT INTO supermasters_backup SELECT ip,nameserver,account FROM supermasters;
+ UPDATE supermasters_backup SET account='' WHERE account IS NULL;
+ DROP TABLE supermasters;
+
+ CREATE TABLE supermasters (
+ ip VARCHAR(64) NOT NULL,
+ nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
+ account VARCHAR(40) NOT NULL
+ );
+ CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
+
+ INSERT INTO supermasters SELECT ip,nameserver,account FROM supermasters_backup;
+ DROP TABLE supermasters_backup;
+COMMIT;
+
+
+BEGIN TRANSACTION;
+ CREATE TABLE domainmetadata_backup (
+ id INTEGER PRIMARY KEY,
+ domain_id INT NOT NULL,
+ kind VARCHAR(32) COLLATE NOCASE,
+ content TEXT
+ );
+
+ INSERT INTO domainmetadata_backup SELECT id,domain_id,kind,content FROM domainmetadata;
+ DROP TABLE domainmetadata;
+
+ CREATE TABLE domainmetadata (
+ id INTEGER PRIMARY KEY,
+ domain_id INT NOT NULL,
+ kind VARCHAR(32) COLLATE NOCASE,
+ content TEXT
+ );
+ CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
+
+ INSERT INTO domainmetadata SELECT id,domain_id,kind,content FROM domainmetadata_backup;
+ DROP TABLE domainmetadata_backup;
+COMMIT;
--- /dev/null
+CREATE TABLE domains (
+ id INTEGER PRIMARY KEY,
+ name VARCHAR(255) NOT NULL COLLATE NOCASE,
+ master VARCHAR(128) DEFAULT NULL,
+ last_check INTEGER DEFAULT NULL,
+ type VARCHAR(6) NOT NULL,
+ notified_serial INTEGER DEFAULT NULL,
+ account VARCHAR(40) DEFAULT NULL
+);
+
+CREATE UNIQUE INDEX name_index ON domains(name);
+
+
+CREATE TABLE records (
+ id INTEGER PRIMARY KEY,
+ domain_id INTEGER DEFAULT NULL,
+ name VARCHAR(255) DEFAULT NULL,
+ type VARCHAR(10) DEFAULT NULL,
+ content VARCHAR(65535) DEFAULT NULL,
+ ttl INTEGER DEFAULT NULL,
+ prio INTEGER DEFAULT NULL,
+ change_date INTEGER DEFAULT NULL,
+ disabled BOOLEAN DEFAULT 0,
+ ordername VARCHAR(255),
+ auth BOOL DEFAULT 1
+);
+
+CREATE INDEX rec_name_index ON records(name);
+CREATE INDEX nametype_index ON records(name,type);
+CREATE INDEX domain_id ON records(domain_id);
+CREATE INDEX orderindex ON records(ordername);
+
+
+CREATE TABLE supermasters (
+ ip VARCHAR(64) NOT NULL,
+ nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
+ account VARCHAR(40) NOT NULL
+);
+
+CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
+
+
+CREATE TABLE comments (
+ id INTEGER PRIMARY KEY,
+ domain_id INTEGER NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ type VARCHAR(10) NOT NULL,
+ modified_at INT NOT NULL,
+ account VARCHAR(40) DEFAULT NULL,
+ comment VARCHAR(65535) NOT NULL
+);
+
+CREATE INDEX comments_domain_id_index ON comments (domain_id);
+CREATE INDEX comments_nametype_index ON comments (name, type);
+CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
+
+
+CREATE TABLE domainmetadata (
+ id INTEGER PRIMARY KEY,
+ domain_id INT NOT NULL,
+ kind VARCHAR(32) COLLATE NOCASE,
+ content TEXT
+);
+
+CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
+
+
+CREATE TABLE cryptokeys (
+ id INTEGER PRIMARY KEY,
+ domain_id INT NOT NULL,
+ flags INT NOT NULL,
+ active BOOL,
+ content TEXT
+);
+
+CREATE INDEX domainidindex ON cryptokeys(domain_id);
+
+
+CREATE TABLE tsigkeys (
+ id INTEGER PRIMARY KEY,
+ name VARCHAR(255) COLLATE NOCASE,
+ algorithm VARCHAR(50) COLLATE NOCASE,
+ secret VARCHAR(255)
+);
+
+CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
--- /dev/null
+Tests: smoke-bind
+Depends: pdns-server, pdns-backend-bind, dnsutils
+Restrictions: needs-root
+
+Tests: smoke-mysql
+Depends: default-mysql-server, pdns-server, pdns-backend-mysql, dnsutils
+Restrictions: needs-root, isolation-container
+
+Tests: smoke-pgsql
+Depends: postgresql, pdns-server, pdns-backend-pgsql, dnsutils
+Restrictions: needs-root, isolation-container
+
+Tests: supported-algos
+Depends: pdns-server
+Restrictions: isolation-container
--- /dev/null
+#!/bin/bash
+exec 2>&1
+set -ex
+
+cat <<EOF >/etc/powerdns/named.conf
+zone "example.org" { type master; file "/etc/powerdns/example.org.zone"; };
+EOF
+
+cat <<EOF >/etc/powerdns/example.org.zone
+example.org. 172800 IN SOA ns1.example.org. dns.example.org. 1 10800 3600 604800 3600
+example.org. 172800 IN NS ns1.example.org.
+smoke.example.org. 172800 IN A 127.0.0.123
+EOF
+
+service pdns restart
+
+TMPFILE=$(mktemp)
+cleanup() {
+ rm -f "$TMPFILE"
+ service pdns stop
+}
+trap cleanup EXIT
+
+dig @127.0.0.1 smoke.example.org 2>&1 | tee "$TMPFILE"
+
+if grep -c '127\.0\.0\.123' "$TMPFILE"; then
+ echo success
+else
+ echo smoke could not be resolved
+ exit 1
+fi
+
--- /dev/null
+#!/bin/bash
+exec 2>&1
+set -ex
+
+echo /etc/powerdns/pdns.d/pdns.local.gmysql.conf follows:
+echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cat /etc/powerdns/pdns.d/pdns.local.gmysql.conf
+echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# gmysql-dbname=pdnsbackendmysql
+DBNAME=$(grep gmysql-dbname /etc/powerdns/pdns.d/pdns.local.gmysql.conf | awk -F= '{print $2}')
+
+cat <<EOF >/etc/powerdns/example.org
+example.org. 172800 IN SOA ns1.example.org. dns.example.org. 1 10800 3600 604800 3600
+example.org. 172800 IN NS ns1.example.org.
+smoke.example.org. 172800 IN A 127.0.0.124
+EOF
+
+zone2sql --gmysql --zone-name=example.org --zone=/etc/powerdns/example.org | \
+ mysql -uroot $DBNAME
+
+service pdns restart
+
+TMPFILE=$(mktemp)
+cleanup() {
+ rm -f "$TMPFILE"
+ service pdns stop
+}
+trap cleanup EXIT
+
+dig @127.0.0.1 smoke.example.org 2>&1 | tee "$TMPFILE"
+
+if grep -c '127\.0\.0\.124' "$TMPFILE"; then
+ echo success
+else
+ echo smoke.example.org could not be resolved
+ exit 1
+fi
+
--- /dev/null
+#!/bin/bash
+exec 2>&1
+set -ex
+
+echo /etc/powerdns/pdns.d/pdns.local.gpgsql.conf follows:
+echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+cat /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
+echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+# gpgsql-dbname=pdnsbackendpgsql
+DBNAME=$(grep gpgsql-dbname /etc/powerdns/pdns.d/pdns.local.gpgsql.conf | awk -F= '{print $2}')
+DBHOST=$(grep gpgsql-host /etc/powerdns/pdns.d/pdns.local.gpgsql.conf | awk -F= '{print $2}')
+DBUSER=$(grep gpgsql-user /etc/powerdns/pdns.d/pdns.local.gpgsql.conf | awk -F= '{print $2}')
+DBPASS=$(grep gpgsql-password /etc/powerdns/pdns.d/pdns.local.gpgsql.conf | awk -F= '{print $2}')
+
+cat <<EOF >/etc/powerdns/example.org
+example.org. 172800 IN SOA ns1.example.org. dns.example.org. 1 10800 3600 604800 3600
+example.org. 172800 IN NS ns1.example.org.
+smoke.example.org. 172800 IN A 127.0.0.125
+EOF
+
+zone2sql --gpgsql --zone-name=example.org --zone=/etc/powerdns/example.org | \
+ PGPASSWORD="$DBPASS" psql -h "$DBHOST" -U "$DBUSER" "$DBNAME"
+
+service pdns restart
+
+TMPFILE=$(mktemp)
+cleanup() {
+ rm -f "$TMPFILE"
+ service pdns stop
+}
+trap cleanup EXIT
+
+dig @127.0.0.1 smoke.example.org 2>&1 | tee "$TMPFILE"
+
+if grep -c '127\.0\.0\.125' "$TMPFILE"; then
+ echo success
+else
+ echo smoke.example.org could not be resolved
+ exit 1
+fi
+
--- /dev/null
+#!/bin/bash
+exec 2>&1
+set -ex
+
+TMPFILE=$(mktemp)
+cleanup() {
+ rm -f "$TMPFILE"
+}
+trap cleanup EXIT
+
+pdnsutil list-algorithms 2>/dev/null | tee "$TMPFILE"
+
+for algo in RSASHA1 RSASHA1-NSEC3-SHA1 RSASHA256 RSASHA512 ECC-GOST ECDSAP256SHA256 ECDSAP384SHA384 ED25519; do
+ if ! grep -E -c " $algo\$" "$TMPFILE"; then
+ echo Algorithm $algo is not supported
+ exit 1
+ fi
+done
+
+echo success
--- /dev/null
+interest pdns-server
--- /dev/null
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFT0b7IBEADHlzJvds1NqKEDhOAG0IWGN4J/jBvO5dPPFqwDJaU32x+4wTw0
+OOxCcgFYdzWPl17nFwjC8yeXvbACCZNz62Kg5o1lWA6Mdx8eazCiGOuTdUbndZDB
+lrIEAs1OUZmqxTSydDnaRNCtLTE2o0t4MaidczjinUn2RkvrtvlCsi1HpQdO5mUT
+r/bmp7v4mvCP5vERuY2+qVc1KbqFltCeV0KAOpr1kRGyQ4D9LFloFkr7ftF0ba3B
+0fbInu2uMp46MC+jPok5uEoT66l+U7sZsCUkHH02Y6s/uXJ6ack84/phtv4xwRER
+lpC97Md+7N7qIYVrdhGVbsiHFEDIoBrLAqfdteivoocguLRI/EUn26J9+bezhmCZ
+UUu1f62iJuBnWCwjpELNMlCIpWugHAucaUZx1xyF71DR65NZwMs+TxBEf+gYlvrz
+Dm6J8fhkfKFH6PtrjIOC0mCsfqOY4FgRYknTZd4ECufkbMKXRX88qvYGX+Fr1Tgn
+QR9GChEPIiWF9e3a5J+DljBu7tEJ0LOhnWU3ApUCTE1lQSGgrUTDQsbil+lyPVjo
+MI+rxzP4o3roDyzrFEr/rlnCv3x+0kqprSXTJqcDShVJq+GU2lmeUCy7+pF2yKCq
+hChcF5CQD4Jt+plRBPq7stxaDZdLpvUtFvLRl4LO6TJjNAGf5x2+kfvupQARAQAB
+tChQaWV0ZXIgTGV4aXMgPHBpZXRlci5sZXhpc0Bwb3dlcmRucy5jb20+iQI+BBMB
+AgAoBQJU9G+yAhsDBQkJZgGABgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBe
+UHFb8v/hp0tWEADG6hcabGBjLFUacKxWdfzV8n3pC5O1wlg/vmIMGddHfI10AL9A
+R5ebm5KQhLmXW+0qhJC4Cm40X8OCg6q4u4gxo8KGHJJqodcZdtKsk2JH3kJyos7g
+VpjbFS9CU9MVMyoXBwYdW1seBTxfoqIzpWUCysFYj6RjmnLLZQXD30T0IWj+0Cyq
+zlb1UHdHm3227I0gT/qJYpOjlkYsl4iH7AJhqtDhQ7ZPn+4yNlCDAvvwA6bpczJi
+Xa/JdvMIKLnbVTPsOCweoWxTmEr1cvpHDKliPskOuA8ujpxVSOXGR948UF74qhLP
+kDczOI1EN+yqd0zwRA7xzUJHWJZZOxNuHnBf24v95AyEgX1aG0nTBjBEcTyYZzVg
+ht7BD/lj0+W3gyssHFl+JDh6ZoS98EcSW2cxLrAOyF8nnm9gFn7CQXTLTOVK9ruM
+lvQ6vbjRQ7176OJkF6jNGj5qSjeSK0s0wU//Wyr7uojiPiQYhGPwOcAskq6iLI6n
+ieVmnOnTwnDbMS1danRFTFdnoPOgP5W8pj4kIOcScxekUhcJlaW8nuxxanCky8G2
+SR83+OgqYBcitFrmr6fdDca69KE2h8X5wB5Uw3VzMm5t2e8JRFxINoUoea60ymH4
+4LaCCUZAo2kYeNI0ZCDNGC8ebkeTwZOoQM44pP+7GL4BuV7j62ty+mPFxrkCDQRU
+9G+yARAAo3nHYN3tSBd8wTGnRWxWoe2UjxSuGPEPjjG3ortE81z+ua0Vw0IufeY3
+SHEGOv+4AdSILqgtB1lKPzbOxhZzZ1m6wGqFVqS4x14DCfYanciBIJbqCRAh+d3d
+GO96IvjwaGFFOc9rR4uwIoiXPajBuJvatj+8VK56gqphjuKVPZxSUxVAKHX/4qDZ
+PRHZnIi5hVJu15BzbVHClUBlhEe74nXnVi1tX4RwM4SNYWJDfOWXyFC361TWQZ9V
+Py+J68uz+xztCEMaCuzzrOmqcVOCcgExMr7J42FPlDggz10SChwGeI6BJxYchz8l
+EYHTC8UG9LNYZ20xAvrM76m/ZAtKwmp9RkW+v1XlvXkYtQqAaR7UBMGOpPmIFqb3
+H0dMPfugR+WqsqRlpzQwlnDkyDVK6LgC2+vKMYJxAKMIViGtLo1GMvjzGBdABQK4
+y1cbtSASmjA/1rJNMLN/PcQJ21VvNW4RzdmHtjc5w3t2HyuRZFMllzuhgNbRUMPo
+6Mbevkz3E8USS0vzBv4F3JbkBNyr/o7Xqov3W7eQPqaLV+qhjfhdRicA/5kCslC5
+Jc5XGQiGGTfTpylW0sX59sUPPW475Db0Y7jt98dCKMyK/0f7s+E9B/VXuFKDY9r0
++KR/wWv3q4EEn66wCTA8iAfkkSIGOywkBQd6ziL4Px4qgGN1S9cAEQEAAYkCJQQY
+AQIADwUCVPRvsgIbDAUJCWYBgAAKCRBeUHFb8v/hp4PlD/9AoyzBd9MY0Ypv/v6s
+8ftjmdUukegdpqfe9ZUMQfIAgO3Z/NFIUmWTB3zHqNjd+IrSOBxIUG/to0zoELzY
+79+szKaWYx0FIOPsWm72VN9xawdoYQ/2XTU5u5Qg/O7ysc9O35QKZLHMNtFXp2PB
+PNc9eRrliyv1KhPcCubG1aBQd+psDRaoIfFt6AQSUyaMVgRZ6mbu2q7Gl4RFqVVt
+vt+iNklmlhZiD8K1G7sCF0rr/ofpLBDnVV6/OwIMV+KrD7OODes+e8oQiM+oN6MO
+0dOiKJbA0hPMMjli99d1+lBNUeUMqgF9ckNAbZnD0YdOUgv70Xu1nj9qvk8hzKzN
+f2Czf1vV+GO5aDy9/H6ZljBGjU/0YGTxY6g26sWKcjeispnbH692D2Da83GJXNFk
+aZb6WYdw+uz4SPV7kbG9nOxgFNY1c3vWWtWaz6XAgiYKeetiPRNQ/muMe8PX7Ihg
+5DzpuSMtx04PRR/FVFjN7sK3re+GZUMkJBNV2IEY6h646iTmoyYPEMOJniLWNEAf
++ZMZgFtYfejqCgVGauRmkPAIbT5x/uKXhkBxvX70i+fKbpKnixh5EsIHTDyBWGUx
+4iA7drVZG4u7xN7ryj5tW2abzNk+pvWVJFVld/T9VvZZKlr10lX4rdRkVKRXdqJz
+O0bNI8W2fVX4kYtjm5WfVpL7bJkCDQROXyaRARAA5exKafKcYORDQWOCjO1P5a8U
+YN9wTwyXGU8apwi2zQnRDkjtUxI941pdRxIdt+jZVi7x7F4K7CogdY19N+6utkCq
+6ddLa0DLDOkIhFI8JqxicYMb9g//lNjyT4evxJRYcdT6hhAtSId6U6T9WCDc31+n
+EPf3t53OuAXAU0KmANv2CL+KRzGF2az5t/fCWWz6U9KLfYIHS7pVGEkSUPXXzSWx
+qbLTDHzpANiBb35inOQU+WP2QGshe8TwRBmwTC2mbk/KvseUt/Wcs8cwjEiCQ+52
+AIe6iNMYqLH7vGMo1zzd8dTmF5HQSs2BJPI4vcYMjWf/R5bKtyYSc7hirlyrgtxi
+n/AXDcNCR/v1Vpqvt5Hd9GvHchoAlvmCaJPs8qOdVllS3if/+bWdvxr0YWyIrwOh
+qdnMUJcJfTro+0pATUVr4wSVKzdDRdRcSqNWKvThAqtioC595dr1EVvi1LXVw22X
+J/RnGGxhyBNMXQhkEh/x/g5IJU+t60CIATdjE0OJYbp/+QAS6u7PNgQLWpIUOUvt
+4A/i8pAnLwsYBwKVdvMiSU92WfkLerjbR39suk+HiaYhPm1iaRt7owsM0Mbt8eS+
++ozoIkWo+h3MM0+/S6Y2TM4ZytbCoQwLiT9lTSGIQF5/FBfs+eHZgUSufLfM0FaK
+fgaSQBO0DPwxQ6d7i4cAEQEAAbQsUGV0ZXIgdmFuIERpamsgPHBldGVyLnZhbi5k
+aWprQHBvd2VyZG5zLmNvbT6JAjgEEwECACIFAlTKH88CGwMGCwkIBwMCBhUIAgkK
+CwQWAgMBAh4BAheAAAoJENz1E/p+7Rnzo4YP/jbQIh/QFRk5m6XTRzclq5j8YDuV
+yrXy2fuIM+g9UKRcBTv2Dy/YjfEYc7GSQnrLSOrT/b7gT75LuzXdSBX7mZVJoNuo
+H7VE0FJkTHf5TJtuuFjmD17tdoPPj75FMF38qAHHd9pzqUjJKYhcpkTfBrU8yJuK
+joFgNvpnRVjJdMU0rir+tDIjSLMxCg/NFMQ0tm0o9XL9lQcQxcJpa8zxGv6M8QCP
+bfQsWPC7+grBH6+ch0ljpFf5qkqPuDnoHTY4kUaHjKNP21ATrZGUspI9jjUlQZ9a
+CDmELRaK1IbUcmRSySIjtdbM54EQ6kWDrJZjDC7mdpPv2/yuBPY7yb8+8rfmNwTz
+rI0bVfbT+6EiiaUzeNz0502yjDNkaVUzd2z7X4WdfokLm5NMth9l2ijpyl+sBHY2
+ljqAUekkc1c0s/HYDqr5HwYQP2yXIcFh58nJJO22SVzLM2n55CWc1v3lXrqKVIJM
+lnjB6epZ4KcKUqgj159dM5t2wWDUjhXQgl9kLN4QfHy4vDkBr/abopGZr3SMC9Y1
+j9RhJJD/eMRU7b+MKoAcpMko0zAbPcxAzjhqtsdp3VCWblKaGOwBwbc5jK38Lrh8
+MhR301aWpRN+kun+w/FAOt9bzvwRnA4/ucZwIYUwYohW8KKzYwH2bOP23ympuL+a
+2G/q4s/jiWFWtJvStC1QZXRlciB2YW4gRGlqayA8cGV0ZXIudmFuLmRpamtAbmV0
+aGVybGFicy5ubD6JAjgEEwECACIFAk5fJpECGwMGCwkIBwMCBhUIAgkKCwQWAgMB
+Ah4BAheAAAoJENz1E/p+7RnzoQQQAJjEVUbLcBd4blXL6EW3VMqIMFbxBt4CiHRj
+sSo02+rUMWLOqZBERfynv0oufhrW3AqTO0OMoqPLWjWFNeOHOdKieBJdcXHDJPO8
+qRUpbcYh5CXr54X09d5WZU8sGipnd8wxO68J8g+5vux3xscEaZTwWZTwyelWA77O
+xJm6WlPPxJ+lTyIuhVC3KoBUWRwfNrxE/ij/0tkVFoIXvczbAQqB6+nApHZvtoR4
+Wys4bzmCWuo9PUj0r3+eyjsWEB0A4Ya1bwaJOchubi/Gq99wfp71zJC8FcSMWmoG
+PRnpg6oLpkxC8YreV/16DUgiMnxUPyJAEpb+AH0MMudmp6tnUaWBs/hWnpyWPXqj
+t6wzs7X31X2oj93ANKjnSpglOgUEBKk4GTyOuBo3S+kyXD9WW977kyKVtUQf3U5E
+HUR08UA/DuEJPGDnMa9lujXM17h//iyixa0RhJXX+ZRKRwEAZqj6H8wNayF045Jd
+wMJ6TIePuymV2ltyG5E0M5l5SOc4fELNHJyHvjhi1Fb23lqBxNhvdm8+RtwtFz+Q
+tFwihP/cEBMue5lcj5Bkvwx3NERJxoPi/Qe82mLZLaMCdlP++jzvSrsVrRWkyw+i
+08T0+Dp9/V5YoEUkhSfNp1w26FtrFVqC4XpVxtjda32Ipw3aygpOqEkCxNsy3+C1
+buzr/QK9uQINBE5fJpEBEADOFiLByCv9fv9/UGW4d++olV33ODVXRNyA/y6M8/SQ
+2p45KUnKYpMLoA8ILlcfvCXTtrU8qOiU86YmfgqGsZo7nSaVE0+3w+TjXAHdbLaR
+ylEBcCXM1Oi0l6U0AqZoVebNd6cLpsY8pikZaLcS3a/fs8RZdHuFUxW+aI+CJNsL
+urHoXCLe9wMTN/AvLJhUa0XoD0C9l56vQRPllBdssmN0zlQCuUz9jG8EE5K0zok2
+CWXTRzZb4yKWWsRyji6srTV0pl59ZNtJ4rZsrLCM79GhAtVHZLViC/4A9Wfko6yU
+Ae/8ueg8e6OoK+idjGWXqO2ttdUy3W5Xow+mzIxmh+Ak5485pDLQwv9m/hVHN8d/
+xpUBeIVgeImk+Ggo4ijlTUIGkMgHkU7L9QVKKn/Cw8rVtfzHWpS2BJSku+7evRxE
+PR0sre0B1N7IwBuqoLKPMlp/Hm2Ann5tZcmUj9wW72f1KaCrgfmhpV47Xml0ISES
+0QNU4Io4hgN2MNXU3M9gm+NsOFDWcOK+ecjetEA0QR+Jdcq0T5bXcgGl96hIOOFP
+2ey1NmEw1/uCS9TuGRPrJw1bEzzKbmS70RZMQixtRU12WnGUV385Rc8OmFoaZx1G
+DkTt3xoW/jyjCmBJaE8i8sI5FSxxW72j7bPenQsVsg63DDqoYIiziyaO6gvv0qvJ
+PQARAQABiQIfBBgBAgAJBQJOXyaRAhsMAAoJENz1E/p+7Rnzb9QP/3WFlfry9Y4i
+/l+L0UgqwzPGwZrf3GXzeTtItx2DzHUg/ZVa/TvlmCiaIMRF19aH4BDu+K8GcRsN
+HK6zDfFTPUoDGd44qBiNeTRdyDZwNa+dxjRoSeCVZ89CldjSrbIZOwrUsa46EfKq
+ZcGzDCAlYEyBEVT9Xp7jm9xRLW4SOK3MvtlE8N4cFEQYSH1KLVRTukirt2S7HCLW
+4jcaU6k6S+gCKfVDq2Y3KnwrhbPD/ue7rrAB3KehmIYSITSHV3+uEULO4LXS1Vu9
+c9HYksbtyhVpa1zsdK65u0UwEJ9VTi5eFuaAT73BdmVUL3fOCO+EzLaT9DEQxYC7
+itBxxVcg339L8e+q7m0IKJus/Go4iGujHxJne8/cYUE+T1NBQKWGOh/5Fu2qPn9o
+diCI8//kIx7mJ9AqqnI5JCwu+kQIEIx2DvTSKS/RovTviNgBc/GIzit4TqcTKxfy
+4zybcQVxhRMD+LnfocwzI8Gmuz5JXJgz1AbkgyIGzb7FTQOoJ+wJG0J+jR/gyJna
+6c4KUq9RRzG4yFqqV1mwGbZjrq8Z/X+WVzygIDL5VeE0uDWap1k+R2QirNm+T3nd
+i/swHSz+TZssya0iMlUyeyTCy3wi2lrv6rB0RrdcPOoHsIO7jD3QNSBL4412iFjY
+WClKuopPgza6tGN31LkYN+UB2j03Gm/nmQGiBDz2UqURBADq+b0jXuV5JOOq+WrJ
+JEOreZoptPiO+gtEQf1ITUTXEMDJWnnyGQ2LafrwbS7eD/Ih8yLvk32FL1CiITA8
+FkS59v8vRRRd8Ag046cEENAsFbESXAnpv4EVXKzK/K1IlJj4ZFAId6ARv4n96CmS
+xR6kc+SSywoNkeH310z3yDq/YwCg72sX/D6YNASqBTd2lVDxNcW2fgkD/jgyGV52
+61rU0EKqIcN+/W1CwCXIwm0MGRN4/fMQfzoC6sux519M6mB+4HLtW7lWLP5LVBlM
+iC8AJlHJf711NNPxV5Xol+rOlc78tpfxbr0N19/QDUPVhIgEL3rui0x2YWWME0uC
+PTZWKe9+RJEQOPA/RPoDb9v8XMzcDx3RVAVyBACDUeqNJ6Z8e+mcXjC6DRBvg4jt
+0bd1k0/FN/a6GxrpdpglU8XSBErJhB5rvxfVhVwYrO8M4uyTx/2a29ssRCFAOGtI
+jr3R6J4hoRusgDTr3NRjqjKbw/2EVpN+oePu9oGIQYy/5woZRN4ftabntQkqXtjo
+IjIl2JcA0Nr81sl1obQZYmVydCBodWJlcnQgPGFodUBkczlhLm5sPohfBBMRAgAX
+BQI89lKlBQsHCgMEAxUDAgMWAgECF4AAEgkQHF7pkNLnFXUHZUdQRwABASq1AKDk
+dusIoMiNKktSMWfCbg/oMJcmYwCg38laBCCqB2Oudv6+OebHWSMHrNi0JWJlcnQg
+aHViZXJ0IChmb3gpIDxodWJlcnRAZm94LWl0LmNvbT6ISQQwEQIACQUCVA/k0wId
+IAAKCRAcXumQ0ucVdWFPAKC9315eBt4gCqWUfUj6EfaexeTj/ACgnv7tMyoH4Nv7
+jK1BG4JQ0S7Fewe0JmJlcnQgaHViZXJ0IDxiZXJ0Lmh1YmVydEBuZXRzY291dC5j
+b20+iEkEMBECAAkFAlQP5PICHSAACgkQHF7pkNLnFXWhrgCg3bm+cERc+F75j2Da
+MhdStYhcCoMAoLzC6QFrVqICjXAWt7LUhRetEb+LtDNiZXJ0IGh1YmVydCAoY29y
+cG9yYXRlKSA8YmVydC5odWJlcnRAbmV0aGVybGFicy5ubD6IXwQTEQIAFwUCQoys
+wgULBwoDBAMVAwIDFgIBAheAABIJEBxe6ZDS5xV1B2VHUEcAAQFGrgCg4ZgRb7G4
+H15PKPfOJX6C9PD0wEIAn3HjAg1fNN9WP8vP9UnlbiH08FEZtDFiZXJ0IGh1YmVy
+dCAocG93ZXJkbnMpIDxiZXJ0Lmh1YmVydEBwb3dlcmRucy5jb20+iGIEExECACIF
+Ald/SwoCGyMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEBxe6ZDS5xV1BKEA
+nikLxRY1dyV+u+r9ImnaY7AmZ+x6AJ9GWMGzivQldWwZYPYYh7f3TTE0+bkBDQQ8
+9lKoEAQAvChVI1iQYngKQtFxxelx4Uv+10B/HaIn4Obk2LqJrbc6yS+zatqOBl0p
+M7jOTRRZp549P7U72jApCW2/bKzdcQNJlJRV7FIe5E1qZNf84AsKBHqphe/7FxHY
+ypekmcvAiZG1B5cmQDEW+ebIBqrPBolNFYUjgDaPMZz0Nr5xoyMAAwYD/jfkkn6j
+JwMSZPUHMuVGBTQlCQ3+b70XClBV5uN0UIKyWx7dRtZD7vuf+NqblygnRlsAsEuh
+99ggWKOL7zUjcXJKtHWrMhjhVtPg/4we19rOY7Z9/n8Jc427dTffAX84CHLuuSEZ
+omYQ1uds9DMMayRSiO5BOOXqeP9ItLElyHb4iE4EGBECAAYFAjz2UqgAEgkQHF7p
+kNLnFXUHZUdQRwABARDzAKDK/3G2YXuVXtDDiPe599ncuzJEPwCg471sTokR9Dn3
+3H9ZFpjspd5Z+dGZAQ0EWOzWBQEIALuqBv3556Glk00Hu866hDtDEOtLeyVXOJA8
+ySsKYIwacAHzaTa2whLLzfx3XdwBWKtly1o3hlduwfwL1l3aMh4zamHFgl58a+P6
+fGTlPEEehi+1silIT3QPbqxzOowiwe93UVkJiTqhapGbFDmnguiLZYTWhgAuGYRr
+EpvtNmnJU+6TrDTO8DH834uoYTESqs+fuOVw6Ab84th+Qucq1LB3yKsHhyq7m0en
+81a22xVXIl5+CKZts7pH8bRTTSMn6eo97k1KJ2E15hoRnnrshlduxhzbRjrx1wfq
+OZ0mVzuNHSJYlGvUKnbtNTatOZXRfUAlqMqcsYkXz8t3QLz/cuUAEQEAAbQtV2lu
+a2VscywgRXJpayA8ZXJpay53aW5rZWxzQG9wZW4teGNoYW5nZS5jb20+iQExBBMB
+AgAbBQJY7NYFAhsDBAsJCAcGFQoJCAsCBQkSzAMAAAoJEG/8M0ObDQTfcIcH/32n
+9IqQwvOqh+rNjl3vHn3on4MdUebEIIg3QkhGtBb912Rdbvqp2lJxLDtgI1EolYbm
+ab1HRRBXh0x4ErGt2yJSruyQrTPp6RKX/dP7tAghTPHtiZ5JK/KjhvuBgjbZ4xiy
+3ge/ZVJoEOuxzPfZlK+MOz75RqT7eH4mBvfB4oBr67OTfAzbYQOGRXNSsRzhHr9x
+CGXk1zlNHheyXrwpPm9wD2RahRPRXscagv+HKI7W8taDLY500C3iX7ux3VfzJcy0
+ub4m0ru96VFJRrdwi8O7WT7oJEZvxV/QtG7sXfo7dt+ryRAKxu3er24Hmk1S9iVh
+owEGnq/JRMOIg1ioRj25AQ0EWOzWBQEIAJ+8XbWUGbMEpYf0gEfnxznD6WxBf3j4
+E2GWiqfGYHd5rQPMErrk0DXmxCwSWjJf0+96KNvJ4wrQ/G5gAUj7R7OChXWFt/KZ
+eaEBCJQd0de41pjBQ7+kVb8cRTBt3gCLWC0xEkbYn7jk9T/Rqm7fOkkmt8x2i5+j
+k83M+lteR1aFbwIIA9dMuG5lm5jz+a1Hu6fK65A2V8lsBacp3+D3NNXIwl19UEh7
+u1H6Pg1R67BuePT2iKo/TYyLrfD/G4pLr8HoU19wXEkJq4S/yzoYr9oABZ3spTSa
+fNoVYaxqmerpBHSC5EY/D1t2QfR0C6pUVOVjxaGjYNoaajd0kA4BXqcAEQEAAYkB
+MQQYAQIAGwUCWOzWBQIbDAQLCQgHBhUKCQgLAgUJEswDAAAKCRBv/DNDmw0E3+Da
+CACIyXcUOmgyGqFXmRXC8MVzc5NcKEE6amh13Cwb75xjmXI9p2nvcklCiIAF4MrJ
+JqR22Hkok0SqlcrUb5vjJw2/CZ4PNdbWM1PaB7AyKmiqvM4lpFfH2hR1U1miQZdM
+8V1CXmzOH6DGwuZNU3jUNyYvEbidIxBcJT282Zp/jC9hZFGLL7VL1he0hUvF3WyD
+mQo9RSe0xNrLCTNN+HE2VaTEk7L0dAcVS/NbOv0BJkdB0LqlHGOAE5ahv/iUxO/6
+FCpxjtb6qfCQwUQXjRrMSTSwdSTTlKA015yy44aEXfRnMH9zOPKYbZeJMFOCsfc8
+fU3LLuacV5Kv6l4aJyRYJaN/
+=z55N
+-----END PGP PUBLIC KEY BLOCK-----
--- /dev/null
+# Site Directory Pattern Version Script
+version=3
+opts="pgpsigurlmangle=s/$/.asc/,versionmangle=s/-(alpha|beta|rc)/~$1/" https://downloads.powerdns.com/releases/ pdns-(\d+.*)\.tar\.bz2 debian uupdate
--- /dev/null
+RUN if $(echo ${BUILDER_VERSION} | grep -q -E '^0\.0\.'); then \
+ # make sure we don't break dependencies for master releases \
+ sed -i '/pdns-server (<< .*/d' pdns-${BUILDER_VERSION}/debian/control; \
+fi
+
+RUN PDNS_TEST_NO_IPV6=1 builder/helpers/build-debs.sh pdns-${BUILDER_VERSION}
+
+RUN mv pdns*${BUILDER_VERSION}*.deb /dist
--- /dev/null
+FROM dist-base as package-builder
+ARG APT_URL
+RUN apt-get -y install devscripts dpkg-dev build-essential python3
+
+RUN mkdir /dist /pdns
+WORKDIR /pdns
+
+ADD builder/helpers/ /pdns/builder/helpers/
+
+# Used for -p option to only build specific packages
+ARG BUILDER_PACKAGE_MATCH
+
+ARG BUILDER_VERSION
+ARG BUILDER_RELEASE
+
+COPY --from=sdist /sdist /sdist
+
+RUN tar xvf /sdist/pdns-${BUILDER_VERSION}.tar.bz2
--- /dev/null
+# First do the source builds
+@INCLUDE Dockerfile.target.sdist
+
+FROM debian:stretch as dist-base
+ARG APT_URL
+RUN apt-get update && apt-get -y dist-upgrade
+
+@INCLUDE Dockerfile.debbuild-prepare
+
+ADD builder-support/debian/debian-stretch/ pdns-${BUILDER_VERSION}/debian/
+
+@INCLUDE Dockerfile.debbuild
+
+# Do a test install and verify
+# Can be skipped with skiptests=1 in the environment
+# @EXEC [ "$skiptests" = "" ] && include Dockerfile.debtest