#! /bin/sh
#
# Copyright (c) 2004, SWITCH - Teleinformatikdienste fuer Lehre und Forschung
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# * Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
# * Neither the name of SWITCH nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# $Author: peter $
#
# $Id: nfsen.rc 34 2005-07-18 12:53:55Z peter $
#
# $LastChangedRevision: 34 $
# Include NFSEN settings
. /usr/local/nfsen/etc/nfsen-shell-param
RunUser=`whoami`;
# Make sure all pid files are valid - the processes must exist and run
$BINDIR/pid_check.pl
case "$1" in
start)
echo -n "Starting nfcpad: "
for line in $SOURCES ; do
ident=`echo $line | sed -e " s/:.*//"`;
port=`echo $line | sed -e " s/.*://"`;
pidfile="$VARDIR/run/$ident.pid"
if [ $RunUser = 'root' ]; then
args="-w -D -I $ident -p $port -u $USER -g $GROUP $BUFFLEN -l $PROFILEDATADIR/live/$ident"
elif [ $RunUser = $USER ]; then
args="-w -D -I $ident -p $port -l $PROFILEDATADIR/live/$ident"
else
echo "Hello '$RunUser'"
echo "Only user '$USER' or 'root' wants to run $0 start/stop";
exit 1;
fi
profiler="$PREFIX/nfprofile -q -p $PROFILEDATADIR -s $ident -r %d/%f"
echo -n "$ident "
if [ -f $pidfile ]; then
echo "Already running! "
else
$PREFIX/nfcapd $args -P $pidfile -x "$profiler"
fi
done
echo "done."
pidfile="$VARDIR/run/nfsen-run.pid"
if [ -f $pidfile ]; then
echo "nfsen-run is already running!"
else
echo -n "Starting nfsen-run: "
$BINDIR/nfsen-run
echo "done."
fi
;;
stop)
if [ $RunUser != 'root' -o $RunUser != $RunUser ]; then
echo "Hello '$RunUser'"
echo "Only user '$USER' or 'root' wants to run $0 start/stop";
exit 1;
fi
echo -n "Stopping nfsen-run: "
pidfile="$VARDIR/run/nfsen-run.pid"
if [ ! -f $pidfile ]; then
echo "Missing pid file $pidfile to stop nfsen-run."
else
pid=`cat $pidfile`;
echo -n "nfsen-run:${pid} "
# if kill returns an error code, it could not signal nfsen-run
# therefore process may not exists. Clean up old pid file
kill -TERM $pid || echo Signal error $?
# wait for nfsen-run to exit
echo -n "Wait for nfsen-run to exit "
x=0; # initialize x to 0
while [ -f $pidfile -a "$x" -le 120 ]; do
# increment the value of x:
x=$(expr $x + 1)
sleep 1
echo -n "."
done
if [ -f $pidfile ]; then
echo
echo "nfsen-run did not exit within 2 minutes - give up waiting"
fi
fi
echo "done."
echo -n "Stopping nfcpad: "
for line in $SOURCES ; do
ident=`echo $line | sed -e " s/:.*//"`;
port=`echo $line | sed -e " s/.*://"`;
pidfile="$VARDIR/run/$ident.pid"
if [ ! -f $pidfile ]; then
echo "Missing pid file $pidfile to stop ident: $ident"
else
pid=`cat $pidfile`;
echo -n "${ident}:${pid} "
# if kill returns an error code, it could not signal nfcapd
# therefore process may not exists. Clean up old pid file
kill -TERM $pid
fi
done
echo "done."
;;
#reload)
#
# not unsed
#;;
#restart|force-reload)
#
# not unsed
#;;
*)
"Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0