336e0c | 2004-12-26 | Per Hedbor | | #!/bin/sh
DEFINES=""
ARGS=""
once=0
if [ "x$PIKE" = "x" ]; then
PIKE=pike
fi
if [ -f @DIR@/CVS/Entries ] ; then
VERSION="cvs-@VERSION@"
else
VERSION="@VERSION@"
fi
LOG='@DIR@/logs/server-debug'
DEFLOG="$LOG"
PIDFILE="$HOME/.aido/pid"
DEFPIDFILE="$PIDFILE"
while [ ! c"$1" = "c" ] ; do
case "$1" in
-D*|-d*|-t*)
DEFINES="$DEFINES $1"
;;
'--once')
once=1
;;
'--kill'|'--stop')
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
echo Killing server with PID $PID
kill $PID && wait $PID 2>/dev/null
fi
exit 0
;;
'--restart')
#FIXME: Doesn't use last sessions options.
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
echo Restarting server with PID $PID in the background.
kill -HUP $PID
fi
exit 0
;;
'--nossl'|'--no-sll')
DEFINES="-DNOSSL $DEFINES"
;;
'--debug'|'--with-debug'|'--enable-debug')
DEBUG=1
DEFINES="-DVP_DEBUG $DEFINES"
;;
'--version')
echo "AIDO MediaPlayer backend server $VERSION"
exit 0
;;
'--log=*')
LOG=`echo $1 | sed -e 's/--log=//'`
;;
'--pid-file=*')
PIDFILE=`echo $1 | sed -e 's/--pid-file=//'`
;;
'--help'|'-?')
sed -e "s/\\.B/`tput 'bold' 2>/dev/null`/g" -e "s/B\\./`tput 'sgr0' 2>/dev/null`/g" << EOF
This command will start the AIDO MediaPlayer backend server (version $VERSION).
Installation directory: @DIR@
Options:
.B--versionB.: Output version information
.B--help -?B.: This information.
.B--offlineB.: Indicate that there is no network connection
available. Disables metaserver access.
.B--debugB.: Output more debug information
.B--no-sslB.: Run without SSL-support. A normal HTTP-port will
opened instead of a HTTPS-port.
.B--onceB.: Run the server only once, in the foreground.
The default behaviour is to run it in a loop in the
background.
.B--kill --stopB.: Kill the running server, without restarting it
.B--restartB.: Kill the running server, restarting it afterwards
.B--log=fileB.: Use the specified file as the debug log.
default is $DEFLOG
.B--pid-file=fileB.: Use the specified file as the PID file.
default is $DEFPIDFILE
EOF
tput 'rmso' 2>/dev/null
exit 0
;;
*)
ARGS="$ARGS $1"
;;
esac
shift
done
cd "@DIR@/programs/server"
ARGS="$DEFINES -M../../pike-modules main.pike $ARGS"
rotate_log() {
mv -f "$LOG.old" "$LOG.older" 2>/dev/null
mv -f "$LOG" "$LOG.old" 2>/dev/null
}
start_server() {
if [ ! x$DEBUG = x ] ; then
echo cd "@DIR@/programs/server"
pikeversion=`$PIKE --version 2>&1 | head -1`
echo "Pike version: $pikeversion."
echo exec $PIKE "$ARGS"
fi
$PIKE $ARGS &
AIDO_PID=$!
wait $AIDO_PID
AIDO_PID=""
}
signal_exit() {
trap "" 2 15
if [ "x$AIDO_PID" != "x" ]; then
kill $AIDO_PID && wait $AIDO_PID 2>/dev/null
fi
exit
}
signal_hup() {
if [ "x$AIDO_PID" != "x" ]; then
kill $AIDO_PID
fi
}
AIDO_PID=""
if [ x$once = 'x0' ] ; then
if [ -f $PIDFILE ]; then
PID=`cat $PIDFILE`
if kill -0 $PID 2>/dev/null ; then
echo Server already running with PID $PID.
exit 1
fi
fi
echo Starting server in the background.
(
trap signal_exit 2 15
trap signal_hup 1
while : ; do
rotate_log ;
start_server > $LOG 2>&1 < /dev/null
done
) >/dev/null 2>&1 &
#FIXME: Check that dirname $PIDFILE exists.
test -d $HOME/.aido || mkdir $HOME/.aido
echo $! >$PIDFILE
else
trap signal_exit 2 15
echo $$ >$PIDFILE
start_server
fi
|