# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit multiprocessing systemd tmpfiles MY_PV="${PV/_p/-P}" MY_PV="${MY_PV/_rc/rc}" MY_P="${PN}-${MY_PV}" RRL_PV="${MY_PV}" DESCRIPTION="Berkeley Internet Name Domain - Name Server" HOMEPAGE="https://www.isc.org/software/bind" SRC_URI="https://downloads.isc.org/isc/bind9/${PV}/${P}.tar.xz" S="${WORKDIR}/${MY_P}" LICENSE="MPL-2.0" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" IUSE="+caps dnsrps dnstap doc doh fixed-rrset idn jemalloc geoip gssapi lmdb selinux static-libs test xml" RESTRICT="!test? ( test )" DEPEND=" acct-group/named acct-user/named dev-libs/json-c:= >=dev-libs/libuv-1.37.0:= sys-libs/zlib dev-libs/openssl:=[-bindist(-)] caps? ( >=sys-libs/libcap-2.1.0 ) dnstap? ( dev-libs/fstrm dev-libs/protobuf-c ) doh? ( net-libs/nghttp2:= ) geoip? ( dev-libs/libmaxminddb ) gssapi? ( virtual/krb5 ) idn? ( net-dns/libidn2 ) jemalloc? ( dev-libs/jemalloc:= ) lmdb? ( dev-db/lmdb ) xml? ( dev-libs/libxml2 ) " RDEPEND=" ${DEPEND} selinux? ( sec-policy/selinux-bind ) sys-process/psmisc !/dev/null; echo ${CHROOT}) if [[ -n ${CHROOT} ]]; then elog "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!" elog "To enable the old behaviour (without using mount) uncomment the" elog "CHROOT_NOMOUNT option in your /etc/conf.d/named config." elog "If you decide to use the new/default method, ensure to make backup" elog "first and merge your existing configs/zones to /etc/bind and" elog "/var/bind because bind will now mount the needed directories into" elog "the chroot dir." fi } pkg_config() { CHROOT=$(source /etc/conf.d/named; echo ${CHROOT}) CHROOT_NOMOUNT=$(source /etc/conf.d/named; echo ${CHROOT_NOMOUNT}) CHROOT_GEOIP=$(source /etc/conf.d/named; echo ${CHROOT_GEOIP}) if [[ -z "${CHROOT}" ]]; then eerror "This config script is designed to automate setting up" eerror "a chrooted bind/named. To do so, please first uncomment" eerror "and set the CHROOT variable in '/etc/conf.d/named'." die "Unset CHROOT" fi if [[ -d "${CHROOT}" ]]; then ewarn "NOTE: As of net-dns/bind-9.4.3_p5-r1 the chroot part of the init-script got some major changes!" ewarn "To enable the old behaviour (without using mount) uncomment the" ewarn "CHROOT_NOMOUNT option in your /etc/conf.d/named config." ewarn ewarn "${CHROOT} already exists... some things might become overridden" ewarn "press CTRL+C if you don't want to continue" sleep 10 fi echo; einfo "Setting up the chroot directory..." mkdir -m 0750 -p ${CHROOT} || die mkdir -m 0755 -p ${CHROOT}/{dev,etc,var/log,run} || die mkdir -m 0750 -p ${CHROOT}/etc/bind || die mkdir -m 0770 -p ${CHROOT}/var/{bind,log/named} ${CHROOT}/run/named/ || die chown root:named \ ${CHROOT} \ ${CHROOT}/var/{bind,log/named} \ ${CHROOT}/run/named/ \ ${CHROOT}/etc/bind \ || die mknod ${CHROOT}/dev/null c 1 3 || die chmod 0666 ${CHROOT}/dev/null || die mknod ${CHROOT}/dev/zero c 1 5 || die chmod 0666 ${CHROOT}/dev/zero || die if [[ "${CHROOT_NOMOUNT:-0}" -ne 0 ]]; then cp -a /etc/bind ${CHROOT}/etc/ || die cp -a /var/bind ${CHROOT}/var/ || die fi if [[ "${CHROOT_GEOIP:-0}" -eq 1 ]]; then if use geoip; then mkdir -m 0755 -p ${CHROOT}/usr/share/GeoIP || die elif use geoip2; then mkdir -m 0755 -p ${CHROOT}/usr/share/GeoIP2 || die fi fi elog "You may need to add the following line to your syslog-ng.conf:" elog "source jail { unix-stream(\"${CHROOT}/dev/log\"); };" }