| 1 | #!/bin/bash |
| 2 | # rtorrent-screen 1.0 (Harvie 2oo9) |
| 3 | # - Simple rtorrent manager (keeps your torrents in screen transparently + allows you to monitor it using hardcopies) |
| 4 | # |
| 5 | # - Dependencies: bash, screen, rtorrent |
| 6 | # - Optionaly webserver with PHP (you will be allowed to monitor your torrents using web interface) |
| 7 | # - TODO: adding torrents using web interface... |
| 8 | |
| 9 | TARGET_DIRECTORY=~/downloads #warning: each user MUST have his own directory for downloading (on "single user" system u can use eg. /srv/http/downloads) |
| 10 | SCREEN_PID_FILE='rtorrent-screen.pid' |
| 11 | SCREEN_DUMP_INTERVAL=30; |
| 12 | SESSION_NAME='rtorrent' |
| 13 | CREATE_PHP_UI=true |
| 14 | PHP_UI='download.php' |
| 15 | |
| 16 | CONFIG_OVERRIDE=~/.config/rtorrent-screen.rc.sh |
| 17 | #source "$CONFIG_OVERRIDE" 2>/dev/null |
| 18 | |
| 19 | cd "$TARGET_DIRECTORY"; |
| 20 | if [ $? != 0 ]; then |
| 21 | echo Directory "$TARGET_DIRECTORY" does not exists create it or change path in "$CONFIG_OVERRIDE" or in "$0" |
| 22 | echo Note that each user MUST have his own separate directory for rtorrent-screen to avoid collisions. |
| 23 | exit 2; |
| 24 | fi; |
| 25 | |
| 26 | #PHP UI |
| 27 | if "$CREATE_PHP_UI"; then |
| 28 | echo " |
| 29 | <head> |
| 30 | <title>Harvie's Downloads</title> |
| 31 | </head> |
| 32 | <style> |
| 33 | * { font-size: small; color: green; background-color: black; } |
| 34 | b,i,u { color: lime; } |
| 35 | </style> |
| 36 | <pre><?php |
| 37 | if(is_file('$SCREEN_PID_FILE')) { |
| 38 | echo( |
| 39 | 'rTorrent is running. To attach to it login as <b>$USER</b> and type: <b>$0</b> or <b>screen -x '. |
| 40 | htmlspecialchars(file_get_contents('$SCREEN_PID_FILE')). |
| 41 | '</b>If you want to detach from it (leave it running on background) press <b>CTRL+a followed by d</b> and if you want to stop rTorrent definitely then press <b>CTRL+q</b> few times.<hr />'. |
| 42 | htmlspecialchars(file_get_contents('./hardcopy.0')) |
| 43 | ); |
| 44 | } else { |
| 45 | echo('rTorrent is not running at this time... To execute it use command: <b>$0</b>'); |
| 46 | } |
| 47 | ?></pre> |
| 48 | " > "$PHP_UI" |
| 49 | fi; |
| 50 | |
| 51 | #SCREEN SESSION |
| 52 | if [[ -r "$SCREEN_PID_FILE" ]]; then |
| 53 | screen -x $(cat "$SCREEN_PID_FILE"); |
| 54 | else |
| 55 | screen -U -S "$SESSION_NAME" -t "$SESSION_NAME" bash -c " |
| 56 | while true; do |
| 57 | sleep 1; |
| 58 | screen -S \$PPID -X hardcopy; |
| 59 | sleep $SCREEN_DUMP_INTERVAL; |
| 60 | done & |
| 61 | |
| 62 | echo \$PPID > $SCREEN_PID_FILE; |
| 63 | rtorrent; |
| 64 | rm -f $SCREEN_PID_FILE; |
| 65 | rm -f hardcopy.0; |
| 66 | " |
| 67 | fi; |
| 68 | |
| 69 | echo 'Thank you for using rtorrent-screen by Harvie' |