Új hozzászólás Aktív témák

  • ecaddict

    senior tag

    válasz tpeter #4276 üzenetére

    Ma már többnyire én is rtorrent-et használok, de a Tranmission stabilitásban és egyszerűségben még mindig vezet. Ha valamit biztosan le akarok tölteni akkor többnyire Transmission, ha valamit seedelek akkor rtorrent. Az rtorrent CPU használata és flexibilitása verhetettlen.
    Korábban már közreadtam a konfigjaim azóta csináltam pár apró javítást íme újra:
    /opt/etc/rtorrent.conf

    min_peers = 20
    max_peers = 40
    max_uploads = 5
    download_rate = 360
    upload_rate = 90
    directory = /mnt/protected/torrent/work/
    schedule = watch_directory,5,5,load_start=/mnt/protected/torrent/dl/*.torrent
    schedule = untied_directory,5,5,stop_untied=
    scgi_port = localhost:5000
    session = /mnt/protected/torrent/session
    port_range = 65530-65532
    port_random = no
    #check_hash = no
    #use_udp_trackers = yes

    schedule = ratio,30,60,stop_on_ratio=200

    # Encryption options, set to none (default) or any combination of the following:
    # allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
    encryption = try_outgoing

    # UTF8
    encoding_list = UTF-8

    # disable/off/auto/on
    #dht = auto

    #UDP port to use for DHT.
    #dht_port = 6881
    schedule = log,180,180,"execute=/opt/etc/rtorrlog,$get_down_rate=,$get_up_rate="

    Ebben is és a többi itt leírt fájlban le kell cserélni a /mnt/protected könyvtárat arra ahova az rtorrent könyvtárát tervezed.
    Az encoding_list az ékezetes karakterekért.
    A schedule pedig meghívja az /opt/etc/rtorrlog scriptet (chmod u+x) három percenként a le és fel byte/s-el. A script a system logba ír hasonlóan mint a Transmission azaz amikor nem fut a a javascript-es kliens utólag akkor is láthatjuk mi történt.

    /opt/etc/rtorrlog

    #!/bin/sh
    LD=`uptime | sed 's/.*average: //' | awk '{print($2)}' | sed "s/,//"`
    ED=`date +%s`
    DLK=`expr $1 / 1000`
    ULK=`expr $2 / 1000`
    DLB=`expr $1 % 1000`
    ULB=`expr $2 % 1000`
    logger -t rtorrents "$ED 1 dl $DLK.$DLB ul $ULK.$ULB ld $LD"

    A javascript kliens letölthető:
    [link]
    Valahova a lighttpd által látott helyre kell kicsomagolni.

    A szervíz inditó script:
    /opt/etc/init.d/S99rtorrent

    #!/bin/sh

    CONFIG="/opt/etc/rtorrent.conf"
    OPTIONS="-n -o import=${CONFIG}"
    BASE="/opt/share/torrent"
    SRNAME=rtorrent
    PATH=/opt/bin:/opt/sbin:/usr/bin:/sbin:/bin:/usr/sbin
    NAME=rtorrent
    EXEC=/opt/bin/$NAME
    EXSC=/opt/bin/screen

    checkcnfg() {
    if ! [ -x $EXSC ]; then
    logger -t $NAME "screen not found."
    return 3
    fi
    exists=0
    for i in `echo "$PATH" | tr ':' '\n'` ; do
    if [ -f $i/$NAME ] ; then
    exists=1
    break
    fi
    done
    if [ $exists -eq 0 ] ; then
    logger -t $NAME "cannot find $NAME binary in PATH $PATH"
    exit 3
    fi
    if ! [ -r "${CONFIG}" ] ; then
    logger -t $NAME "cannot find readable config $CONFIG"
    exit 3
    fi
    session=`getsession "$CONFIG"`
    if ! [ -d "${session}" ] ; then
    logger -t $NAME "cannot find readable session directory $session from config $CONFIG"
    exit 3
    fi
    }

    getsession() {
    session=`awk '/^[[:space:]]*session[[:space:]]*=[[:space:]]*/{print($3)}' "$CONFIG"`
    echo $session
    }

    getprange() {
    ports=`awk '/^[[:space:]]*port_range[[:space:]]*=[[:space:]]*/{print($3)}' "$CONFIG" | sed "s/-/ /"`
    echo $ports
    }

    getdhtport() {
    dht_port=`awk '/^[[:space:]]*dht_port[[:space:]]*=[[:space:]]*/{print($3)}' "$CONFIG"`
    echo $dht_port
    }

    fwopen() {
    DHT_PORT=`getdhtport "$CONFIG"`
    iptables -D INPUT -j DROP
    PORTS=$(seq `getprange "$CONFIG"`)
    for P in $PORTS; do
    iptables -I INPUT -i vlan1 -p tcp --syn --dport $P -j ACCEPT
    done
    if [ $DHT_PORT ]; then
    iptables -I INPUT -i vlan1 -p tcp --dport $DHT_PORT -j ACCEPT
    fi
    iptables -A INPUT -j DROP
    }

    fwclose() {
    DHT_PORT=`getdhtport "$CONFIG"`
    PORTS=$(seq `getprange "$CONFIG"`)
    for P in $PORTS; do
    iptables -D INPUT -i vlan1 -p tcp --syn --dport $P -j ACCEPT
    done
    if [ $DHT_PORT ]; then
    iptables -D INPUT -i vlan1 -p tcp --dport $DHT_PORT -j ACCEPT
    fi
    }

    d_start() {
    [ -d "${BASE}" ] && cd "${BASE}"
    fwopen
    stty stop undef && stty start undef
    $EXSC -ls | grep ".$SRNAME[[:space:]]" > /dev/null || $EXSC -dm -S $SRNAME
    # without sleep screen may not be sometimes ready to start anything
    sleep 3
    $EXSC -S "$SRNAME" -X screen nice $EXEC $OPTIONS
    for I in 0:3 ; do
    if [ -n "`pidof $NAME`" ]; then
    logger -t $NAME "Started PID: `pidof $NAME`"
    break
    fi
    sleep 1
    done
    }

    d_stop() {
    fwclose
    session=`getsession "$CONFIG"`
    if ! [ -s ${session}/rtorrent.lock ] ; then
    logger -t $NAME "Lock file failed: ${session}/rtorrent.lock"
    return
    fi
    PID=`cat ${session}/rtorrent.lock | awk -F: '{print($2)}' | sed "s/[^0-9]//g"`
    if ps -A | grep -sq $PID.*rtorrent ; then # make sure the pid doesn't belong to another process
    kill -s INT $PID
    logger -t $NAME "Stopped PID: $PID"
    sleep 1
    for I in 0:5 ; do
    PSE=`ps -p $PID | grep "$PID"`
    if [ -z "$PSE" ]; then
    break
    fi
    sleep 1
    done
    fi
    SCSTOP=`$EXSC -list | grep "\.$SRNAME" | awk '{print($1)}' | sed "s/\.$SRNAME//"'`
    if [ -n "$SCSTOP" ]; then
    kill $SCSTOP
    logger -t $NAME "Stopped screen: $SCSTOP"
    fi
    }

    checkcnfg

    case "$1" in
    start)
    echo "Starting $NAME"
    d_start
    echo "."
    ;;
    stop)
    echo "Stopping $NAME"
    d_stop
    echo "."
    ;;
    restart|force-reload)
    echo "Restarting $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
    *)
    echo "Usage: $0 {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
    esac

    exit 0

    A cgi script ami pedig grafikont csinál az rtorrent system logjából (ehhez persze kell a gnuplot
    ipkg install gnuplot):
    /<web root>/cgi/bin/rtorrent.cgi

    #!/bin/sh

    HTDIR=/mnt/cgi-bin
    SYSLOG=/opt/var/log/messages
    GNUPLOT=/opt/bin/gnuplot
    GNUPLOT_COMMAND=${HTDIR}/rtorrlog.gnuplot
    GNUPLOT_DATA=${HTDIR}/rtorrlog.data
    GNUPLOT_OUTPUT=${HTDIR}/rtorrlog.png
    HTTP_IMG_LOCATION=./rtorrlog.png
    TIMEZONE_OFFSET=+7200

    _log ()
    {

    if [ ! -r ${SYSLOG} ]; then
    echo "<p>${SYSLOG} not readable. Properly configure syslogd at "
    echo "system startup.</p>"
    return
    fi

    echo "<pre>"
    sed -n -e "/ rtorrents.*:/{s/.*: \([0-9]\{1,10\}\) [0-9]\{1,\} dl \([0-9.]\{1,\}\) ul \([0-9.]\{1,\}\) ld \([0-9.]\{1,\}\)/\1 \2 -\3 \4/;t data;p;b;:data w ${GNUPLOT_DATA}" -e "}" ${SYSLOG}
    echo "</pre>"

    if [ ! -x ${GNUPLOT} ]; then
    echo "<p>gnuplot: ${GNUPLOT} not found. Properly configure paths "
    echo "in $0 for transfer graphing!</p>"
    return
    fi

    echo "<p>Creating graph...</p>"
    TZO=${TIMEZONE_OFFSET:-0}
    cat > ${GNUPLOT_COMMAND} << __EOF__
    set terminal png small size 1024,320
    set output '${GNUPLOT_OUTPUT}'
    set xdata time
    set timefmt "%s"
    set format x "%H:%M\n%m/%d"
    set ytics nomirror
    set y2tics nomirror
    set y2range [0:]
    set ylabel "rtorrent transfer rate [kB/s]"
    set y2label "System load (5 min average)"
    set y2tics 1
    set xlabel "Time [UTC ${TZO} seconds]"
    plot '${GNUPLOT_DATA}' using (\$1+86400+${TZO}):2 title 'download' axis x1y1 with impulses, \
    '${GNUPLOT_DATA}' using (\$1+86400+${TZO}):3 title 'upload' with impulses, \
    '${GNUPLOT_DATA}' using (\$1+86400+${TZO}):4 axis x1y2 title 'load' with lines
    quit
    __EOF__

    ${GNUPLOT} ${GNUPLOT_COMMAND}

    echo "<img src=\"${HTTP_IMG_LOCATION}\">"

    }

    _header ()
    {
    cat << __EOF__
    Content-type: text/html

    <html>
    <head>
    <title>rtorrent</title>
    <style type="text/css">
    <!--
    body {
    padding:0;
    margin:0;
    width: auto;
    color: #2f2f4f;
    font-family:tahoma;
    font-size:11px;
    }

    input {
    padding:3px 7px;
    margin:0 4 0 4;
    color:#fff;
    font-family:tahoma;
    font-size:11px;
    font-weight:bold;
    background-color:#ff0000;
    border: 5 px #aaaaaa raised;
    }

    form {
    padding:10px;
    margin:0px;
    background-color:#FFF9D8;
    }

    p {
    font-size:14px;
    padding:0px;
    margin:10px;
    color:#008000;
    }

    #footer{
    padding:0;
    margin:0;
    }
    //-->
    </style>
    </head>
    <body>
    <form action=rtorrent.cgi method=get>
    <input type=submit accesskey=c name=ACTION value=log>
    <br><br>
    __EOF__

    }

    _footer ()
    {
    echo "<p>" ; uptime ; echo "</p>"

    cat << __EOF__
    </body>
    </html>
    __EOF__
    }

    query_string=`echo "$QUERY_STRING" | sed 's/&/;/g'`
    eval ${query_string}

    case "${ACTION}" in
    log) _header ; _log ; _footer ;;
    *) _header ; _footer ;;
    esac

    A TIMEZONE_OFFSET-et néha változtatni kell...

    [ Szerkesztve ]

    ### RT-N16, WL-500 Oleg optware script ami majdnem mindent feltesz ### ===========> http://wl500g.info/showthread.php?t=23684 <===========

Új hozzászólás Aktív témák