# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit systemd tmpfiles MY_PV="${PV/_p/-P}" MY_PV="${MY_PV/_rc/rc}" 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}/${PN}-${MY_PV}" LICENSE="MPL-2.0" SLOT="0" KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~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 # show only when upgrading to 9.18 if [[ -n "${REPLACING_VERSIONS}" ]] && ver_test "${REPLACING_VERSIONS}" -lt 9.18; then elog "As this is a major bind version upgrade, please read:" elog " https://kb.isc.org/docs/changes-to-be-aware-of-when-moving-from-bind-916-to-918" elog "for differences in functionality." elog "" ewarn "In particular, please note that bind-9.18 does not need a root hints file anymore" ewarn "and we only ship with one as a stop-gap. If your current configuration specifies a" ewarn "root hints file - usually called named.cache - bind will not start as it will not be able" ewarn "to find the specified file. Best practice is to delete the offending lines that" ewarn "reference named.cache file from your configuration." 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\"); };" }