123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- # Copyright 1999-2014 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
- EAPI=5
- inherit systemd user
- DESCRIPTION="Proxy DNS server with permanent caching"
- HOMEPAGE="http://members.home.nl/p.a.rombouts/pdnsd/"
- SRC_URI="http://members.home.nl/p.a.rombouts/pdnsd/releases/${P}-par.tar.gz"
- LICENSE="GPL-3"
- SLOT="0"
- KEYWORDS="alpha amd64 arm ia64 ppc ~s390 sparc x86"
- IUSE="debug ipv6 isdn +urandom test"
- RDEPEND=""
- DEPEND="test? ( net-dns/bind-tools )"
- pkg_setup() {
- enewgroup pdnsd
- enewuser pdnsd -1 -1 /var/lib/pdnsd pdnsd
- }
- src_configure() {
- local myconf=""
- use debug && myconf="${myconf} --with-debug=3"
- use urandom && myconf="${myconf} --with-random-device=/dev/urandom"
- econf \
- --disable-dependency-tracking \
- --sysconfdir=/etc/pdnsd \
- --with-cachedir=/var/cache/pdnsd \
- --with-default-id=pdnsd \
- $(use_enable ipv6) $(use_enable ipv6 ipv6-startup) \
- $(use_enable isdn) \
- ${myconf}
- }
- src_install() {
- emake DESTDIR="${D}" install
- dodoc AUTHORS ChangeLog* NEWS README THANKS TODO README.par
- docinto contrib ; dodoc contrib/{README,dhcp2pdnsd,pdnsd_dhcp.pl}
- docinto html ; dohtml doc/html/*
- docinto txt ; dodoc doc/txt/*
- newdoc doc/pdnsd.conf pdnsd.conf.sample
- newinitd "${FILESDIR}/pdnsd.rc8" pdnsd
- newinitd "${FILESDIR}/pdnsd.online.2" pdnsd-online
- systemd_newtmpfilesd "${FILESDIR}/pdnsd.tmpfiles" pdnsd.conf
- systemd_dounit "${FILESDIR}/pdnsd.service"
- mkdir "${T}"/confd || die
- cat - > "${T}"/confd/pdnsd-online <<EOF
- # Make sure to change the rc_need variable to the service for the
- # interface that connects you to the dns servers.
- #
- # For instance if you use a PPP connection on ppp0 to connect, set
- # rc_need="net.ppp0"
- rc_need="net.lo"
- EOF
- # Don't try to do the smart thing and add the --help output here:
- # it will cause the file to be etc-updated if the help text
- # changes and fails when cross-compiling.
- cat - > "${T}"/confd/pdnsd <<EOF
- # Command line options, check pdnsd --help for a list of valid
- # parameters. Note that most of the options that can be given at
- # command-line are also available as configuration parameters in
- # /etc/pdnsd/pdnsd.conf
- PDNSDCONFIG=""
- EOF
- doconfd "${T}"/confd/*
- # gentoo resolvconf support
- exeinto /etc/resolvconf/update.d
- newexe "${FILESDIR}/pdnsd.resolvconf-r1" pdnsd
- }
- src_test() {
- fail_kill() {
- kill -9 $(<"${T}"/pid)
- die "$1"
- }
- mkdir "${T}/pdnsd" || die
- echo -n -e "pd12\0\0\0\0" > "${T}/pdnsd/pdnsd.cache"
- IPS=$(grep ^nameserver /etc/resolv.conf | sed -e 's/nameserver \(.*\)/\tip=\1;/g' | xargs)
- sed -e "s/\tip=/${IPS}/" -e "s:cache_dir=:cache_dir=${T}/pdnsd:" "${FILESDIR}/pdnsd.conf.test" \
- > "${T}/pdnsd.conf.test"
- src/pdnsd -c "${T}/pdnsd.conf.test" -g -s -d -p "${T}/pid" || die "couldn't start daemon"
- sleep 3
- find "${T}" -ls
- [ -s "${T}/pid" ] || die "empty or no pid file created"
- [ -S "${T}/pdnsd/pdnsd.status" ] || fail_kill "no socket created"
- src/pdnsd-ctl/pdnsd-ctl -c "${T}/pdnsd" server all up || fail_kill "failed to start the daemon"
- src/pdnsd-ctl/pdnsd-ctl -c "${T}/pdnsd" status || fail_kill "failed to communicate with the daemon"
- sleep 3
- dig @127.0.0.1 -p 33455 localhost > "${T}"/dig.output 2>&1
- cat "${T}"/dig.output || die
- fgrep -q "status: NOERROR" "${T}"/dig.output || fail_kill "www.gentoo.org lookup failed"
- kill $(<"${T}/pid") || fail_kill "failed to terminate daemon"
- }
- pkg_postinst() {
- elog
- elog "Add pdnsd to your default runlevel - rc-update add pdnsd default"
- elog ""
- elog "Add pdnsd-online to your online runlevel."
- elog "The online interface will be listed in /etc/conf.d/pdnsd-online"
- elog ""
- elog "Sample config file in /etc/pdnsd/pdnsd.conf.sample"
- # The tmpfiles.d configuration does not come into effect before the
- # next reboot so create the cachedir now.
- local cachedir="/var/cache/pdnsd"
- if [[ ! -d ${cachedir} ]] ; then
- mkdir ${cachedir} || eerror "Failed to create cache"
- fi
- chown pdnsd:pdnsd ${cachedir} \
- || eerror "Failed to set ownership for cachedir"
- chmod 0750 ${cachedir} \
- || eerror "Failed to set permissions for cachedir"
- }
|