#!/bin/sh
#
# WebKit application server
# part of Webware for Python
#
# /etc/init.d/webkit
#
# init.d script for NetBSD and FreeBSD
#
# PROVIDE: webkit
# REQUIRE: LOGIN

### START LOCAL CONFIGURATION

# If you store this script in your Webware working directory
# and create a symlink to it as /etc/init.d/webkit_appname,
# it will try to guess your configuration parameters. Otherwise
# you need to hard code the path to the working directory here.
# You can make changes either directly here in the start script or
# you can also override the configuration in the Launch.py script.

# The location and name of the start sript:
START_SCRIPT="$0"
APP_NAME=`basename "$START_SCRIPT"`
if [ -h "$START_SCRIPT" ]; then
    START_SCRIPT=`readlink -f "$START_SCRIPT"`
fi

# The location of the working directory:
WORK_DIR=`dirname "$START_SCRIPT"`
if [ "$WORK_DIR" = "/etc/init.d" ]; then
    # Put hard coded path to working directory here:
    WORK_DIR="."
fi

# Make sure to have the absolute path:
test -d "$WORK_DIR" || exit 5
WORK_DIR=`cd "$WORK_DIR" 2>/dev/null && pwd`

# The app server launch script:
APP_SERVER="$WORK_DIR/AppServer"
test -x "$APP_SERVER" || exit 5

# The app server configuration:
APP_SERVER_CONFIG="$WORK_DIR/Configs/AppServer.config"
test -f "$APP_SERVER_CONFIG" || exit 5

# The WebKit app server log file
# (you can set this in Launch.py as well):
#LOG_FILE="/var/log/$APP_NAME.log"
LOG_FILE="$WORK_DIR/Logs/webkit.log"
# Use this extension if you want to move the last log away
# (also consider using logrotate or something similar):
LOG_OLD=".old"

# The app server process id file
# (you can set this in Launch.py as well):
#PID_FILE="/var/run/$APP_NAME.pid"
PID_FILE="$WORK_DIR/webkit.pid"

# The user and group to run the app server
# (you can set this in Launch.py as well).
# If undefined, it will be the user and group
# running the start script (usually root).
# You should use a low-privilege account,
# like the work dir owner, wwwrun or nobody.
# This will use the owner of the AppServer script:
WEBWARE_USER=`stat -f "%Su" "$APP_SERVER"`
WEBWARE_GROUP=`stat -f "%Sg" "$APP_SERVER"`

# Unset the following variable if you want to store the
# pid and log files as the user running the start script
# (usually root) or set it if you want these files to be
# written after switching to WEBWARE_USER:WEBWARE_GROUP.
LAUNCH_AS_WEBWARE="yes"

# Additional options -u or -O to be passed on to Python:
PYTHONOPTS=
# Additional libraries to be included in the Python path:
PYTHONPATH=
export PYTHONPATH

### END LOCAL CONFIGURATION

# Source NetBSD function library:
. /etc/rc.subr

name="$APP_NAME"
command="$APP_SERVER"
procname="python"
pidfile="$PID_FILE"
if [ "$LAUNCH_AS_WEBWARE" ]; then
    if [ "$WEBWARE_USER" ]; then
        eval ${name}_user=$WEBWARE_USER
    fi
    if [ "$WEBWARE_GROUP" ]; then
        eval ${name}_group=$WEBWARE_GROUP
    fi
    eval ${name}_flags=\"$PYTHONOPTS \
        -d \\\"$WORK_DIR\\\" -o \\\"$LOG_FILE\\\" \
        -i \\\"$PID_FILE\\\"\"
    command_args="> /dev/null &"
else
    if [ "$WEBWARE_USER" ]; then
        WEBWARE_USER="-u $WEBWARE_USER"
    fi
    if [ "$WEBWARE_GROUP" ]; then
        WEBWARE_GROUP="-g $WEBWARE_GROUP"
    fi
    eval ${name}_flags=\"$PYTHONOPTS \
        -d \\\"$WORK_DIR\\\" -i \\\"$PID_FILE\\\" \
        $WEBWARE_USER $WEBWARE_GROUP\"
    command_args="> \"$LOG_FILE\" 2>&1 &"
fi

load_rc_config "$name"
run_rc_command "$1"
