#!/bin/sh ############################################################################## # # Copyright (c) 2002, 2006 Nexedi SARL and Contributors. All Rights Reserved. # Kevin Deldycke # # WARNING: This program as such is intended to be used by professional # programmers who take the whole responsability of assessing all potential # consequences resulting from its eventual inadequacies and bugs # End users who are looking for a ready-to-use solution with commercial # garantees and support are strongly adviced to contract a Free Software # Service Company # # This program is Free Software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## # Startup script for a oood server based on zope startup script # # chkconfig: 2345 29 71 # description: oood, the standalone server for converting various types of docs to/from OpenOffice format # Source function library. . /etc/rc.d/init.d/functions NAME="oood" USER=oood OOOD_CONFIG_FILE=/etc/oood/oood.conf #change this if want to use another config file HOME=$(awk -F= ' /^oood_home/ { print $2 }' $OOOD_CONFIG_FILE ) RUNDIR=$(awk -F= ' /^run_dir/ { print $2 }' $OOOD_CONFIG_FILE ) UNOPATH=$(awk -F= ' /^uno_path/ { print $2 }' $OOOD_CONFIG_FILE ) MAX_WAIT_TIME=120 #Maximum time to wait for the server to create pid file MAX_RETRYS=$(($MAX_WAIT_TIME/5)) LOCKFILE=$RUNDIR/server_pid.lock PIDFILE=$LOCKFILE PYTHON=python start() { if [ -f $LOCKFILE ] ; then gprintf "Another instance of %s is running (lockfile $LOCKFILE exists)." "$NAME" echo_failure echo exit 4 fi gprintf "Starting %s: " "$NAME" rm -rf $RUNDIR/* # Start the server in the background su --login $USER --command="$PYTHON $HOME/runserw.py --start > /dev/null &" # Waiting for the lock file to be created by the server # We will check file existence at most MAX_RETRYS times, waiting 5 secs. # between retrys. RETR_NO=0 while [ $RETR_NO -lt $MAX_RETRYS ]; do if [ -f $LOCKFILE ]; then echo_success echo exit 0 fi sleep 5 RETR_NO=$(($RETR_NO+1)) done gprintf "%s is not running (no pid file ${PIDFILE} found)." "$NAME" su --login $USER --command="$PYTHON $HOME/start.py --flush > /dev/null 2>&1 /dev/null" rm -f $LOCKFILE echo_failure } stop() { if [ ! -f $LOCKFILE ] ; then gprintf "%s is not running (no lockfile found)." "$NAME" echo_failure else gprintf "Stopping %s daemon: " "$NAME" su --login $USER --command="$PYTHON $HOME/runserw.py --stop" && echo_success || echo_failure fi # Clean up in any case su --login $USER --command="$PYTHON $HOME/start.py --flush > /dev/null 2>&1 /dev/null" echo } status() { echo su --login $USER --command="$PYTHON $HOME/runserw.py --status" echo su --login $USER --command="$PYTHON $HOME/start.py --status" echo } case "$1" in start) touch /var/lock/subsys/$NAME start ;; stop) stop rm -f /var/lock/subsys/$NAME rm -f $LOCKFILE #sometimes is not removed by runserv.py ;; restart) stop start ;; status) status ;; *) gprintf "Usage: %s\n" "$0 {start|stop|restart|status}" exit 1 esac exit