summaryrefslogtreecommitdiffstats
path: root/multimedia/sickchill/rc.sickchill
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/sickchill/rc.sickchill')
-rw-r--r--multimedia/sickchill/rc.sickchill171
1 files changed, 171 insertions, 0 deletions
diff --git a/multimedia/sickchill/rc.sickchill b/multimedia/sickchill/rc.sickchill
new file mode 100644
index 0000000000..f36eb79604
--- /dev/null
+++ b/multimedia/sickchill/rc.sickchill
@@ -0,0 +1,171 @@
+#!/bin/bash
+
+# Start/stop/restart sickchill.
+
+# Originally created for sickrage in 2016
+# Updated to sickchill in 2023
+
+# Copyright 2016-2024 Jeremy Hansen <jebrhansen+SBo@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Set program name in case you want to run sick{beard|rage|gear|etc}
+PROG=${PROG:-sickchill}
+
+# If you want to have multiple instances of sickchill running, set
+# the suffix here.
+SUFFIX=
+
+# Set the full program name for folders
+if [ -n "$SUFFIX" ]; then
+ FULLPROG="$PROG-$SUFFIX"
+# Just use $PROG if there isn't a suffix set
+else
+ FULLPROG="$PROG"
+fi
+
+# Source SickRage configuration
+if [ -f /etc/"$FULLPROG".conf ]; then
+ . /etc/"$FULLPROG".conf
+fi
+
+# Ensure all required variables are set in conf file
+# Edit conf file in /etc/$PROG-$SUFFIX.conf for any changes
+MISSING=0
+for var in USERNAME HOMEDIR DATADIR PIDFILE PORT; do
+ if [ -z "${!var}" ]; then
+ ((MISSING++))
+ VAR="$var $VAR"
+ fi
+done
+if [ $MISSING -gt 0 ]; then
+ echo "/etc/$FULLPROG.conf is missing some or all required variables ($VAR)."
+ echo "Please check the file and try again."
+fi
+
+# Check if the program is running and pid file exists
+check()
+{
+ if pgrep "$PROG" > /dev/null; then
+ # Check if the pidfile matches the running pid
+ if [ -e "$PIDFILE" ] && pgrep -f "$PIDFILE" > /dev/null; then
+ STATUS=running
+ else
+ # Check if the program is running without the pid file matching
+ if pgrep -f "$FULLPROG.*$PORT" > /dev/null; then
+ STATUS=broken
+ echo "WARNING: $FULLPROG is running without the correct pid file."
+ echo "Did you start it without using the rc.$FULLPROG?"
+ else
+ STATUS=stopped
+ fi
+ fi
+ else
+ STATUS=stopped
+ fi
+}
+
+status()
+{
+ if [ $STATUS == "running" ]; then
+ echo "$FULLPROG currently running."
+ elif [ $STATUS == "stopped" ]; then
+ echo "$FULLPROG not running."
+ elif [ $STATUS == "broken" ]; then
+ echo "Please fix the issue before attempting to run $(basename "$0") again."
+ else
+ echo "Status unknown."
+ fi
+}
+
+start()
+{
+ if [ $STATUS == "stopped" ]; then
+ echo -n "Starting $PROG: "
+ if su "$USERNAME" -s /bin/sh -c "/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT} &> /dev/null"; then
+ echo "Startup Successful"
+ else
+ su "$USERNAME" -s /bin/sh -c "/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT}"
+ echo "Startup Failed. The following command is what produced the failure:"
+ echo "su $USERNAME -s /bin/sh -c \"/usr/bin/${PROG} --daemon --pidfile=${PIDFILE} --datadir=${DATADIR} --port=${PORT}\""
+ fi
+ else
+ status
+ fi
+}
+
+stop()
+{
+ if [ $STATUS == "stopped" ]; then
+ echo "$PROG doesn't seem to be running. Please try running"
+ echo "$0 start"
+ elif [ $STATUS == "broken" ]; then
+ echo "Cannot stop. Please correct issue and try again."
+ else
+ if [ "$EUID" -ne 0 ];then
+ echo "Please run as root"
+ exit 1
+ fi
+ # sickchill can take some time to properly shut down.
+ # It takes more than 10 seconds on my system top properly close.
+ # If it doesn't close by the timeout, force close it.
+ TIMEOUT=15
+ echo -n $"Giving $PROG $TIMEOUT seconds to shut down: "
+ curl -s http://localhost:"$PORT"/home/shutdown/?pid="$(cat "$PIDFILE")" | grep -q "shutting down"
+ for (( COUNT=0; COUNT <= TIMEOUT; COUNT++ )); do
+ if pgrep -f "$FULLPROG.*$PORT" > /dev/null; then
+ SHUTDOWN=success
+ break
+ fi
+ sleep 1
+ done
+ if [ "$SHUTDOWN" == "success" ]; then
+ echo "Shutdown successful."
+ else
+ echo "Normal Shutdown Failed - Attempting to kill the process."
+ sleep 7
+ pkill -9 -F "$PIDFILE"
+ fi
+ fi
+}
+
+case "$1" in
+ start)
+ check
+ start
+ ;;
+ stop)
+ check
+ stop
+ ;;
+ restart)
+ check
+ stop
+ sleep 1
+ check
+ start
+ ;;
+ status)
+ check
+ status
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|status}"
+ exit 1
+esac