openrc/init.d.misc/named.in
Andrew Gregory 8a44067838 Fix shebangs in services to point to the correct location of runscript
SBINDIR and BINDIR can be set independently of PREFIX.  This fixes
broken shebangs in service files when SBINDIR is set to something other
than PREFIX/sbin

Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
2013-02-23 20:30:39 -06:00

113 lines
2.5 KiB
Plaintext

#!@SBINDIR@/runscript
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
command=/usr/sbin/named
command_args=$named_args
pidfile=@VARBASE@/run/named.pid
name="Domain Name server"
extra_started_commands="reload"
namedb=/etc/namedb
uid=named
case "$RC_UNAME" in
FreeBSD)
uid=bind
pidfile=@VARBASE@/run/named/pid
;;
Linux)
uid=bind
;;
esac
: ${named_uid:=${uid}}
depend()
{
provide dns
need localmount
after bootmisc
}
start_pre()
{
if [ -n "$named_chroot" ]; then
# Create (or update) the chroot directory structure
if [ -r /etc/mtree/BIND.chroot.dist ]; then
mtree -deU -f /etc/mtree/BIND.chroot.dist -p "$named_chroot"
else
ewarn "/etc/mtree/BIND.chroot.dist missing,"
ewarn "chroot directory structure not updated"
fi
if [ ! -d "$named_chroot"/. ]; then
eerror "chroot directory $named_chroot missing"
exit 1
fi
# Create /etc/namedb symlink
if [ ! -L "$namedb" ]; then
if [ -d "$namedb" ]; then
ewarn "named chroot: $namedb is a directory!"
elif [ -e "$namedb" ]; then
ewarn "named chroot: $namedb exists!"
else
ln -s "$named_chroot$namedb" "$namedb"
fi
else
# Make sure it points to the right place.
ln -shf "$named_chroot$namedb" "$namedb"
fi
case "$RC_UNAME" in
*BSD|DragonFly)
# Mount a devfs in the chroot directory if needed
umount "$named_chroot"/dev 2>/dev/null
mount -t devfs dev "$named_chroot"/dev
devfs -m "$named_chroot"/dev \
ruleset devfsrules_hide_all
devfs -m "$named_chroot"/dev \
rule apply path null unhide
devfs -m "$named_chroot"/dev \
rule apply path random unhide
;;
esac
# Copy local timezone information if it is not up to date.
if [ -r /etc/localtime ]; then
cmp -s /etc/localtime "$named_chroot/etc/localtime" ||
cp -p /etc/localtime "$named_chroot/etc/localtime"
fi
command_args="$command_args -t $named_chroot"
ln -fs "$named_chroot$pidfile" "$pidfile"
fi
if [ ! -s "$named_chroot$namedb/rndc.conf" ]; then
local confgen="${command%/named}/rndc-confgen -a -b256 -u $named_uid \
-c $named_chrootdir/etc/namedb/rndc.key"
if [ -s "$named_chroot$namedb/rndc.key" ]; then
local getuser="stat -f%Su"
[ "$RC_UNAME" = Linux ] && getuser="stat -c%U"
case $(${getuser} "$named_chroot$namedb"/rndc.key) in
root|"$named_uid");;
*) $confgen;;
esac
else
$confgen
fi
fi
}
reload()
{
rndc reload
}
stop_post()
{
if [ -n "$named_chroot" -a -c "$named_chroot"/dev/null ]; then
umount "$named_chroot"/dev 2>/dev/null || true
fi
}