#!/bin/bash ### BEGIN INIT INFO # Provides: qBittorrent # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starts qBittorrent # Description: Start qBittorrent on start. Change USER= before running ### END INIT INFO # Author: Jesper Smith # Edited by MarkusMcNugen [MarkusMcNugen/docker-qBittorrentvpn] # Edited log paths for docker, added umask and group to chuid option # Edited by DyonR [DyonR/docket-qBittorrentvpn] # Edited so it would work for qBittorrent # Edit the user that qBittorrent will run as. USER=${PUID} GROUP=${PGID} PATH="/sbin:/usr/sbin:/bin:/usr/bin" SCRIPTNAME="/etc/init.d/qbittorrent" NAME="qbittorrent" DESC="qbittorrent" PIDFILE="/var/run/$NAME.pid" QBITTORRENTLOGPATH="/config/qBittorrent/data/logs/" QBITTORRENTLOG="qbittorrent.log" DAEMON="/usr/local/bin/qbittorrent-nox" DAEMON_ARGS="--profile=/config" DAEMONSTRING="$DAEMON $DAEMON_ARGS >> $QBITTORRENTLOGPATH$QBITTORRENTLOG 2>&1" export DBUS_SESSION_BUS_ADDRESS="" umask 002 # Read configuration variable file if it is present #[ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Check if log path exists. If it doesn't exist, create it. if [ ! -e $QBITTORRENTLOGPATH ]; then mkdir -p $QBITTORRENTLOGPATH chown -R ${PUID}:${PGID} /config/qBittorrent fi # Check for log file. If it doesn't exist, create it. if [ -f $QBITTORRENTLOGPATH$QBITTORRENTLOG ]; then echo "Logging to $QBITTORRENTLOGPATH$QBITTORRENTLOG." else echo "Log file $QBITTORRENTLOGPATH$QBITTORRENTLOG doesn't exist. Creating it..." touch $QBITTORRENTLOGPATH$QBITTORRENTLOG if [ -f $QBITTORRENTLOGPATH$QBITTORRENTLOG ]; then chown $USER:$GROUP $QBITTORRENTLOGPATH$QBITTORRENTLOG echo "Logfile created. Logging to $QBITTORRENTLOGPATH$QBITTORRENTLOG" else echo "Couldn't create logfile $QBITTORRENTLOGPATH$QBITTORRENTLOG. Please investigate." fi fi # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --chuid $USER:$GROUP --test --quiet --make-pidfile --pidfile $PIDFILE --background --exec /bin/bash -- -c "$DAEMONSTRING" || return 1 start-stop-daemon --start --chuid $USER:$GROUP --make-pidfile --pidfile $PIDFILE --background --exec /bin/bash -- -c "$DAEMONSTRING" || return 2 sleep 1 echo "[INFO] Started qBittorrent daemon successfully..." | ts '%Y-%m-%d %H:%M:%.S' } # # Function that stops the daemon/service # do_stop() { start-stop-daemon --stop --exec "$DAEMONPATH$DAEMON" sleep 2 return "$?" } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: service qbittorrent {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac