3c766c51a5254ccae215824f9f1390187d1e6e31
[citadel.git] / citadel / debian / citadel.init
1 #! /bin/sh
2 ### BEGIN INIT INFO
3 # Provides:          skeleton
4 # Required-Start:    $local_fs $remote_fs
5 # Required-Stop:     $local_fs $remote_fs
6 # Default-Start:     2 3 4 5
7 # Default-Stop:      0 1 6
8 # Short-Description: Example initscript
9 # Description:       This file should be used to construct scripts to be
10 #                    placed in /etc/init.d.
11 ### END INIT INFO
12
13 # Author: Foo Bar <foobar@baz.org>
14 #
15 # Please remove the "Author" lines above and replace them
16 # with your own name if you copy and modify this script.
17
18 # Do NOT "set -e"
19
20 # PATH should only include /usr/* if it runs after the mountnfs.sh script
21 RUNDIR=/var/run/citadel
22 PATH=/sbin:/usr/sbin:/bin:/usr/bin
23 DESC="Citadel Groupware "
24 NAME=citserver
25 DAEMON=/usr/sbin/$NAME
26 CTDLSVC=/usr/lib/citadel-server/ctdlsvc
27 DAEMON_ARGS=" -x3 -lmail -t/dev/null"
28 PIDFILE=$RUNDIR/$NAME.pid
29 SCRIPTNAME=/etc/init.d/citadel
30 SENDCOMMAND=/usr/sbin/sendcommand
31
32
33 # Exit if the package is not installed
34 [ -x "$DAEMON" ] || exit 0
35
36 # Read configuration variable file if it is present
37 [ -r /etc/default/$NAME ] && . /etc/default/$NAME
38
39 MODERN=
40
41 # Load the VERBOSE setting and other rcS variables
42 if test -f /lib/init/vars.sh ; then
43     . /lib/init/vars.sh
44     MODERN=1
45 fi
46 # Define LSB log_* functions.
47 # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
48 if test -f /lib/lsb/init-functions; then
49     . /lib/lsb/init-functions
50     MODERN=1
51 fi
52
53 #
54 # Function that starts the daemon/service
55 #
56 do_start()
57 {
58         # for ubuntu: check our volatile dirs.
59         if test ! -d $RUNDIR; then
60             mkdir -p $RUNDIR
61         fi
62         # Return
63         #   0 if daemon has been started
64         #   1 if daemon was already running
65         #   2 if daemon could not be started
66         if $CTDLSVC $PIDFILE $DAEMON \
67                 $DAEMON_ARGS ; then
68             return 0
69         else
70             return 2
71         fi
72         # Add code here, if necessary, that waits for the process to be ready
73         # to handle requests from services started subsequently which depend
74         # on this one.  As a last resort, sleep for some time.
75 }
76
77 #
78 # Function that stops the daemon/service
79 #
80 do_stop()
81 {
82         # Return
83         #   0 if daemon has been stopped
84         #   1 if daemon was already stopped
85         #   2 if daemon could not be stopped
86         #   other if a failure occurred
87         if $SENDCOMMAND "DOWN" >/dev/null 2>&1 ; then
88             rm -f $PIDFILE
89
90             while test -S /var/run/citadel/citadel.socket; do 
91                 sleep 1
92                 echo -n "."
93             done
94                 return 0
95         else
96             rm -f $PIDFILE
97             return 2
98         fi
99
100         #while test -d /proc/`cat $PIDFILE`; do
101         #    /usr/bin/printf  '.'
102         #    /bin/sleep 1
103         #done
104  
105         #start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
106         #RETVAL="$?"
107         #[ "$RETVAL" = 2 ] && return 2
108         # Wait for children to finish too if this is a daemon that forks
109         # and if the daemon is only ever run from this initscript.
110         # If the above conditions are not satisfied then add some other code
111         # that waits for the process to drop all resources that could be
112         # needed by services started subsequently.  A last resort is to
113         # sleep for some time.
114         #start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
115         #[ "$?" = 2 ] && return 2
116         # Many daemons don't delete their pidfiles when they exit.
117         # rm -f $PIDFILE
118 }
119
120 #
121 # Function that sends a SIGHUP to the daemon/service
122 #
123 do_reload() {
124         #
125         # If the daemon can reload its configuration without
126         # restarting (for example, when it is sent a SIGHUP),
127         # then implement that here.
128         #
129 #       start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
130         do_stop
131         do_start
132         return 0
133 }
134
135 case "$1" in
136   start)
137         if test -n "$MODERN"; then
138             [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
139         else
140             echo "Starting $DESC" "$NAME"
141         fi
142
143         do_start
144         if test -n "$MODERN"; then
145             case "$?" in
146                 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
147                 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
148             esac
149         fi
150         ;;
151   stop)
152         if test -n "$MODERN"; then
153             [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
154         else
155             echo "Stopping $DESC" "$NAME"
156         fi
157         do_stop
158         if test -n "$MODERN"; then
159             case "$?" in
160                 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
161                 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
162             esac
163         fi
164         ;;
165   #reload|force-reload)
166         #
167         # If do_reload() is not implemented then leave this commented out
168         # and leave 'force-reload' as an alias for 'restart'.
169         #
170         #log_daemon_msg "Reloading $DESC" "$NAME"
171         #do_reload
172         #log_end_msg $?
173         #;;
174   restart|force-reload)
175         #
176         # If the "reload" option is implemented then remove the
177         # 'force-reload' alias
178         #
179         if test -n "$MODERN"; then
180             log_daemon_msg "Restarting $DESC" "$NAME"
181         else
182             echo "Restarting $DESC" "$NAME"
183         fi
184
185         do_stop
186
187         if test -n "$MODERN"; then
188             case "$?" in
189                 0|1)
190                     do_start
191                     case "$?" in
192                         0) log_end_msg 0 ;;
193                         1) log_end_msg 1 ;; # Old process is still running
194                         *) log_end_msg 1 ;; # Failed to start
195                     esac
196                     ;;
197                 *)
198                 # Failed to stop
199                     log_end_msg 1
200                     ;;
201             esac
202         fi
203         ;;
204   *)
205         #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
206         echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
207         exit 3
208         ;;
209 esac
210
211 :