include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=dnsdist
|
|
PKG_VERSION:=1.7.2
|
|
PKG_RELEASE:=$(AUTORELEASE)
|
|
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
|
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
|
|
PKG_HASH:=524bd2bb05aa2e05982a971ae8510f2812303ab4486a3861b62212d06b1127cd
|
|
|
|
PKG_MAINTAINER:=Peter van Dijk <peter.van.dijk@powerdns.com>
|
|
PKG_LICENSE:=GPL-2.0-only
|
|
PKG_LICENSE_FILES:=COPYING
|
|
PKG_CPE_ID:=cpe:/a:powerdns:dnsdist
|
|
|
|
PKG_INSTALL:=1
|
|
PKG_BUILD_PARALLEL:=1
|
|
|
|
PKG_ASLR_PIE:=0
|
|
PKG_BUILD_DEPENDS:=boost
|
|
|
|
PKG_CONFIG_DEPENDS:= \
|
|
CONFIG_DNSDIST_GNUTLS \
|
|
CONFIG_DNSDIST_OPENSSL
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define Package/dnsdist/config
|
|
menu "Configuration"
|
|
depends on PACKAGE_dnsdist
|
|
|
|
comment "SSL Support"
|
|
choice
|
|
prompt "Selected SSL library"
|
|
default DNSDIST_OPENSSL
|
|
|
|
config DNSDIST_OPENSSL
|
|
bool "OpenSSL"
|
|
|
|
config DNSDIST_GNUTLS
|
|
bool "GnuTLS"
|
|
|
|
config DNSDIST_NOSSL
|
|
bool "No SSL support"
|
|
|
|
endchoice
|
|
|
|
comment "DNS over HTTPS/TLS Support"
|
|
depends on !DNSDIST_NOSSL
|
|
|
|
config DNSDIST_DNS_OVER_HTTPS
|
|
depends on DNSDIST_OPENSSL
|
|
depends on !DNSDIST_NOSSL
|
|
bool "DNS over HTTPS Support"
|
|
help
|
|
"Enables DNS over HTTPS Support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_DNS_OVER_HTTPS_OUTGOING
|
|
depends on !DNSDIST_NOSSL
|
|
bool "Outgoing DNS over HTTPS Support"
|
|
help
|
|
"Enables Outgoing DNS over HTTPS Support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_DNS_OVER_TLS
|
|
depends on !DNSDIST_NOSSL
|
|
bool "DNS over TLS Support"
|
|
help
|
|
"Enabled DNS over TLS Support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_NET_SNMP
|
|
bool "Net-SNMP support"
|
|
help
|
|
"Enable Net-SNMP support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_RE2
|
|
bool "RE2 support"
|
|
help
|
|
"Enable RE2 support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_DNSTAP
|
|
bool "DNSTAP support"
|
|
help
|
|
"Enable DNSTAP support for dnsdist"
|
|
default y
|
|
|
|
config DNSDIST_SODIUM
|
|
bool "Build with libsodium"
|
|
help
|
|
"Build with libsodium - for encrypted console connections, and DNSCrypt"
|
|
default y
|
|
endmenu
|
|
endef
|
|
|
|
define Package/dnsdist
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
SUBMENU:=IP Addresses and Names
|
|
TITLE:=dnsdist DNS-, DOS- and abuse-aware loadbalancer
|
|
DEPENDS:= \
|
|
+DNSDIST_DNS_OVER_HTTPS:libh2o-evloop \
|
|
+DNSDIST_DNS_OVER_HTTPS_OUTGOING:libnghttp2 \
|
|
+DNSDIST_GNUTLS:libgnutls \
|
|
+DNSDIST_OPENSSL:libopenssl \
|
|
+DNSDIST_NET_SNMP:libnetsnmp \
|
|
+DNSDIST_RE2:re2 \
|
|
+DNSDIST_DNSTAP:libfstrm \
|
|
+DNSDIST_SODIUM:libsodium \
|
|
+libatomic \
|
|
+libcap \
|
|
+libedit \
|
|
+libstdcpp \
|
|
+lmdb \
|
|
+luajit \
|
|
+tinycdb
|
|
URL:=https://dnsdist.org/
|
|
endef
|
|
|
|
define Package/dnsdist/description
|
|
dnsdist is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in life
|
|
is to route traffic to the best server, delivering top performance to legitimate
|
|
users while shunting or blocking abusive traffic.
|
|
endef
|
|
|
|
define Package/dnsdist/conffiles
|
|
/etc/dnsdist.conf
|
|
/etc/config/dnsdist
|
|
/etc/init.d/dnsdist
|
|
endef
|
|
|
|
# not everything groks --disable-nls
|
|
DISABLE_NLS:=
|
|
|
|
# OpenWRT's setting of CXX destroys dnsdist's -std=c++17
|
|
# --with-re2 compensates for that because it compensates for a bug in re2.pc that also destroys it
|
|
# so this addition is for the --without-re2 case
|
|
#
|
|
# none of this is pretty
|
|
TARGET_CXX+=-std=c++17
|
|
|
|
CONFIGURE_ARGS+= \
|
|
--with-pic \
|
|
--with-lua=luajit \
|
|
$(if $(CONFIG_DNSDIST_SODIUM),--enable-dnscrypt --with-libsodium,--disable-dnscrypt --without-libsodium) \
|
|
$(if $(CONFIG_DNSDIST_DNSTAP),--enable-dnstap=yes,--enable-dnstap=no) \
|
|
$(if $(CONFIG_DNSDIST_RE2),--with,--without)-re2 \
|
|
$(if $(CONFIG_DNSDIST_NET_SNMP),--with,--without)-net-snmp \
|
|
$(if $(CONFIG_DNSDIST_GNUTLS),--with,--without)-gnutls \
|
|
$(if $(CONFIG_DNSDIST_OPENSSL),--with,--without)-libssl \
|
|
$(if $(CONFIG_DNSDIST_DNS_OVER_TLS),--enable-dns-over-tls,) \
|
|
$(if $(CONFIG_DNSDIST_DNS_OVER_HTTPS),--enable-dns-over-https,) \
|
|
$(if $(CONFIG_DNSDIST_DNS_OVER_HTTPS_OUTGOING),--with,--without)-nghttp2
|
|
|
|
define Package/dnsdist/install
|
|
$(INSTALL_DIR) $(1)/etc
|
|
$(INSTALL_CONF) ./files/dnsdist.conf $(1)/etc/dnsdist.conf
|
|
$(INSTALL_DIR) $(1)/etc/config
|
|
$(INSTALL_CONF) ./files/dnsdist.config $(1)/etc/config/dnsdist
|
|
$(INSTALL_DIR) $(1)/etc/init.d
|
|
$(INSTALL_BIN) ./files/dnsdist.init $(1)/etc/init.d/dnsdist
|
|
$(INSTALL_DIR) $(1)/usr/bin
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/dnsdist $(1)/usr/bin/
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,dnsdist))
|