mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-12-31 14:22:14 +01:00
93 lines
2.0 KiB
Plaintext
Executable File
93 lines
2.0 KiB
Plaintext
Executable File
#!/sbin/openrc-run
|
|
# control an instance of tinydns, without daemontools
|
|
# written for alpine linux - NBA April 2007
|
|
|
|
extra_commands="reload"
|
|
|
|
depend() {
|
|
need net
|
|
after firewall
|
|
}
|
|
|
|
# -- Statrup variables
|
|
DAEMON=/usr/bin/tinydns
|
|
COMPILER=/usr/bin/tinydns-data
|
|
|
|
IFACE="${SVCNAME#*.}"
|
|
if [ -n "$IFACE" ] && [ "${SVCNAME}" != "tinydns" ]; then
|
|
ROOT=${ROOT:-/var/cache/tinydns.$IFACE}
|
|
VARRUN=${VARRUN:-/var/run/tinydns.$IFACE}
|
|
DATADIR=${DATADIR:-/etc/tinydns.$IFACE}
|
|
else
|
|
ROOT=${ROOT:-/var/cache/tinydns}
|
|
VARRUN=${VARRUN:-/var/run/tinydns}
|
|
DATADIR=${DATADIR:-/etc/tinydns}
|
|
fi
|
|
|
|
|
|
#-----------------------------------------------------------------
|
|
# Main program
|
|
reload() {
|
|
local rc opwd="$opwd"
|
|
UID=$(id -u tinydns)
|
|
GID=$(id -g tinydns)
|
|
|
|
# Create the $ROOT directory if necessary
|
|
if [ ! -d "$ROOT" ]; then
|
|
mkdir -p "$ROOT"
|
|
chown $UID:$GID "$ROOT"
|
|
fi
|
|
|
|
# If a file named "data" exists in the $ROOT dir
|
|
# Then we just use it and ignore anything else
|
|
# If the "data" file does not exist, we attempt
|
|
# to build one out of the "zone files".
|
|
ebegin "Generating tinydns cache"
|
|
rm -f "$ROOT/data"
|
|
if [ -e $DATADIR/data ]; then
|
|
ln -sf "$DATADIR/data" "$ROOT/data"
|
|
else
|
|
set -- $( find $DATADIR -type f )
|
|
if [ $# -eq 0 ]; then
|
|
eend 1 "Missing data or zone files in $DATADIR"
|
|
return 1
|
|
fi
|
|
cat "$@" > "$ROOT/data"
|
|
fi
|
|
cd "$ROOT" || return 1
|
|
[ -e data ] || rm -f data.cdb
|
|
$COMPILER
|
|
rc=$?
|
|
cd "$opwd"
|
|
eend $rc
|
|
return $rc
|
|
}
|
|
|
|
start() {
|
|
# Always do a reload on start
|
|
reload || return 1
|
|
|
|
ebegin "Starting tinydns"
|
|
if [ -z "$UID" ] || [ -z "$GID" ]; then
|
|
eend 1 "tinydns user or group missing"
|
|
return 1
|
|
fi
|
|
|
|
if [ -z "$IP" ]; then
|
|
eend 1 "IP is not specified in /etc/conf.d/$SVCNAME"
|
|
return 1
|
|
fi
|
|
|
|
start-stop-daemon --start --env "UID=$UID" --env "GID=$GID" \
|
|
--env "ROOT=$ROOT" --env "IP=$IP" --pidfile ${VARRUN}.pid \
|
|
--background --make-pidfile --exec $DAEMON
|
|
eend $?
|
|
}
|
|
|
|
stop() {
|
|
ebegin "Stopping tinydns"
|
|
start-stop-daemon --stop --pidfile ${VARRUN}.pid --exec $DAEMON
|
|
eend $?
|
|
}
|
|
|