#!/bin/sh
# pdns This is controller stript for PowerDNS name server.
#
-# chkconfig: 345 80 75
+# chkconfig: 345 85 15
#
# description: pdns is is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
. /etc/sysconfig/network
# Check that networking is up.
-if is_no "${NETWORKING}"; then
- msg_network_down "pdns"
- exit 1
+if is_yes "${NETWORKING}"; then
+ if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+ msg_network_down "PowerDNS"
+ exit 1
+ fi
+else
+ exit 0
fi
BINARYPATH=/usr/sbin
cd /var/run
suffix=`basename $0 | awk -F- '{print $2}'`
-if [ $suffix ]
-then
+if [ $suffix ]; then
EXTRAOPTS=--config-name=$suffix
PROGNAME=pdns-$suffix
else
pdns_server="/usr/sbin/pdns_server $EXTRAOPTS"
doPC() {
- ret=$(/usr/sbin/pdns_control $EXTRAOPTS $1 $2 2> /dev/null)
+ ret=$(/usr/bin/pdns_control $EXTRAOPTS $1 $2 2> /dev/null)
}
-if [ "$1" != "mrtg" -a "$1" != "cricket" ]
-then
- echo -n "$PROGNAME: "
-fi
-
doPC ping
NOTRUNNING=$?
+RETVAL=0
case "$1" in
- status)
- if test "$NOTRUNNING" = "0"
- then
- doPC status
- echo $ret
- else
- echo "not running"
- fi
- ;;
-
- stop)
- if test "$NOTRUNNING" = "0"
- then
- doPC quit
- echo $ret
- else
- echo "not running"
- fi
- ;;
-
- force-stop)
- killall -v -9 pdns_server
+ status)
+ status pdns_server
+ exit $?
;;
-
- start)
- if test "$NOTRUNNING" = "0"
- then
- echo "already running"
- else
- $pdns_server --daemon --guardian=yes
- if test "$?" = "0"
- then
- echo "started"
- fi
- fi
- ;;
-
- force-reload | restart)
- echo -n stopping and waiting
- doPC quit
- sleep 3
- echo
- $0 start
+ stop)
+ if test "$NOTRUNNING" = "0"; then
+ msg_stopping "PowerDNS"
+ doPC quit 2>&1 >/dev/null
+ [ $? -eq 0 ] && ok || fail
+ rm /var/lock/subsys/pdns
+ else
+ msg_not_running "PowerDNS"
+ fi
;;
-
- reload)
- if test "$NOTRUNNING" = "0"
- then
- doPC cycle
- echo requested reload
- else
- echo not running yet
- $0 start
- fi
- ;;
-
- monitor)
- if test "$NOTRUNNING" = "0"
- then
- echo "already running"
- else
- $pdns_server --daemon=no --guardian=no --control-console --loglevel=9
- fi
- ;;
-
- dump)
- if test "$NOTRUNNING" = "0"
- then
- doPC list
- echo $ret
- else
- echo "not running"
- fi
- ;;
-
- show)
- if [ $# -lt 2 ]
- then
- echo Insufficient parameters
- exit
- fi
- if test "$NOTRUNNING" = "0"
- then
- echo -n "$2="
- doPC show $2 ; echo $ret
- else
- echo "not running"
- fi
- ;;
-
- mrtg)
- if [ $# -lt 2 ]
- then
- echo Insufficient parameters
- exit
- fi
- if test "$NOTRUNNING" = "0"
- then
- doPC show $2 ; echo $ret
- if [ "$3x" != "x" ]
- then
- doPC show $3 ; echo $ret
- else
- echo 0
- fi
- doPC uptime ; echo $ret
- echo PowerDNS daemon
+ force-stop)
+ run_cmd "Killing PowerDNS without grace" killall -v -9 pdns_server
+ ;;
+ start)
+ if test "$NOTRUNNING" = "0"; then
+ msg_already_running "PowerDNS"
+ else
+ msg_starting "PowerDNS (Powered DNS server)"
+ daemon $pdns_server --daemon --guardian=yes
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/pdns
+ fi
+ ;;
+ restart)
+ $0 stop
+ run_cmd "PowerDNS (3 sec. timeout)" sleep 3
+ $0 start
+ exit $?
+ ;;
+ reload|force-reload)
+ if test "$NOTRUNNING" = "0"; then
+ show "Reloading PowerDNS"
+ doPC cycle 2>&1 >/dev/null
+ if [ $? -eq 0 ]; then
+ ok
else
- echo "not running"
- fi
-
- ;;
-
- cricket)
- if [ $# -lt 2 ]
- then
- echo Insufficient parameters
- exit
- fi
- if test "$NOTRUNNING" = "0"
- then
- doPC show $2 ; echo $ret
+ fail
+ RETVAL=1
+ fi
+ else
+ msg_not_running "PowerDNS" >&2
+ exit 7
+ fi
+ ;;
+ monitor)
+ if test "$NOTRUNNING" = "0"; then
+ msg_already_running "PowerDNS"
+ else
+ show "PowerDNS in foreground (testing mode)"
+ $pdns_server --daemon=no --guardian=no --control-console --loglevel=9
+ fi
+ ;;
+ dump)
+ if test "$NOTRUNNING" = "0"; then
+ doPC list
+ echo $ret
+ else
+ msg_not_running "PowerDNS"
+ fi
+ ;;
+ show)
+ if [ $# -lt 2 ]; then
+ msg_usage "$0 {show|mrtg|cricket} <variable_name_from_pdns_dump>"
+ exit 2
+ fi
+ if test "$NOTRUNNING" = "0"; then
+ echo -n "$2="
+ doPC show $2 ; echo $ret
+ else
+ msg_not_running "PowerDNS"
+ fi
+ ;;
+ mrtg)
+ if [ $# -lt 2 ]; then
+ msg_usage "$0 {show|mrtg|cricket} <variable_name_from_pdns_dump>"
+ exit 2
+ fi
+ if test "$NOTRUNNING" = "0"; then
+ doPC show $2 ; echo $ret
+ if [ "$3x" != "x" ]; then
+ doPC show $3 ; echo $ret
else
- echo "not running"
- fi
-
- ;;
-
-
-
- *)
- echo pdns [start\|stop\|force-reload\|restart\|status\|dump\|show\|mrtg\|cricket\|monitor]
-
+ echo 0
+ fi
+ doPC uptime ; echo $ret
+ echo PowerDNS daemon
+ else
+ msg_not_running "PowerDNS" >&2
+ exit 7
+ fi
;;
+ cricket)
+ if [ $# -lt 2 ]; then
+ msg_usage "$0 {show|mrtg|cricket} <variable_name_from_pdns_dump>"
+ exit 2
+ fi
+ if test "$NOTRUNNING" = "0"; then
+ doPC show $2 ; echo $ret
+ else
+ msg_not_running "PowerDNS" >&2
+ exit 7
+ fi
+ ;;
+ *)
+ msg_usage "$0 {start|stop|restart|reload|force-reload|status|dump|show|mrtg|cricket|monitor} [...]"
+ exit 3
esac
-
+exit $RETVAL