net-dns/dnsdist: New package, #611892

Closes: https://github.com/gentoo/gentoo/pull/4606
This commit is contained in:
bgo
2017-05-23 23:44:31 +02:00
committed by Michał Górny
parent 0ee88e0e39
commit 0e7456587f
8 changed files with 335 additions and 0 deletions

1
net-dns/dnsdist/Manifest Normal file
View File

@@ -0,0 +1 @@
DIST dnsdist-1.1.0.tar.bz2 874837 SHA256 b4a1e8931b6d05a24494f54224211c0de0eeb1f5ff170f6b9f5665219bfeafc2 SHA512 91da716997c2440e153944f510a39dd86c9cf8ba8093a7f51a9a5d58ab0a1c230bd99ec57fe8ff0721279c8c4429ad576fe797c1fbe4cde2b9fb8f0405025320 WHIRLPOOL 6d88f4159b8155c9600af94e6e8401c426f183102a18b3f35fc066b8a19d781f5800a2aa64d306ab4ee0daadbaaab1d29b2df05c10058a9b99b9d9cf1abf071e

View File

@@ -0,0 +1,99 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
EGIT_REPO_URI="https://github.com/PowerDNS/pdns.git"
if [[ ${PV} = 9999 ]]; then
ADDITIONAL_ECLASSES="autotools git-r3"
fi
inherit eutils flag-o-matic user ${ADDITIONAL_ECLASSES}
DESCRIPTION="A highly DNS-, DoS- and abuse-aware loadbalancer"
HOMEPAGE="http://dnsdist.org"
if [[ ${PV} == 9999 ]]; then
SRC_URI=""
S="${WORKDIR}/${P}/pdns/dnsdistdist"
else
SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.bz2"
KEYWORDS="~amd64"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="dnscrypt luajit readline regex remote-logging +ssl test"
RESTRICT="readline? ( bindist )"
REQUIRED_USE="dnscrypt? ( ssl )"
DEPEND="
>=dev-libs/boost-1.35:=
luajit? ( dev-lang/luajit:= )
!luajit? ( >=dev-lang/lua-5.1:= )
remote-logging? ( dev-libs/protobuf:= )
readline? ( sys-libs/readline:0= )
!readline? ( dev-libs/libedit:= )
regex? ( dev-libs/re2:= )
ssl? ( dev-libs/libsodium:= )
"
RDEPEND="${DEPEND}"
[[ ${PV} == 9999 ]] && DEPEND+="
app-text/pandoc
dev-util/ragel
"
src_prepare() {
eapply "${FILESDIR}/${PN}-readline.patch"
eapply_user
[[ ${PV} == 9999 ]] && eautoreconf
}
src_configure() {
if use readline ; then
local -x LIBEDIT_CFLAGS="-I/usr/include/readline"
local -x LIBEDIT_LIBS="-lreadline -lcurses"
append-cxxflags -DREADLINE
fi
econf \
--sysconfdir=/etc/dnsdist \
$(use_enable ssl libsodium) \
$(use_with remote-logging protobuf) \
$(use_enable regex re2) \
$(use_enable dnscrypt) \
$(use_with luajit) \
$(use_enable test unit-tests)
}
src_install() {
default
insinto /etc/dnsdist
doins "${FILESDIR}"/dnsdist.conf.example
newconfd "${FILESDIR}"/dnsdist.confd ${PN}
newinitd "${FILESDIR}"/dnsdist.initd ${PN}
}
pkg_preinst() {
enewgroup dnsdist
enewuser dnsdist -1 -1 -1 dnsdist
}
pkg_postinst() {
elog "dnsdist provides multiple instances support. You can create more instances"
elog "by symlinking the dnsdist init script to another name."
elog
elog "The name must be in the format dnsdist.<suffix> and dnsdist will use the"
elog "/etc/dnsdist/dnsdist-<suffix>.conf configuration file instead of the default."
if use readline ; then
ewarn "dnsdist (GPLv2) was linked against readline (GPLv3)."
ewarn "A binary distribution should therefore not happen."
fi
}

View File

