#!/bin/bash # # zarafa-server Zarafa Outlook Sharing server # # chkconfig: - 85 25 # description: The Zarafa server is the main server process. # processname: /usr/bin/zarafa-server # config: /etc/zarafa/server.cfg # pidfile: /var/run/zarafa-server.pid ### BEGIN INIT INFO # Provides: zarafa-server # Required-Start: $local_fs $network $remote_fs $syslog # Required-Stop: $local_fs $network $remote_fs $syslog # Should-Start: mysqld # Should-Stop: mysqld # Short-Description: Zarafa Outlook Sharing server # Description: The Zarafa server is the main server process. ### END INIT INFO SERVERCONFIG=/etc/zarafa/server.cfg SERVERPROGRAM=/usr/bin/zarafa-server # Sanity checks. [ -x $SERVERPROGRAM ] || exit 0 SERVERCONFIG_OPT="" [ ! -z $SERVERCONFIG -a -f $SERVERCONFIG ] && SERVERCONFIG_OPT="-c $SERVERCONFIG" [ -f /etc/sysconfig/zarafa ] && . /etc/sysconfig/zarafa # Source function library. . /etc/rc.d/init.d/functions if [ -z "$ZARAFA_LOCALE" ]; then ZARAFA_LOCALE="C" fi RETVAL=0 server=`basename $SERVERPROGRAM` lockfile=/var/lock/subsys/$server pidfile=/var/run/$server.pid start() { # Start in background, always succeeds gprintf "Starting %s: " "$server" export LC_ALL=$ZARAFA_LOCALE export LANG=$ZARAFA_LOCALE daemon $SERVERPROGRAM $SERVERCONFIG_OPT RETVAL=$? unset LC_ALL LANG echo [ $RETVAL -eq 0 ] && touch $lockfile return $RETVAL } stop() { if [ -f /tmp/zarafa-upgrade-lock ]; then echo gprintf "Zarafa database upgrade is taking place.\n" gprintf "Do not stop this process bacause it may render your database unusable.\n" echo exit 1 fi # Cannot use killproc, because it has no timeout feature; # zarafa-server may take up to 60 seconds to shutdown. ZARAFAPID=`cat /var/run/zarafa-server.pid 2>/dev/null` if [ -z "$ZARAFAPID" -o ! -n "$ZARAFAPID" ]; then gprintf "Program ID of %s not found, trying to stop anyway: " "$server" killall $SERVERPROGRAM >/dev/null 2>&1 RETVAL=$? echo if [ $RETVAL -eq 0 ]; then failure "Stopping %s: " "$server" else success "Stopping %s: " "$server" fi else gprintf "Stopping %s: " "$server" TIMEOUT=65 /bin/kill $ZARAFAPID >/dev/null 2>&1 if [ $? -eq 0 ]; then while [ $TIMEOUT -gt 0 ]; do /bin/kill -0 $ZARAFAPID >/dev/null 2>&1 || break sleep 1 TIMEOUT=$[${TIMEOUT}-1] done if [ $TIMEOUT -eq 0 ]; then failure "Timeout on stopping %s" "$server" RETVAL=1 else success "Stopping %s: " "$server" RETVAL=0 fi else failure "Stopping %s: " "$server" fi echo fi [ $RETVAL -eq 0 ] && rm -f $lockfile return $RETVAL } restart() { stop start } reload() { gprintf "Restarting %s: " "$server" killproc $SERVERPROGRAM -SIGHUP RETVAL=$? echo return $RETVAL } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $server RETVAL=$? ;; restart|force-reload) restart ;; condrestart|try-restart) if [ -f ${pidfile} ]; then stop start fi ;; reload) reload ;; *) gprintf "Usage: %s {start|stop|status|reload|restart|condrestart|force-reload|try-restart}\n" "$server" RETVAL=1 ;; esac exit $RETVAL