Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/sbin/runscript.sh
- rtuser="$(echo ${BASH_SOURCE##*rtorrent_})"
- rtuserid="$(getent passwd $rtuser | awk -F: '{ print $3 }')"
- rthome="$(getent passwd $rtuser | awk -F: '{ print $6 }')"
- rtconfig="${rthome}/.rtorrent.rc"
- rtgconfig="/etc/rtorrent/rtorrent.rc"
- rtoptions="-n -o import=${rtconfig} -o import=${rtgconfig}"
- rtname="rTorrent for ${rtuser}"
- rtscreenpath="$(which screen)"
- rtscreenname="torrent"
- rtpath="$(which rtorrent)"
- rtpidfile="/var/run/rtorrent_${rtuser}"
- getsession() {
- session="$(cat $1 | grep "^[[:space:]]*session[[:space:]]*=" | sed "s/^[[:space:]]*session[[:space:]]*=[[:space:]]*//")"
- session="$(echo ${session} | sed 's|~|'$2'|g')"
- echo $session
- }
- getsocket() {
- socket="$(cat $1 | grep "^[[:space:]]*scgi_local[[:space:]]*=" | sed "s/^[[:space:]]*scgi_local[[:space:]]*=[[:space:]]*//")"
- socket="$(echo ${socket} | sed 's|~|'$2'|g')"
- if [ -z ${socket} ] ; then
- echo false
- else
- echo $socket
- fi
- }
- checkuser() {
- if [ -z "$(getent passwd ${rtuser})" ] ; then
- eerror "User ${rtuser} does not exits."
- return 1
- fi
- }
- checkhome() {
- if ! [ -d $rthome ] ; then
- eerror "Home directory ${rthome} does not exist."
- return 1
- fi
- }
- checkconfig() {
- if ! [ -r "${rtconfig}" ] ; then
- eerror "Cannot find readable config ${rtconfig}."
- return 1
- fi
- if ! [ -r "${rtgconfig}" ] ; then
- eerror "Cannot find readable config ${rtgconfig}."
- return 1
- fi
- rtsession="$(getsession $rtgconfig $rthome)"
- if ! [ -d "${rtsession}" ] ; then
- eerror "Cannot find readable session directory ${rtsession} from configs ${rtgconfig}, ${rtconfig}."
- return 1
- fi
- }
- checkrunning() {
- session="$(getsession $rtgconfig $rthome)"
- echo $session
- if [ -s "${session}/rtorrent.lock" ] ; then
- pid="$(cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g")"
- echo $pid
- if ps -A | grep -sq "${pid}.*rtorrent" ; then
- eerror "${rtname} is already running"
- return 1
- else
- ewarn "Lock file has been found, but ${rtname} is not running...deleting lock file"
- rm -f ${session}/rtorrent.lock
- fi
- fi
- }
- checksocket() {
- socket="$(getsocket $rtgconfig $rthome)"
- if [ -S ${socket} ]; then
- ewarn "SCGI socket (${socket}) has been found, but rTorrent's not running...deleting socket file"
- rm -f ${socket}
- fi
- }
- preparescreen() {
- su -c "screen -ls | grep -sq '\.${rtscreenname}[[:space:]]' || screen -dmS ${rtscreenname} 2>&1 1>/dev/null" $rtuser
- }
- depend() {
- use net ypbind nis
- after slapd mysqld postgresql
- }
- start(){
- checkuser || return 1
- checkhome || return 1
- checkconfig || return 1
- checkrunning || return 1
- ebegin "Starting ${rtname}"
- checksocket
- preparescreen
- start-stop-daemon --start --verbose --chuid "${rtuser}" --chdir "${rthome}" --name rtorrent --env TERM="xterm" --exec /usr/bin/screen -- -S torrent -X screen /usr/bin/rtorrent
- eend $?
- }
- stop() {
- ebegin "Stopping ${rtname}"
- start-stop-daemon --stop --verbose --user "${rtuser}" --name rtorrent --signal 2
- eend $?
- }
Add Comment
Please, Sign In to add comment