include $(TOPDIR)/rules.mk PKG_NAME:=pdns PKG_VERSION:=4.1.10 PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/ PKG_HASH:=5a46cfde92caaaa2e85af9a15acb9ad81b56f4c8a8255c457e6938d8c0cb15c7 PKG_MAINTAINER:=James Taylor PKG_LICENCE:=GPL-2.0-only PKG_LICENCE_FILES:=COPYING PKG_CPE_ID:=cpe:/a:powerdns:authoritative_server PKG_FIXUP:=autoreconf PKG_INSTALL:=1 PKG_BUILD_PARALLEL:=1 PKG_BUILD_DEPENDS:=unixodbc/host include $(INCLUDE_DIR)/package.mk define Package/pdns/Default SECTION:=net CATEGORY:=Network SUBMENU:=IP Addresses and Names TITLE:=PowerDNS Authoritative Server DEPENDS:=+libatomic URL:=https://www.powerdns.com/auth.html endef define Package/pdns/description 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. endef PDNS_BACKENDS = define Package/pdns-backends $(call Package/pdns/Default) TITLE+= (all backends) DEPENDS+= $(PDNS_DEPENDS) HIDDEN:=1 endef define Package/pdns-backends/description This meta package contains only dependencies for PowerDNS backends. endef # Create a meta-package of dependent backends (for ALL) define Package/pdns-backends/install true endef define Package/pdns-tools $(call Package/pdns/Default) TITLE:=Tools for DNS debugging by PowerDNS DEPENDS+=+boost +boost-program_options +libopenssl +p11-kit +protobuf endef define Package/pdns-tools/description 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 endef define Package/pdns $(call Package/pdns/Default) DEPENDS+=+boost +boost-program_options +liblua +libopenssl +libsodium +libsqlite3 +p11-kit endef define Package/pdns/config menu "Select PowerDNS backends" depends on PACKAGE_pdns comment "PowerDNS backends" $(foreach backend,$(PDNS_BACKENDS), \ config PACKAGE_pdns-backend-$(backend) prompt "$(PDNS_BACKEND_$(backend)_DESC) backend" default m if ALL ) endmenu endef # 1: short name # 2: dependencies on other PowerDNS libraries (short name) # 3: dependencies on other packages # 4: conditional/inward dependencies define DefinePdnsBackend PDNS_DEPENDS+= +pdns-backend-$(1) PKG_CONFIG_DEPENDS+= CONFIG_PACKAGE_pdns-backend$(1) PDNS_BACKENDS+= $(1) PDNS_BACKEND_$(1)_DESC=$(if $(5),$(5),$(1)) PDNS_BACKEND_$(1)_LIB=$(if $(4),$(4),$(1)) define Package/pdns-backend-$(1) $(call Package/pdns/Default) TITLE+= ($(1)) DEPENDS+= pdns $$(foreach backend,$(2),+pdns-backend-$$(backend)) $(3) HIDDEN:=1 endef define Package/pdns-backend-$(1)/description 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 $(if $(5),$(5),$(1)) backend for the PowerDNS nameserver. endef endef $(eval $(call DefinePdnsBackend,mysql,,libmysqlclient,gmysql,MySQL)) $(eval $(call DefinePdnsBackend,odbc,,unixodbc,godbc,ODBC)) $(eval $(call DefinePdnsBackend,pgsql,,libpq,gpgsql,PostgreSQL)) $(eval $(call DefinePdnsBackend,sqlite3,,libsqlite3,gsqlite3,SQLite 3)) $(eval $(call DefinePdnsBackend,ldap,,libopenldap krb5-libs,,OpenLDAP)) $(eval $(call DefinePdnsBackend,lua,,lua liblua,,Lua)) $(eval $(call DefinePdnsBackend,mydns,,libmysqlclient,,MyDNS)) $(eval $(call DefinePdnsBackend,pipe,,,,Pipe)) $(eval $(call DefinePdnsBackend,remote,,,,Remote)) define Package/pdns/conffiles /etc/powerdns/pdns.conf /etc/init.d/pdns endef CONFIGURE_ARGS+= \ --sysconfdir=/etc/powerdns \ --libdir=/usr/lib/powerdns \ --with-dynmodules="$(foreach backend,$(PDNS_BACKENDS),$(if $(CONFIG_PACKAGE_pdns-backend-$(backend)),$(PDNS_BACKEND_$(backend)_LIB),))" \ --with-modules="bind random" \ --with-mysql-lib=$(STAGING_DIR)/usr \ --with-mysql-includes=$(STAGING_DIR)/usr \ $(if $(CONFIG_PACKAGE_pdns-tools),--enable-tools,) \ --with-protobuf \ --enable-libsodium \ --enable-experimental-pkcs11 define Package/pdns/install $(INSTALL_DIR) $(1)/etc/powerdns $(INSTALL_CONF) ./files/pdns.conf-dist $(1)/etc/powerdns/pdns.conf-dist $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/pdns.init $(1)/etc/init.d/pdns $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdns_control $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdnsutil $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/zone2sql $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/zone2json $(1)/usr/bin/ $(INSTALL_DIR) $(1)/usr/sbin $(CP) $(PKG_INSTALL_DIR)/usr/sbin/pdns_server $(1)/usr/sbin/ endef define Package/pdns/Default/install $(INSTALL_DIR) $(1)/usr/lib/powerdns/pdns $(CP) $(PKG_INSTALL_DIR)/usr/lib/powerdns/pdns/lib$(PDNS_BACKEND_$(2)_LIB)backend.so $(1)/usr/lib/powerdns/pdns/ endef define Package/pdns-tools/install $(INSTALL_DIR) $(1)/usr/bin $(CP) $(PKG_INSTALL_DIR)/usr/bin/calidns $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsbulktest $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsgram $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnspcap2protobuf $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsreplay $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsscan $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnsscope $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnstcpbench $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dnswasher $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/dumresp $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/ixplore $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/nproxy $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/nsec3dig $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/pdns_notify $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/saxfr $(1)/usr/bin/ $(CP) $(PKG_INSTALL_DIR)/usr/bin/sdig $(1)/usr/bin/ endef define BuildPdnsBackend define Package/pdns-backend-$(1)/install $(call Package/pdns/Default/install,$$(1),$(1)) endef $$(eval $$(call BuildPackage,pdns-backend-$(1))) endef $(foreach backend,$(PDNS_BACKENDS),$(eval $(call BuildPdnsBackend,$(backend)))) $(eval $(call BuildPackage,pdns)) $(eval $(call BuildPackage,pdns-tools))