--- a
+++ b/debian/scweb.init
@@ -0,0 +1,384 @@
+#!/bin/sh
+#
+# Upmpdcli Songcast Receiver control web interface init script.
+# Copyright (C) 2015 J.F. Dockes
+
+# Derived from:
+#
+# VirtualBox web service API daemon init script.
+#
+# Copyright (C) 2006-2012 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: Songcast Receiver control web interface
+#
+### BEGIN INIT INFO
+# Provides: scweb-service
+# Required-Start: $remote_fs $syslog
+# Required-Stop: $remote_fs $syslog
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
+# Description: Songcast Receiver control web interface
+### END INIT INFO
+
+PATH=$PATH:/bin:/sbin:/usr/sbin
+
+[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
+
+if [ -n "$INSTALL_DIR" ]; then
+ binary="$INSTALL_DIR/scweb-standalone.py"
+ scctl="$INSTALL_DIR/scctl"
+else
+ binary="/usr/share/upmpdcli/web/scweb-standalone.py"
+ scctl="/usr/bin/scctl"
+fi
+
+# silently exit if the package was uninstalled but not purged,
+# applies to Debian packages only (but shouldn't hurt elsewhere)
+[ ! -f /etc/debian_release -o -x $binary ] || exit 0
+
+[ -r /etc/default/scweb ] && . /etc/default/scweb
+
+system=unknown
+if [ -f /etc/redhat-release ]; then
+ system=redhat
+ PIDFILE="/var/lock/subsys/scweb-service"
+elif [ -f /etc/SuSE-release ]; then
+ system=suse
+ PIDFILE="/var/lock/subsys/scweb-service"
+elif [ -f /etc/debian_version ]; then
+ system=debian
+ PIDFILE="/var/run/scweb-service"
+elif [ -f /etc/gentoo-release ]; then
+ system=gentoo
+ PIDFILE="/var/run/scweb-service"
+elif [ -f /etc/arch-release ]; then
+ system=arch
+ PIDFILE="/var/run/scweb-service"
+elif [ -f /etc/slackware-version ]; then
+ system=slackware
+ PIDFILE="/var/run/scweb-service"
+elif [ -f /etc/lfs-release ]; then
+ system=lfs
+ PIDFILE="/var/run/scweb-service.pid"
+else
+ system=other
+ if [ -d /var/run -a -w /var/run ]; then
+ PIDFILE="/var/run/scweb-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
+ start_daemon() {
+ usr="$1"
+ shift
+ daemon --user $usr $@
+ }
+ fail_msg() {
+ echo_failure
+ echo
+ }
+ succ_msg() {
+ echo_success
+ echo
+ }
+ begin_msg() {
+ echo -n "$1"
+ }
+ fi
+fi
+
+if [ "$system" = "suse" ]; then
+ . /etc/rc.status
+ start_daemon() {
+ usr="$1"
+ shift
+ su - $usr -c "$*"
+ }
+ 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
+ start_daemon() {
+ usr="$1"
+ shift
+ bin="$1"
+ shift
+ start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
+ }
+ 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
+ if [ -f /sbin/functions.sh ]; then
+ . /sbin/functions.sh
+ elif [ -f /etc/init.d/functions.sh ]; then
+ . /etc/init.d/functions.sh
+ fi
+ start_daemon() {
+ usr="$1"
+ shift
+ bin="$1"
+ shift
+ start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
+ }
+ 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
+ start_daemon() {
+ usr="$1"
+ shift
+ su - $usr -c "$*"
+ test $? -eq 0 && add_daemon rc.`basename $2`
+ }
+ 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
+ killproc() {
+ killall $1
+ rm -f $PIDFILE
+ }
+ if [ -n "$NOLSB" ]; then
+ fail_msg() {
+ echo " ...fail!"
+ }
+ succ_msg() {
+ echo " ...done."
+ }
+ begin_msg() {
+ echo -n "$1"
+ }
+ fi
+ start_daemon() {
+ usr="$1"
+ shift
+ su - $usr -c "$*"
+ }
+fi
+
+if [ "$system" = "lfs" ]; then
+ . /etc/rc.d/init.d/functions
+ if [ -n "$NOLSB" ]; then
+ fail_msg() {
+ echo_failure
+ }
+ succ_msg() {
+ echo_ok
+ }
+ begin_msg() {
+ echo $1
+ }
+ fi
+ start_daemon() {
+ usr="$1"
+ shift
+ su - $usr -c "$*"
+ }
+ 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
+
+check_single_user() {
+ if [ -n "$2" ]; then
+ fail_msg "VBOXWEB_USER must not contain multiple users!"
+ exit 1
+ fi
+}
+
+start() {
+ #echo "START"
+ if ! test -f $PIDFILE; then
+ #echo "DORUN?"
+ [ "$SCWEB_DORUN" = "yes" ] || exit 0
+ #echo "USER SET?"
+ [ -z "$SCWEB_USER" ] && exit 0
+ begin_msg "Starting scweb Songcast control web interface";
+ check_single_user $SCWEB_USER
+ #echo SCWEB_USER $SCWEB_USER single ok
+ PARAMS=""
+ [ -n "$SCWEB_ADDRESS" ] && PARAMS="$PARAMS -a $SCWEB_ADDRESS"
+ [ -n "$SCWEB_PORT" ] && PARAMS="$PARAMS -p $SCWEB_PORT"
+
+ #echo start_daemon $SCWEB_USER $binary $PARAMS
+ start_daemon $SCWEB_USER $binary $PARAMS > /dev/null 2>&1
+ # ugly: wait until the final process has forked
+ sleep .1
+ PID=`ps ax | egrep 'python .*/scweb-standalone' | grep -v grep | awk '{print $1}'`
+ if [ -n "$PID" ]; then
+ echo "$PID" > $PIDFILE
+ RETVAL=0
+ succ_msg
+ else
+ RETVAL=1
+ fail_msg
+ fi
+ else
+ echo "Pidfile $PIDFILE already exists" 1>&2
+ fi
+
+ return $RETVAL
+}
+
+scwebpid()
+{
+ echo `ps ax | grep 'python.*scweb-standalone' |grep -v grep | \
+ awk '{print $1}'`
+}
+
+stop() {
+ if test -f $PIDFILE; then
+ begin_msg "Stopping scweb web interface";
+
+ RPID=`scwebpid`
+ [ -n "$RPID" ] && kill "$RPID"
+ RETVAL=$?
+
+ RPID=`scwebpid`
+ if test -z "$RPID"; then
+ rm -f $PIDFILE
+ succ_msg
+ else
+ fail_msg
+ fi
+ fi
+ return $RETVAL
+}
+
+restart() {
+ stop && start
+}
+
+status() {
+ echo -n "Checking for scweb web interface"
+ if [ -f $PIDFILE ]; then
+ echo " ...running"
+ else
+ echo " ...not running"
+ fi
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+restart)
+ restart
+ ;;
+force-reload)
+ restart
+ ;;
+status)
+ status
+ ;;
+setup)
+ ;;
+cleanup)
+ ;;
+*)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac
+
+exit $RETVAL