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