You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

169 lines
4.2 KiB

include $(TOPDIR)/rules.mk
PKG_NAME:=dnsdist
PKG_VERSION:=1.7.1
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://downloads.powerdns.com/releases/
PKG_HASH:=273a8212be2ddfaf754f752bcda4c2abc671ca5d42f776263312eb4661ea2d66
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 \
+liblua \
+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=lua \
$(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))