Home | History | Annotate | Line # | Download | only in contrib
      1      1.1  christos #!/bin/sh
      2      1.1  christos #
      3      1.1  christos # unbound	This shell script takes care of starting and stopping
      4      1.1  christos #		unbound (DNS server).
      5      1.1  christos #
      6      1.1  christos # chkconfig:   - 14 86
      7      1.1  christos # description:	unbound is a Domain Name Server (DNS) \
      8      1.1  christos #		that is used to resolve host names to IP addresses.
      9      1.1  christos 
     10      1.1  christos ### BEGIN INIT INFO
     11      1.1  christos # Provides: $named unbound
     12      1.1  christos # Required-Start: $network $local_fs
     13      1.1  christos # Required-Stop: $network $local_fs
     14      1.1  christos # Should-Start: $syslog
     15      1.1  christos # Should-Stop: $syslog
     16      1.1  christos # Short-Description: unbound recursive Domain Name Server.
     17      1.1  christos # Description:  unbound is a Domain Name Server (DNS) 
     18      1.1  christos #		that is used to resolve host names to IP addresses.
     19      1.1  christos ### END INIT INFO
     20      1.1  christos 
     21      1.1  christos # Source function library.
     22      1.1  christos . /etc/init.d/functions
     23      1.1  christos 
     24      1.1  christos exec="/usr/sbin/unbound"
     25      1.1  christos prog="unbound"
     26      1.1  christos config="/etc/unbound/unbound.conf"
     27      1.1  christos pidfile="/var/unbound/unbound.pid"
     28      1.1  christos rootdir="/var/unbound"
     29      1.1  christos 
     30      1.1  christos [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
     31      1.1  christos 
     32      1.1  christos lockfile=/var/lock/subsys/$prog
     33      1.1  christos 
     34      1.1  christos start() {
     35      1.1  christos     [ -x $exec ] || exit 5
     36      1.1  christos     [ -f $config ] || exit 6
     37      1.1  christos     echo -n $"Starting $prog: "
     38      1.1  christos 
     39      1.1  christos     # setup root jail
     40      1.1  christos     if [ -s /etc/localtime ]; then 
     41      1.1  christos 	[ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ;
     42      1.1  christos 	if [ ! -e ${rootdir}/etc/localtime ] || ! /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then
     43      1.1  christos 	    cp -fp /etc/localtime ${rootdir}/etc/localtime
     44      1.1  christos 	fi;
     45      1.1  christos     fi;
     46      1.1  christos     if [ -s /etc/resolv.conf ]; then
     47      1.1  christos 	[ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ;
     48      1.1  christos 	if [ ! -e ${rootdir}/etc/resolv.conf ] || ! /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then
     49      1.1  christos 	    cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf
     50      1.1  christos 	fi;
     51      1.1  christos     fi;
     52      1.1  christos     if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then
     53      1.1  christos 	[ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ;
     54      1.1  christos 	[ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log
     55      1.1  christos 	mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1;
     56      1.1  christos     fi;
     57      1.1  christos     if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then
     58      1.1  christos 	[ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ;
     59      1.1  christos 	[ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random
     60      1.1  christos 	mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1;
     61      1.1  christos     fi;
     62      1.1  christos 
     63      1.1  christos     # if not running, start it up here
     64      1.1  christos     daemonize $exec
     65      1.1  christos     retval=$?
     66      1.1  christos     echo
     67      1.1  christos     [ $retval -eq 0 ] && touch $lockfile
     68      1.1  christos     return $retval
     69      1.1  christos }
     70      1.1  christos 
     71      1.1  christos stop() {
     72      1.1  christos     echo -n $"Stopping $prog: "
     73      1.1  christos     # stop it here, often "killproc $prog"
     74      1.1  christos     killproc $prog
     75      1.1  christos     retval=$?
     76      1.1  christos     echo
     77      1.1  christos     [ $retval -eq 0 ] && rm -f $lockfile
     78  1.1.1.2  christos     [ $retval -eq 0 ] && rm -f $pidfile
     79      1.1  christos     if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then
     80      1.1  christos 	umount ${rootdir}/dev/log >/dev/null 2>&1
     81      1.1  christos     fi;
     82      1.1  christos     if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then
     83      1.1  christos 	umount ${rootdir}/dev/random >/dev/null 2>&1
     84      1.1  christos     fi;
     85      1.1  christos     return $retval
     86      1.1  christos }
     87      1.1  christos 
     88      1.1  christos restart() {
     89      1.1  christos     stop
     90      1.1  christos     start
     91      1.1  christos }
     92      1.1  christos 
     93      1.1  christos reload() {
     94      1.1  christos     kill -HUP `cat $pidfile`
     95      1.1  christos }
     96      1.1  christos 
     97      1.1  christos force_reload() {
     98      1.1  christos     restart
     99      1.1  christos }
    100      1.1  christos 
    101      1.1  christos rh_status() {
    102      1.1  christos     # run checks to determine if the service is running or use generic status
    103      1.1  christos     status $prog
    104      1.1  christos }
    105      1.1  christos 
    106      1.1  christos rh_status_q() {
    107      1.1  christos     rh_status -p $pidfile >/dev/null 2>&1
    108      1.1  christos }
    109      1.1  christos 
    110      1.1  christos case "$1" in
    111      1.1  christos     start)
    112      1.1  christos         rh_status_q && exit 0
    113      1.1  christos         $1
    114      1.1  christos         ;;
    115      1.1  christos     stop)
    116      1.1  christos         rh_status_q || exit 0
    117      1.1  christos         $1
    118      1.1  christos         ;;
    119      1.1  christos     restart)
    120      1.1  christos         $1
    121      1.1  christos         ;;
    122      1.1  christos     reload)
    123      1.1  christos         rh_status_q || exit 7
    124      1.1  christos         $1
    125      1.1  christos         ;;
    126      1.1  christos     force-reload)
    127      1.1  christos         force_reload
    128      1.1  christos         ;;
    129      1.1  christos     status)
    130      1.1  christos         rh_status
    131      1.1  christos         ;;
    132      1.1  christos     condrestart|try-restart)
    133      1.1  christos         rh_status_q || exit 0
    134      1.1  christos         restart
    135      1.1  christos         ;;
    136      1.1  christos     *)
    137      1.1  christos         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    138      1.1  christos         exit 2
    139      1.1  christos esac
    140      1.1  christos exit $?
    141