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