You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.7 KiB

#!/bin/sh
#
# DON'T EDIT THIS FILE DIRECTLY!
#
# Instead, create your own configuration by setting any of the 7 variables
# listed below in /etc/default/couchpotato. For example: adding CP_USER=noob
# to /etc/default/couchpotato makes the service run under the 'noob' account,
# overruling the default value of 'couchpotato'.
#
# Accepted variables with default values -if any- in parentheses:
# CP_USER # username to run couchpotato under (couchpotato)
# CP_HOME # directory of CouchPotato.py (/opt/couchpotato)
# CP_DATA # directory of couchpotato's db, cache and logs (/var/opt/couchpotato)
# CP_PIDFILE # full path of couchpotato.pid (/var/run/couchpotato/couchpotato.pid)
# PYTHON_BIN # full path of the python binary (/usr/bin/python)
# CP_OPTS # extra cli options for couchpotato, see 'CouchPotato.py --help'
# SSD_OPTS # extra options for start-stop-daemon, see 'man start-stop-daemon'
14 years ago
### BEGIN INIT INFO
# Provides: couchpotato
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: $named deluged network-manager nzbget qbittorrent-nox sabnzbdplus transmission-daemon
# Should-Stop: $named deluged network-manager nzbget qbittorrent-nox sabnzbdplus transmission-daemon
14 years ago
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: CouchPotato PVR for Usenet and torrents
14 years ago
# Description: starts instance of CouchPotato using start-stop-daemon
### END INIT INFO
DESC=CouchPotato
CONFIG=/etc/default/couchpotato
14 years ago
# don't accept config vars from the shell environment
unset CP_USER CP_HOME CP_DATA CP_PIDFILE PYTHON_BIN CP_OPTS SSD_OPTS
# source lsb init functions
. /lib/lsb/init-functions
# try loading the configuration file
[ -r "$CONFIG" ] && . "$CONFIG" \
|| log_action_msg "$DESC: $CONFIG unreadable, falling back to default settings"
# assorted settings and their defaults
: "${CP_USER:=couchpotato}"
: "${CP_HOME:=/opt/couchpotato}"
: "${CP_DATA:=/var/opt/couchpotato}"
: "${CP_PIDFILE:=/var/run/couchpotato/couchpotato.pid}"
: "${PYTHON_BIN:=/usr/bin/python}"
# basic sanity checks
([ -x "$PYTHON_BIN" ] && [ -f "$CP_HOME/CouchPotato.py" ]) || {
log_failure_msg "$DESC: init script setup failed basic sanity checks, aborting!";
# exit zero since this condition may also occur after a user
# uninstalled cp while leaving this script in place.
exit 0;
}
start_cp() {
# create directories with sensible ownership and permissions
# (but refuse to touch any pre-existing ones)
for D in "$(dirname "$CP_PIDFILE")" "$CP_DATA"; do
[ ! -d "$D" ] && {
install --directory --owner="$CP_USER" --group=root --mode=0750 "$D" || exit 1;
}
done
# # for backwards compatibility create an empty pidfile so it
# # can be in any pre-existing directory, even those unwritable
# # for the $CP_USER. PEBCAK?
# [ ! -e "$CP_PIDFILE" ] && {
# touch "$CP_PIDFILE" && \
# chmod 0600 "$CP_PIDFILE" && \
# chown "$CP_USER" "$CP_PIDFILE" \
# || exit 1;
# }
log_daemon_msg "Starting $DESC"
start-stop-daemon --start --quiet --pidfile "$CP_PIDFILE" --chdir "$CP_HOME" --chuid "$CP_USER" --oknodo --exec "$PYTHON_BIN" $SSD_OPTS -- \
CouchPotato.py --daemon --quiet --pid_file="$CP_PIDFILE" --data_dir="$CP_DATA" $CP_OPTS
log_end_msg $? || exit $?
}
stop_cp() {
log_daemon_msg "Stopping $DESC"
# for security reasons, require the process to be both:
# 1) listed in the pidfile and 2) running as $CP_USER
start-stop-daemon --stop --quiet --pidfile "$CP_PIDFILE" --user "$CP_USER" --retry 15 --oknodo
log_end_msg $? || exit $?
}
14 years ago
case "$1" in
start)
start_cp;;
stop)
stop_cp;;
restart|force-reload)
stop_cp && start_cp;;
status)
status_of_proc -p "$CP_PIDFILE" "$PYTHON_BIN" "$DESC"
exit $?;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
exit 3;;
14 years ago
esac
exit 0