]> git.pld-linux.org Git - packages/bind.git/blob - named.init
Up to 9.18.7.
[packages/bind.git] / named.init
1 #!/bin/sh
2 #
3 # named         This shell script takes care of starting and stopping
4 #               named (BIND DNS server).
5 #
6 # chkconfig:    345 11 89
7 #
8 # description:  named (BIND) is a Domain Name Server (DNS) \
9 #               that is used to resolve host names to IP addresses.
10
11 CHROOT_TO_DIR="/var/lib/named"
12
13 # Source function library
14 . /etc/rc.d/init.d/functions
15
16 # Source networking configuration
17 . /etc/sysconfig/network
18
19 NAMED_OPT=""
20
21 # Try get config..
22 [ -f /etc/sysconfig/named ] && . /etc/sysconfig/named
23
24 # Check that networking is up.
25 if is_yes "${NETWORKING}"; then
26         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
27                 msg_network_down "Named"
28                 exit 1
29         fi
30 else
31         exit 0
32 fi
33
34 # Sanity check
35 [ -e /etc/named.conf ] || exit 0
36
37 [ -n "$NUM_CPUS" ] && NAMED_OPT="$NAMED_OPT -n $NUM_CPUS"
38
39 # configtest itself
40 configtest() {
41         /usr/bin/named-checkconf -j -t $CHROOT_TO_DIR 2>&1
42         return $?
43 }
44
45 checkconfig() {
46         local details=${1:-0}
47
48         if [ $details -eq 1 ]; then
49                 # run config test and display report (status action)
50                 show "Checking %s configuration" "Named"; busy
51                 local out
52                 out=`configtest 2>&1`
53                 RETVAL=$?
54                 [ $RETVAL -eq 0 ] && ok || fail
55                 [ "$out" ] && echo >&2 "$out"
56         else
57                 # run config test and abort with nice message if failed
58                 # (for actions checking status before action).
59                 show "Checking %s configuration" "Named"; busy
60                 configtest >/dev/null 2>&1
61                 RETVAL=$?
62                 if [ $RETVAL -eq 0 ]; then
63                         ok
64                 else
65                         fail
66                         nls 'Configuration test failed. See details with %s "checkconfig"' $0
67                         exit $RETVAL
68                 fi
69         fi
70 }
71
72 start() {
73         # Check if the service is already running?
74         if [ -f /var/lock/subsys/named ]; then
75                 msg_already_running "Named"
76                 return
77         fi
78
79         [ "$1" -eq 0 ] || checkconfig
80         msg_starting "Named"
81         modprobe -s capability > /dev/null 2>&1
82         [ -f /etc/localtime ] && cp -puL /etc/localtime $CHROOT_TO_DIR/etc/localtime
83         touch $CHROOT_TO_DIR/named.log && \
84                 chown named:named $CHROOT_TO_DIR/named.log
85         daemon --pidfile $CHROOT_TO_DIR/named.pid /usr/sbin/named -u named \
86                 -t $CHROOT_TO_DIR -c /etc/named.conf $NAMED_OPT </dev/null
87         RETVAL=$?
88         [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
89 }
90
91 stop() {
92         if [ ! -f /var/lock/subsys/named ]; then
93                 msg_not_running "Named"
94                 return
95         fi
96
97         msg_stopping "Named"
98         killproc --pidfile $CHROOT_TO_DIR/named.pid named
99         rm -f /var/lock/subsys/named >/dev/null 2>&1
100 }
101
102 reload() {
103         if [ ! -f /var/lock/subsys/named ]; then
104                 msg_not_running "Named"
105                 RETVAL=7
106                 return
107         fi
108
109         checkconfig
110         if [ -f /etc/rndc.conf ]; then
111                 run_cmd "$(nls 'Reloading %s service' 'Named')" /usr/sbin/rndc reload
112         else
113                 msg_reloading "Named"
114                 killproc named -HUP
115                 RETVAL=$?
116         fi
117 }
118
119 condrestart() {
120         if [ ! -f /var/lock/subsys/named ]; then
121                 msg_not_running "Named"
122                 RETVAL=$1
123                 return
124         fi
125
126         checkconfig
127         stop
128         start
129 }
130
131 RETVAL=0
132 # See how we were called.
133 case "$1" in
134   start)
135         start
136         ;;
137   stop)
138         stop
139         ;;
140   restart)
141         checkconfig
142         stop
143         start
144         ;;
145   try-restart)
146         condrestart 0
147         ;;
148   reload|force-reload)
149         reload
150         ;;
151   checkconfig|configtest)
152         checkconfig 1
153         ;;
154   status)
155         status named
156         RETVAL=$?
157         if [ -f /etc/rndc.conf ]; then
158                 /usr/sbin/rndc status
159                 RET=$?
160                 if [ $RET -ne 0 ]; then
161                         RETVAL=$RET
162                 fi
163         fi
164         ;;
165   *)
166         msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|configtest|status}"
167         exit 3
168 esac
169
170 exit $RETVAL
This page took 0.042648 seconds and 3 git commands to generate.