rTorrent
Light bittorrent client.
InitScript (LSB)
/etc/init.d/rtorrent-daemon.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides: rtorrent-daemong
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop rtorrent daemon for rutorrent
### END INIT INFO
NAME=rtorrent-daemon.sh
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Permet d'afficher un message plus visible (en vert)
# @param $1 Le message
function successMsg(){
echo -e "\033[32m${1}\033[0m"
}
# Permet d'afficher un message plus visible (en orange)
# @param $1 Le message
function warningMsg(){
echo -e "\033[33m${1}\033[0m"
}
# Permet d'afficher un message plus visible (en rouge)
# Remarque : Cette fonction provoque l'arret du script
# @param $1 Le message
function errorMsg(){
echo -e "\033[31m${1}\033[0m"
exit 1
}
# Permet d'afficher un message plus visible (bleu)
function boldMsg(){
echo -e "\033[34m${1}\033[0m"
}
# Permet un message a gauche avec un label a droite (vert)
# @param $1 Le message
# @param $2 (optionel) le label
function labelSuccessMsg() {
local msg="$1"
local label="$2"
local color=$(tput setaf 2)
local normal=$(tput sgr0)
local supp=""
local cold=0
if [ -n "$msg" ]
then
let cold=-1
supp="${color}|${normal}"
fi
if [ -z "$label" ]
then
label="ok"
fi
let cold=$(tput cols)-${#msg}+${#color}+${#normal}+${cold}
printf "%s%${cold}s" "${supp}${msg}" "[${color} ${label} ${normal}]"
}
# Permet un message a gauche avec un label a droite (rouge)
# Remarque : arret du script
# @param $1 Le message
# @param $2 (optionel) le label
function labelErrorMsg() {
local msg="$1"
local label="$2"
local color=$(tput setaf 1)
local normal=$(tput sgr0)
local supp=""
local cold=0
if [ -n "$msg" ]
then
let cold=-1
supp="${color}|${normal}"
fi
if [ -z "$label" ]
then
label="fail"
fi
let cold=$(tput cols)-${#msg}+${#color}+${#normal}+${cold}
printf "%s%${cold}s" "${supp}${msg}" "[${color} ${label} ${normal}]"
exit 1
}
# Permet un message a gauche avec un label a droite (orange)
# @param $1 Le message
# @param $2 (optionel) le label
function labelWarningMsg() {
local msg="$1"
local label="$2"
local color=$(tput setaf 3)
local normal=$(tput sgr0)
local supp=""
local cold=0
if [ -n "$msg" ]
then
let cold=-1
supp="${color}|${normal}"
fi
if [ -z "$label" ]
then
label="warn"
fi
let cold=$(tput cols)-${#msg}+${#color}+${#normal}+${cold}
printf "%s%${cold}s" "${supp}${msg}" "[${color} ${label} ${normal}]"
}
# Permet un message a gauche avec un label a droite (orange)
# @param $1 Le message
# @param $2 (optionel) le label
function labelBoldMsg() {
local msg="$1"
local label="$2"
local color=$(tput setaf 6)
local normal=$(tput sgr0)
local supp=""
local cold=0
if [ -n "$msg" ]
then
let cold=-1
supp="${color}|${normal}"
fi
if [ -z "$label" ]
then
label="info"
fi
let cold=$(tput cols)-${#msg}+${#color}+${#normal}+${cold}
printf "%s%${cold}s" "${supp}${msg}" "[${color} ${label} ${normal}]"
}
case $1 in
start)
echo "Starting rtorrent... "
su -l rtorrent -c "screen -fn -dmS rtd nice -19 rtorrent"
if [ $? == 0 ]
then
labelSuccessMsg
else
labelErrorMsg
fi
;;
stop)
if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0 ]
then
echo "Shutting down rtorrent... "
killall -r "^.*rtorrent$"
if [ $? == 0 ]
then
labelSuccessMsg
else
labelErrorMsg
fi
else
labelBoldMsg "rtorrent is not running"
fi
;;
status)
if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0 ]
then
labelSuccessMsg "rtorrent running" "running"
else
labelErrorMsg "rtorrent doesnt running" "shutdown"
fi
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status}" >&2
exit 2
;;
esac
chmod +x /etc/init.d/rtorrent-daemon.sh
update-rc.d rtorrent-daemon.sh defaults 99
Configuration
.rtorrent.rc
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.
#scgi_local = /tmp/rpc.socket
scgi_port = 127.0.0.1:5000
# Maximum and minimum number of peers to connect to per torrent.
#min_peers = 40
#max_peers = 100
# Same as above but for seeding completed torrents (-1 = same as downloading)
#min_peers_seed = 10
#max_peers_seed = 50
# Maximum number of simultanious uploads per torrent.
#max_uploads = 15
# Global upload and download rate in KiB. "0" for unlimited.
#download_rate = 0
#upload_rate = 0
# Default directory to save the downloaded torrents.
directory = /media/ext_usb_stockage
# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = /home/rtorrent/sessions
# Watch a directory for new torrents, and stop those that have been
# deleted.
#schedule = watch_directory,5,5,load_start=./watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=
# Close torrents when diskspace is low.
#schedule = low_diskspace,5,60,close_low_diskspace=100M
# The ip address reported to the tracker.
#ip = 127.0.0.1
#ip = rakshasa.no
# The ip address the listening socket and outgoing connections is
# bound to.
#bind = 127.0.0.1
#bind = rakshasa.no
# Port range to use for listening.
#port_range = 6890-6999
# Start opening ports at a random position within the port range.
#port_random = no
# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#check_hash = no
# Set whetever the client should try to connect to UDP trackers.
#use_udp_trackers = yes
# Alternative calls to bind and ip that should handle dynamic ip's.
#schedule = ip_tick,0,1800,ip=rakshasa
#schedule = bind_tick,0,1800,bind=rakshasa
# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# encryption = allow_incoming,enable_retry,prefer_plaintext
# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
# dht = auto
# UDP port to use for DHT.
#
# dht_port = 6881
# Enable peer exchange (for torrents not marked private)
#
# peer_exchange = yes
#
# Do not modify the following parameters unless you know what you're doing.
#
# Hash read-ahead controls how many MB to request the kernel to read
# ahead. If the value is too low the disk may not be fully utilized,
# while if too high the kernel might not be able to keep the read
# pages in memory thus end up trashing.
#hash_read_ahead = 10
# Interval between attempts to check the hash, in milliseconds.
#hash_interval = 100
# Number of attempts to check the hash while using the mincore status,
# before forcing. Overworked systems might need lower values to get a
# decent hash checking rate.
#hash_max_tries = 10