packages/net/djbdns/files/axfrdns.init

75 lines
1.7 KiB
Plaintext
Raw Normal View History

#!/bin/sh /etc/rc.common
# Copyright (C) 2007 OpenWrt.org
#
# version 20090401 jhalfmoon
START=47
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/tcpserver
NAME=tcpserver
DESC="Zone transfer name server"
APP=/usr/bin/axfrdns
ROOT=/tmp/tinydns
if [ ! -e /etc/tinydns/data ] ; then
echo Error: Dependency tinydns not found.
exit 111
fi
start() {
echo "Starting $DESC: $NAME"
config_load djbdns
mkdir -p $ROOT
ln -sf /etc/tinydns/data $ROOT/data
cd $ROOT
tinydns-data
chown -R $UID:$GID $ROOT
tcprules $ROOT/tcp.cdb $ROOT/tcp.cdb.tmp < /etc/axfrdns/tcp
config_foreach get_userids global
config_foreach start_daemon axfrdns
}
get_userids() {
local cfg="$1"
config_get UID "$cfg" runasuser
config_get GID "$cfg" runasgroup
UID=`id -u $UID`
GID=`id -g $GID`
}
start_daemon() {
local cfg="$1"
config_get logging "$cfg" logging
config_get iface "$cfg" interface
config_get AXFR "$cfg" allowedzones
# Unset AXFR if it is empty
[ -z $AXFR ] && export -n AXFR
# Translate listening interfaces to ip addresses
include /lib/network
scan_interfaces
config_get IP "$iface" ipaddr
export ROOT
if [ "$DEBUG" == 1 ] ; then
$DAEMON -vDRHl0 -c40 -b10 -x $ROOT/tcp.cdb -- $IP 53 $APP
elif [ "$logging" == '1' ] ; then
$DAEMON -vDRHl0 -c40 -b10 -x $ROOT/tcp.cdb -- $IP 53 $APP 2>&1 | logger -p local1.info -t $NAME &
else
$DAEMON -DRHl0 -c40 -b10 -x $ROOT/tcp.cdb -- $IP 53 $APP > /dev/null 2>&1 &
fi
}
stop() {
echo -n "Stopping $DESC: $NAME"
kill `pidof $NAME|sed "s/$$//g"` > /dev/null 2>&1
echo " ."
}
restart() {
echo "Restarting $DESC: $NAME... "
stop
sleep 2
start
}