configs/torrent-seeder/homedir/bin/rtorrent-wrapper

72 lines
2.1 KiB
Bash
Executable file

#!/bin/bash
# Copyright (c) 2020-2022:
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
# Licensed under the terms of the GNU General Public License version 3.
#
# $1 == The rtorrent profile to start (eg. slackware-15.0).
DAEMON_EXEC="/usr/bin/daemon"
RTORRENT_EXEC="/opt/bin/rtorrent"
DAEMON_ARGS=('-N' '-n' "seeder-$1" '-r' '-a' '600' '-A' '5' '-L' '3600' '-M' '3' '-f' '--')
RTORRENT_ARGS=('-I' '-o' "import=$1/rtorrent.rc")
WORKINGDIR="" # Default is: ~/seeds
source /etc/mail.conf "seeding" || exit 1
log() {
printf "%(%Y/%m/%d %H:%M:%S)T: %s\n" "-1" "$*" >>~/rtorrent-wrapper.log
}
[[ -z "$1" ]] && {
printf "%s: %s\\n" "$0" "missing profile name" >&2
printf " %s: %s\\n" "Usage" "$0 <profile>" >&2
log "called with midding profile name"
exit 1
}
for EXEC in "$DAEMON_EXEC" "$RTORRENT_EXEC"; do
[[ ! -e "$EXEC" ]] && {
printf "%s: %s: %s\\n" "$0" "$EXEC" "not found" >&2
log "$EXEC not found"
exit 1
}
[[ ! -x "$EXEC" ]] && {
printf "%s: %s: %s\\n" "$0" "$EXEC" "not executable" >&2
log "$EXEC not executable"
exit 1
}
done
"$DAEMON_EXEC" --list | grep "\<seeder-$1\>" >/dev/null && {
printf "%s: %s: %s\\n" "$0" "profile already started" "$1" >&2
log "profile already started: $1"
exit 2
}
cd "${WORKINGDIR:-~/seeds}" || {
printf "%s: %s: %s\\n" "$0" "failed to change to working directory" "${WORKINGDIR:-~/seeds}" >&2
log "failed to change to working directory: ${WORKINGDIR:~/seeds}"
exit 1
}
[[ ! -e "$1/rtorrent.rc" ]] && {
printf "%s: %s: %s\\n" "$0" "configuration for profile does not exist" "$1/rtorrent.rc" >&2
log "configuration for profile does not exist: $1/rtorrent.rc"
exit 1
}
log "starting profile: $1"
# The call to daemon will only return if the process exits or fails to start.
"$DAEMON_EXEC" ${DAEMON_ARGS[*]} "$RTORRENT_EXEC" ${RTORRENT_ARGS[*]}
ERR=$?
(( ERR == 0 )) && exit 0
log "failed to start profile: $1 - Exit code: $ERR"
mailx "${MAILX_ARGS[@]}" -r "$EMAIL_FROM" -s "rtorrent seeding status" "${EMAIL_TO[@]}" <<EOF
The rtorrent instance '$1' has repeatidly failed to run for any length of time - please investigate!
Exit code: $ERR.
EOF
exit $ERR