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