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