b1fca01996-11-12Per Hedbor #!/bin/sh
fd12951997-09-07Henrik Grubbström (Grubba) #
7217cd1998-03-01Per Hedbor # $Id: start,v 1.27 1998/03/01 02:49:52 per Exp $
b1fca01996-11-12Per Hedbor 
82f5191997-03-02Per Hedbor VERSION=201; BETA=.a;
b1fca01996-11-12Per Hedbor  # Can be set with '--config-dir=DIR' DIR=../configurations/ LOGDIR=../logs/ FILES="default"
3c31841998-03-01Per Hedbor # Enable threads (if available) on Solaris. # Most other OS's have thread bugs that cause them or Roxen to crash. if uname | grep 'SunOS' >/dev/null 2>&1; then if uname -r | grep '5\.[5-9]' >/dev/null 2>&1; then echo 'Solaris 2.5 or later detected. Enabling threads (if available).' DEFINES="$DEFINES -DENABLE_THREADS" fi fi
fd12951997-09-07Henrik Grubbström (Grubba) # Roxen will create files as the initial user, # which it expects to be able to read as the run-time user. umask 022
1c48181997-03-02Henrik Grubbström (Grubba) # Pike default Master-program
7cb64f1998-01-17Henrik Grubbström (Grubba) if [ "x$PIKE_MASTER" = "x" ]; then
7217cd1998-03-01Per Hedbor  if [ -f lib/master.pike ]; then DEFINES="$DEFINES -mlib/master.pike"
7cb64f1998-01-17Henrik Grubbström (Grubba)  else # This is used with localinstall if [ -f ../pike/src/lib/master.pike ]; then DEFINES="$DEFINES -m../pike/src/lib/master.pike" fi
4fed401997-04-16Henrik Grubbström (Grubba)  fi
7cb64f1998-01-17Henrik Grubbström (Grubba) else # This is usefull when using several different Pikes. DEFINES="$DEFINES -m$PIKE_MASTER"
d0ee181997-03-01Henrik Grubbström (Grubba) fi
1c48181997-03-02Henrik Grubbström (Grubba)  # Extra module-path
d0ee181997-03-01Henrik Grubbström (Grubba) if [ -d etc/modules ]; then
cf1e7c1997-04-19Henrik Grubbström (Grubba)  DEFINES="$DEFINES -Metc/modules"
1c48181997-03-02Henrik Grubbström (Grubba) fi # Extra include-path if [ -d etc/include ]; then
cf1e7c1997-04-19Henrik Grubbström (Grubba)  DEFINES="$DEFINES -Ietc/include"
1c48181997-03-02Henrik Grubbström (Grubba) fi # Extra include-path (2) if [ -d base_server ]; then
cf1e7c1997-04-19Henrik Grubbström (Grubba)  DEFINES="$DEFINES -Ibase_server"
d0ee181997-03-01Henrik Grubbström (Grubba) fi
b1fca01996-11-12Per Hedbor 
7e1aee1997-08-10Henrik Grubbström (Grubba) # Extra kludge for HPUX # HPUX doesn't like group 60001(nobody) if uname | grep 'HP-UX' >/dev/null 2>&1; then echo 'WARNING: Applying kludge for HPUX. (see base_server/privs.pike)' DEFINES="$DEFINES -DHPUX_KLUDGE" fi
d0ee181997-03-01Henrik Grubbström (Grubba) pike=pike if [ -x bin/pike ] ; then pike=bin/pike; fi
7217cd1998-03-01Per Hedbor if [ -x bin/roxen ] ; then pike=bin/roxen; echo $DEFINES fi
7cb64f1998-01-17Henrik Grubbström (Grubba) if [ -x "$PIKE" ]; then pike="$PIKE"; fi
b1fca01996-11-12Per Hedbor  rotate () { b=5; for a in 4 3 2 1 ; do mv -f $1.$a $1.$b 2> /dev/null; b=$a; done }
d0ee181997-03-01Henrik Grubbström (Grubba) start_roxen() {
8afc811998-02-04Per Hedbor  args="-DROXEN $DEBUG $DEFINES $pass base_server/roxenloader.pike --config-dir=$DIR"
fc2fcf1997-04-13Per Hedbor  echo Executing $pike $args $@ $pike $args $@
d0ee181997-03-01Henrik Grubbström (Grubba) }
b1fca01996-11-12Per Hedbor ####### END PREAMBLE ## Parse all arguments.
82f5191997-03-02Per Hedbor ## GNU-style, long options only, except for -D, simply passed on. parse_args() { while [ ! c"$1" = "c" ] ; do
b1fca01996-11-12Per Hedbor  case $1 in
4019f81997-03-01Per Hedbor  -D*) DEFINES="$DEFINES $1" ;;
82f5191997-03-02Per Hedbor # Used by the 'install' script
b1fca01996-11-12Per Hedbor  --log-dir=*) LOGDIR=`echo $1 | sed -e 's/--log-dir=//'` ;; --config-dir=*) DIR=`echo $1 | sed -e 's/--config-dir=//'`
6a85661997-04-10Henrik Grubbström (Grubba)  FILES=`echo $1 | sed -e's/--config-dir=//' -e's/\.//g' -e's./..g' -e 's.-..g'`
b1fca01996-11-12Per Hedbor  ;;
59f64b1997-01-27Per Hedbor  '--debug') debug=1 ;;
3c31841998-03-01Per Hedbor  '--threads') DEFINES="-DENABLE_THREADS $DEFINES" ;; '--no-threads') DEFINES="`echo $DEFINES | sed -e 's/-DENABLE_THREADS//'`" ;; '--profile') DEFINES="-DPROFILE $DEFINES" ;; '--keep-alive') DEFINES="-DKEEP_ALIVE $DEFINES" ;;
a8135b1996-11-12Per Hedbor  '--once') once=1 ;;
b1fca01996-11-12Per Hedbor  '--version')
c0ca361997-05-07Henrik Grubbström (Grubba)  echo Roxen Challenger 1.`expr $VERSION / 100`$BETA`expr $VERSION % 100`
b1fca01996-11-12Per Hedbor  exit 0 ;; '--help'|'-?')
82f5191997-03-02Per Hedbor  tput 'bold' 2>/dev/null cat << EOF
3c31841998-03-01Per Hedbor Syntax: $0 [--version] [--config-dir=DIR] [--log-dir=DIR] [-DDEFINE] [--threads] [--no-threads] [--profile] [--keep-alive] This command will start the Roxen server.
82f5191997-03-02Per Hedbor If the configuration dir is set, a different set of debuglogfiles will be used. The environment variable ROXEN_ARGS can be used to specify the default arguments. EOF tput 'rmso' 2>/dev/null
b1fca01996-11-12Per Hedbor  exit 0 ;; *) pass="$pass $1"
5e87b41997-04-09Henrik Grubbström (Grubba)  ;;
b1fca01996-11-12Per Hedbor  esac shift
82f5191997-03-02Per Hedbor  done } ####### END PREAMBLE parse_args $@
b1fca01996-11-12Per Hedbor 
82f5191997-03-02Per Hedbor if [ ! "X$ROXEN_ARGS" = "X" ]; then echo $$: Using $ROXEN_ARGS from ROXEN_ARGS. parse_args $ROXEN_ARGS fi
d1ff621997-07-24Marcus Comstedt if [ ! "X$pass" = "X" ] ; then set -- $pass ;fi
b1fca01996-11-12Per Hedbor 
82f5191997-03-02Per Hedbor echo $$: Starting the Roxen Challenger World Wide Web server.
b1fca01996-11-12Per Hedbor  ./mkdir -p $LOGDIR/debug/
59f64b1997-01-27Per Hedbor if [ -z "$debug" ] ; then
fc2fcf1997-04-13Per Hedbor  DEBUG="-DMODULE_DEBUG";
59f64b1997-01-27Per Hedbor else DEBUG="-DDEBUG -DMODULE_DEBUG" fi
a8135b1996-11-12Per Hedbor if [ -z "$once" ] ; then
9c353a1997-08-23Henrik Grubbström (Grubba)  (while : ; do echo $$: "Server restart at `date`" echo $$: "Debug log in $LOGDIR/debug/$FILES.1" rotate $LOGDIR/debug/$FILES
82f5191997-03-02Per Hedbor 
9c353a1997-08-23Henrik Grubbström (Grubba)  start_roxen 2>>$LOGDIR/debug/$FILES.1 1>&2
82f5191997-03-02Per Hedbor 
7cb64f1998-01-17Henrik Grubbström (Grubba)  exitcode="$?"
b1fca01996-11-12Per Hedbor 
7cb64f1998-01-17Henrik Grubbström (Grubba)  if [ "$exitcode" -eq "0" ] ; then # Clean shutdown. echo $$: "Roxen shutdown." exit 0 fi if [ "$exitcode" -lt "0" ] ; then # Signal death. echo $$: "Roxen died of signal $exitcode. Restarting..." else # Restart. Sleep a few seconds before restarting. echo $$: Roxen died. Restarting in 5 seconds... sleep 5
b1fca01996-11-12Per Hedbor  fi
9c353a1997-08-23Henrik Grubbström (Grubba)  done
b1fca01996-11-12Per Hedbor 
9c353a1997-08-23Henrik Grubbström (Grubba)  echo $$: Not Reached "famous last words"
b1fca01996-11-12Per Hedbor 
9c353a1997-08-23Henrik Grubbström (Grubba)  ) < /dev/null > $LOGDIR/debug/start_$FILES.output 2>&1 & cat << oo
b1fca01996-11-12Per Hedbor Using configuration from $DIR, storing the debug log in $LOGDIR/debug/$FILES.1 You can use the configuration interface in the server to get debug info. oo
82f5191997-03-02Per Hedbor 
a8135b1996-11-12Per Hedbor else
82f5191997-03-02Per Hedbor  echo $$: "Server restart at `date`"
4019f81997-03-01Per Hedbor  start_roxen
a8135b1996-11-12Per Hedbor fi
fc2fcf1997-04-13Per Hedbor