@@ -0,0 +1,101 @@
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI=6
EGIT_REPO_URI="https://github.com/PowerDNS/pdns.git"
if [[ ${PV} = 9999 ]]; then
ADDITIONAL_ECLASSES="autotools git-r3"
fi
inherit eutils flag-o-matic user ${ADDITIONAL_ECLASSES}
DESCRIPTION="A highly DNS-, DoS- and abuse-aware loadbalancer"
HOMEPAGE="http://dnsdist.org"
if [[ ${PV} == 9999 ]]; then
SRC_URI=""
S="${WORKDIR}/${P}/pdns/dnsdistdist"
else
SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.bz2"
KEYWORDS="~amd64"
fi
LICENSE="GPL-2"
SLOT="0"
IUSE="dnscrypt luajit readline regex remote-logging snmp +ssl test"
RESTRICT="readline? ( bindist )"
REQUIRED_USE="dnscrypt? ( ssl )"
DEPEND="
>=dev-libs/boost-1.35:=
luajit? ( dev-lang/luajit:= )
!luajit? ( >=dev-lang/lua-5.1:= )
remote-logging? ( dev-libs/protobuf:= )
readline? ( sys-libs/readline:0= )
!readline? ( dev-libs/libedit:= )
regex? ( dev-libs/re2:= )
snmp? ( net-analyzer/net-snmp:= )
ssl? ( dev-libs/libsodium:= )
"
RDEPEND="${DEPEND}"
[[ ${PV} == 9999 ]] && DEPEND+="
app-text/pandoc
dev-util/ragel
"
src_prepare() {
eapply "${FILESDIR}/${PN}-readline.patch"
eapply_user
[[ ${PV} == 9999 ]] && eautoreconf
}
src_configure() {
if use readline ; then
local -x LIBEDIT_CFLAGS="-I/usr/include/readline"
local -x LIBEDIT_LIBS="-lreadline -lcurses"
append-cxxflags -DREADLINE
fi
econf \
--sysconfdir=/etc/dnsdist \
$(use_enable ssl libsodium) \
$(use_with remote-logging protobuf) \
$(use_enable regex re2) \
$(use_enable dnscrypt) \
$(use_with luajit) \
$(use_enable test unit-tests) \
$(use_with snmp net-snmp)
}
src_install() {
default
insinto /etc/dnsdist
doins "${FILESDIR}"/dnsdist.conf.example
newconfd "${FILESDIR}"/dnsdist.confd ${PN}
newinitd "${FILESDIR}"/dnsdist.initd ${PN}
}
pkg_preinst() {
enewgroup dnsdist
enewuser dnsdist -1 -1 -1 dnsdist
}
pkg_postinst() {
elog "dnsdist provides multiple instances support. You can create more instances"
elog "by symlinking the dnsdist init script to another name."
elog
elog "The name must be in the format dnsdist.<suffix> and dnsdist will use the"
elog "/etc/dnsdist/dnsdist-<suffix>.conf configuration file instead of the default."
if use readline ; then
ewarn "dnsdist (GPLv2) was linked against readline (GPLv3)."
ewarn "A binary distribution should therefore not happen."
fi
}

View File

@@ -0,0 +1,25 @@
diff -Naur dnsdist-1.1.0/dnsdist.cc dnsdist-1.1.0-gentoo/dnsdist.cc
--- dnsdist-1.1.0/dnsdist.cc 2016-12-29 13:45:46.000000000 +0100
+++ dnsdist-1.1.0-gentoo/dnsdist.cc 2017-05-21 15:09:10.414951426 +0200
@@ -29,6 +29,8 @@
#if defined (__OpenBSD__)
#include <readline/readline.h>
+#elif defined READLINE
+#include <readline/readline.h>
#else
#include <editline/readline.h>
#endif
diff -Naur dnsdist-1.1.0/dnsdist-console.cc dnsdist-1.1.0-gentoo/dnsdist-console.cc
--- dnsdist-1.1.0/dnsdist-console.cc 2016-12-29 13:45:46.000000000 +0100
+++ dnsdist-1.1.0-gentoo/dnsdist-console.cc 2017-05-21 15:09:24.758950947 +0200
@@ -25,6 +25,9 @@
#if defined (__OpenBSD__)
#include <readline/readline.h>
#include <readline/history.h>
+#elif defined READLINE
+#include <readline/readline.h>
+#include <readline/history.h>
#else
#include <editline/readline.h>
#endif

