#!/bin/sh

# For Red Hat chkconfig
# chkconfig: - 30 80
# description: The djbdns DNS Server

PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH

TINYDNSUID=`id -u tinydns`
TINYDNSGID=`id -g tinydns`

DNSCACHEUID=`id -u dnscache`
DNSCACHEGID=`id -g dnscache`

DNSLOGUID=`id -u dnslog`
DNSLOGGID=`id -g dnslog`

if [ "$1"x == "help"x ]; then
    cat <<HELP
   stop -- stops djbdns service
  start -- starts djbdns service
 status -- displays status of djbdns service
restart -- stops and restarts djbdns service
HELP
    exit 0
fi

if [ "$1"x != "start"x -a "$1"x != "stop"x -a "$1"x != "status"x -a "$1"x != "restart"x ]; then
   echo "Usage: $0 {start|stop|restart|status|help}"
   exit 1
fi

if [ ! -f /etc/sysconfig/djbdns ]; then
   exit 0
fi

cat /etc/sysconfig/djbdns |
while read djb_dir
do

BASENAME=`basename $djb_dir`

case "$1" in
   start)
      echo "Starting djbdns $djb_dir"
      rm -f $djb_dir/down
      ln -sf $djb_dir /service
      svc -u /service/$BASENAME 2> /dev/null

      if [ -d /var/lock/subsys ]; then
         touch /var/lock/subsys/djbdns
      fi
      ;;
   stop)
      echo "Stopping djbdns $djb_dir"
      rm -f /service/$BASENAME
      touch $djb_dir/down

      svc -x $djb_dir 2> /dev/null
      svc -d $djb_dir 2> /dev/null

      svc -x $djb_dir/log 2> /dev/null
      svc -d $djb_dir/log 2> /dev/null

      if [ -f /var/lock/subsys/djbdns ]; then
         rm /var/lock/subsys/djbdns
      fi
      ;;
   status)
      svstat $djb_dir
      svstat $djb_dir/log
      ;;
   restart)
      echo "* Stopping $djb_dir"
      /etc/init.d/djbdns stop

      # Wait more than 5 seconds for svscan to stop service.
      sleep 6

      echo "* Starting $djb_dir."
      /etc/init.d/djbdns start
      ;;
   *)
      echo "Usage: $0 {start|stop|restart|status|help}"
      exit 1
      ;;
esac

done

exit 0

