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