View File

@@ -0,0 +1,19 @@
--[[
This is an example dnsdist configuration file.
Please refer to the dnsdist documentation
at http://dnsdist.org/README/ for more information.
]]--
-- Listen on 192.0.2.1 on port 53.
setLocal("192.0.2.1:53")
-- Add 2001:db8::2:1 to the list of adresses dnsdist should listen on
addLocal("2001:db8::2:1")
-- Add to the ACL set who can use this server
addACL("192.0.2.0/24")
addACL("2001:db8::/32")
-- Instantiate two new downstram server with their default settings
newServer("198.51.100.1")
newServer("198.51.100.2")

View File

@@ -0,0 +1,13 @@
# /etc/conf.d/dnsdist
# Options to pass on to dnsdist during the start
DNSDIST_OPTIONS=""
# Run dnsdist as this user
DNSDIST_USER="dnsdist"
# Run dnsdist in this group
DNSDIST_GROUP="dnsdist"
# Set the maximum number of open file descriptors
rc_ulimit="-n 2048"

View File

@@ -0,0 +1,55 @@
#!/sbin/openrc-run
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
extra_commands="configcheck"
#extra_started_commands=""
DNSDIST_INSTANCE="${SVCNAME#dnsdist[.-]}"
DNSDIST_CONFFILE="/etc/dnsdist/${SVCNAME#dnsdist[.-]}.conf"
DNSDIST="/usr/bin/dnsdist"
PIDDIR=/run/dnsdist
PIDFILE=$PIDDIR/$SVCNAME.pid
if [ -n "${DNSDIST_INSTANCE}" ] && [ "${DNSDIST_INSTANCE}" != "dnsdist" ]
then
DNSDIST_INSTANCE="dnsdist-${SVCNAME#dnsdist[.-]}"
DNSDIST_CONFFILE="/etc/dnsdist/${DNSDIST_INSTANCE}.conf"
else
DNSDIST_INSTANCE="default"
fi
depend() {
need net
}
start() {
checkpath -q -d ${PIDDIR} -o ${DNSDIST_USER}:${DNSDIST_GROUP}
configcheck || return 1
ebegin "Starting dnsdist (${DNSDIST_INSTANCE})"
start-stop-daemon --start --exec $DNSDIST --pidfile ${PIDFILE} \
-- -d -p ${PIDFILE} -u ${DNSDIST_USER} -g ${DNSDIST_GROUP} \
-C $DNSDIST_CONFFILE ${DNSDIST_OPTIONS}
eend $?
}
stop() {
ebegin "Stopping dnsdist (${DNSDIST_INSTANCE})"
start-stop-daemon --stop --exec $DNSDIST --pidfile ${PIDFILE}
eend $?
}
configcheck() {
ebegin "Checking configuration file (${DNSDIST_CONFFILE})"
$DNSDIST --check-config -C $DNSDIST_CONFFILE > /dev/null
if [ $? -ne 0 ]; then
$DNSDIST --check-config -C $DNSDIST_CONFFILE
fi
eend $? "failed, please correct errors above"
}

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>bgo@9dt.de</email>
<name>Vladimir Datsevich</name>
</maintainer>
<maintainer type="project">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<longdescription lang="en">
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.
</longdescription>
<use>
<flag name="dnscrypt">Enable the ability to act as a DNSCrypt server</flag>
<flag name="luajit">Use <pkg>dev-lang/luajit</pkg> instead of <pkg>dev-lang/lua</pkg></flag>
<flag name="regex">Enable support for regular expression matching via <pkg>dev-libs/re2</pkg></flag>
<flag name="remote-logging">Enable support for remote logging via <pkg>dev-libs/protobuf</pkg></flag>
<flag name="ssl">Enable support for and encrypted client-server communication via <pkg>dev-libs/libsodium</pkg></flag>
</use>
</pkgmetadata>