Index: trunk/src/VBox/Installer/linux/vboxweb-service.sh.in
===================================================================
--- trunk/src/VBox/Installer/linux/vboxweb-service.sh.in	(revision 31794)
+++ trunk/src/VBox/Installer/linux/vboxweb-service.sh.in	(revision 31794)
@@ -0,0 +1,329 @@
+#!/bin/sh
+#
+# Sun VirtualBox
+# Linux Additions Guest Additions service daemon init script.
+#
+# Copyright (C) 2006-2009 Oracle Corporation
+#
+# This file is part of VirtualBox Open Source Edition (OSE), as
+# available from http://www.virtualbox.org. This file is free software;
+# you can redistribute it and/or modify it under the terms of the GNU
+# General Public License (GPL) as published by the Free Software
+# Foundation, in version 2 as it comes in the "COPYING" file of the
+# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+#
+
+# chkconfig: 35 35 65
+# description: VirtualBox Additions service
+#
+### BEGIN INIT INFO
+# Provides:       vboxweb-service
+# Required-Start: vboxdrv
+# Required-Stop:  vboxdrv
+# Default-Start:  2 3 4 5
+# Default-Stop:   0 1 6
+# Description:    VirtualBox Additions Service
+### END INIT INFO
+
+PATH=$PATH:/bin:/sbin:/usr/sbin
+DEBIAN=%DEBIAN%
+
+[ -f /lib/lsb/init-functions ] || NOLSB=yes
+[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
+
+if [ -n "$INSTALL_DIR" ]; then
+    binary="$INSTALL_DIR/vboxwebsrv"
+else
+    binary="/usr/lib/%PACKAGE%/vboxwebsrv"
+fi
+
+# silently exit if the package was uninstalled but not purged,
+# applies to Debian packages only
+[ -z "$DEBIAN" -o -x $binary ] || exit 0
+
+[ -r /etc/default/%PACKAGE% ] && . /etc/default/%PACKAGE%
+
+system=unknown
+if [ -f /etc/redhat-release ]; then
+    system=redhat
+    PIDFILE="/var/lock/subsys/vboxweb-service"
+elif [ -f /etc/SuSE-release ]; then
+    system=suse
+    PIDFILE="/var/lock/subsys/vboxweb-service"
+elif [ -f /etc/debian_version ]; then
+    system=debian
+    PIDFILE="/var/run/vboxweb-service"
+elif [ -f /etc/gentoo-release ]; then
+    system=gentoo
+    PIDFILE="/var/run/vboxweb-service"
+elif [ -f /etc/arch-release ]; then
+     system=arch
+     PIDFILE="/var/run/vboxweb-service"
+elif [ -f /etc/slackware-version ]; then
+    system=slackware
+    PIDFILE="/var/run/vboxweb-service"
+elif [ -f /etc/lfs-release ]; then
+    system=lfs
+    PIDFILE="/var/run/vboxweb-service.pid"
+else
+    system=other
+    if [ -d /var/run -a -w /var/run ]; then
+        PIDFILE="/var/run/vboxweb-service"
+    fi
+fi
+
+if [ -z "$NOLSB" ]; then
+    . /lib/lsb/init-functions
+    fail_msg() {
+        echo ""
+        log_failure_msg "$1"
+    }
+    succ_msg() {
+        log_success_msg " done."
+    }
+    begin_msg() {
+        log_daemon_msg "$@"
+    }
+fi
+
+if [ "$system" = "redhat" ]; then
+    . /etc/init.d/functions
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo_failure
+            echo
+        }
+        succ_msg() {
+            echo_success
+            echo
+        }
+        begin_msg() {
+            echo -n "$1"
+        }
+    fi
+fi
+
+if [ "$system" = "suse" ]; then
+    . /etc/rc.status
+    daemon() {
+        startproc ${1+"$@"}
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            rc_failed 1
+            rc_status -v
+        }
+        succ_msg() {
+            rc_reset
+            rc_status -v
+        }
+        begin_msg() {
+            echo -n "$1"
+        }
+    fi
+fi
+
+if [ "$system" = "debian" ]; then
+    daemon() {
+        start-stop-daemon --chuid "$VBOXWEB_USER" --start --exec $1 -- $2
+    }
+    killproc() {
+        start-stop-daemon --stop --exec $@
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo " ...fail!"
+        }
+        succ_msg() {
+            echo " ...done."
+        }
+        begin_msg() {
+            echo -n "$1"
+       }
+    fi
+fi
+
+if [ "$system" = "gentoo" ]; then
+    . /sbin/functions.sh
+    daemon() {
+        start-stop-daemon --start --exec $1 -- $2
+    }
+    killproc() {
+        start-stop-daemon --stop --exec $@
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo " ...fail!"
+        }
+        succ_msg() {
+            echo " ...done."
+        }
+        begin_msg() {
+            echo -n "$1"
+        }
+        if [ "`which $0`" = "/sbin/rc" ]; then
+            shift
+        fi
+    fi
+fi
+
+if [ "$system" = "arch" ]; then
+    USECOLOR=yes
+    . /etc/rc.d/functions
+    daemon() {
+        $@
+        test $? -eq 0 && add_daemon rc.`basename $1`
+    }
+    killproc() {
+        killall $@
+        rm_daemon `basename $@`
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            stat_fail
+        }
+        succ_msg() {
+            stat_done
+        }
+        begin_msg() {
+            stat_busy "$1"
+        }
+    fi
+fi
+
+if [ "$system" = "slackware" ]; then
+    daemon() {
+        $1 $2
+    }
+    killproc() {
+        killall $1
+        rm -f $PIDFILE
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo " ...fail!"
+        }
+        succ_msg() {
+            echo " ...done."
+        }
+        begin_msg() {
+            echo -n "$1"
+        }
+    fi
+fi
+
+if [ "$system" = "lfs" ]; then
+    . /etc/rc.d/init.d/functions
+    daemon() {
+        loadproc $1 $2
+    }
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo_failure
+        }
+        succ_msg() {
+            echo_ok
+        }
+        begin_msg() {
+            echo $1
+        }
+    fi
+    status() {
+        statusproc $1
+    }
+fi
+
+if [ "$system" = "other" ]; then
+    if [ -n "$NOLSB" ]; then
+        fail_msg() {
+            echo " ...fail!"
+        }
+        succ_msg() {
+            echo " ...done."
+        }
+        begin_msg() {
+            echo -n "$1"
+        }
+    fi
+fi
+
+vboxdrvrunning() {
+    lsmod | grep -q "vboxdrv[^_-]"
+}
+
+start() {
+    if ! test -f $PIDFILE; then
+        [ -z "$VBOXWEB_USER" ] && exit 0
+        begin_msg "Starting VirtualBox web service";
+        vboxdrvrunning || {
+            fail_msg "VirtualBox kernel module not loaded!"
+            exit 0
+        }
+        PARAMS=
+        [ -n "$VBOXWEB_HOST" ]           && PARAMS="$PARAMS -H $VBOXWEB_HOST"
+        [ -n "$VBOXWEB_PORT" ]           && PARAMS="$PARAMS -p $VBOXWEB_PORT"
+        [ -n "$VBOXWEB_TIMEOUT" ]        && PARAMS="$PARAMS -t $VBOXWEB_TIMEOUT"
+        [ -n "$VBOXWEB_CHECK_INTERVAL" ] && PARAMS="$PARAMS -i $VBOXWEB_CHECK_INTERVAL"
+        [ -n "$VBOXWEB_THREADS" ]        && PARAMS="$PARAMS -T $VBOXWEB_THREADS"
+        [ -n "$VBOXWEB_KEEPALIVE" ]      && PARAMS="$PARAMS -k $VBOXWEB_KEEPALIVE"
+        [ -n "$VBOXWEB_LOGFILE" ]        && PARAMS="$PARAMS -F $VBOXWEB_LOGFILE"
+        daemon $binary -b $PARAMS > /dev/null 2>&1
+        RETVAL=$?
+        test $RETVAL -eq 0 && echo `pidof VBoxService` > $PIDFILE
+        succ_msg
+    fi
+    return $RETVAL
+}
+
+stop() {
+    if test -f $PIDFILE; then
+        begin_msg "Stopping VirtualBox web service";
+        vboxdrvrunning || {
+            fail_msg "VirtualBox kernel module not loaded!"
+            exit 0
+        }
+        killproc $binary
+        RETVAL=$?
+        test $RETVAL -eq 0 && rm -f $PIDFILE
+        succ_msg
+    fi
+    return $RETVAL
+}
+
+restart() {
+    stop && start
+}
+
+status() {
+    echo -n "Checking for VBox Web Service"
+    if [ -f $PIDFILE ]; then
+        echo " ...running"
+    else
+        echo " ...not running"
+    fi
+}
+
+case "$1" in
+start)
+    start
+    ;;
+stop)
+    stop
+    ;;
+restart)
+    restart
+    ;;
+status)
+    status
+    ;;
+setup)
+    ;;
+cleanup)
+    ;;
+*)
+    echo "Usage: $0 {start|stop|restart|status}"
+    exit 1
+esac
+
+exit $RETVAL
