Handling ratio in rtorrent

Проблемы с установкой, настройкой и работой системных и сетевых программ.

Модераторы: GRooVE, alexco

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
oleg_osov
проходил мимо
Сообщения: 2
Зарегистрирован: 2011-03-02 16:31:00

Handling ratio in rtorrent

Непрочитанное сообщение oleg_osov » 2011-03-05 12:45:05

Добрый день!

Имеется роутер Linksys E3000, в который зашита "DD-WRT v24-sp2 SVN 15508 by eko", установлено optware от frater и к которому подцеплен по USB винт.
На этому роутере в числе прочего вертится rtorrent:

Код: Выделить всё

root@DD-WRT:~# ipkg-opt list | grep rtorrent
rtorrent - 0.8.6-1 - rtorrent is a BitTorrent client for ncurses, using the libtorrent library.
На этом rtorrent я хочу по расписанию менять скорость останавливать торренты, при превышении ратио.

Вот этот код отвечает за скорость:

Код: Выделить всё

# Scheduling a throttle
schedule = throttle_1,01:00:00,24:00:00,upload_rate=0
schedule = throttle_2,08:00:00,24:00:00,upload_rate=100
schedule = throttle_3,13:30:00,24:00:00,upload_rate=0
schedule = throttle_4,15:00:00,24:00:00,upload_rate=100
А вот этот код отвечает за ратио. Полностью скопирован с мануала

Код: Выделить всё

# Enable the default ratio group.
ratio.enable=

# Change the limits
ratio.min.set=200
ratio.max.set=300
ratio.upload.set=6000M

# Changing the command triggered when the ratio is reached.
system.method.set = group.seeding.ratio.command, d.close=, d.erase=
Изменение скорости работает, а ратио нет. Вопрос - это глючная сборка rtorrent под мой девайс или кривой конфиг? У кого-нибудт есть рабочая конфигурация, где по достижении заланного ратио и/или аплоада торенты закрываются? И еще вопрос - это действует только при пересечении торрентом границы ратио, а на старые торренты, где ратио 10-20 и больше уже не действует?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

Re: Handling ratio in rtorrent

Непрочитанное сообщение tyler56 » 2011-03-05 17:06:30

У меня параметры rtorrent'a меняются скриптом в зависимости от обстоятельств (загрузки канала, времени, и пр.)
Этот скрипт вызывается с параметрами которые нужно изменить. Тут входящая и исходящая скорости меняются.
Можно попробовать передать set_ratio_min, set_ratio_max
Запрос отправляется rutorrent'у

Код: Выделить всё

#!/usr/local/bin/perl

use strict;
use WWW::Curl::Easy;


my $speed_down=$ARGV[0];
my $speed_up=$ARGV[1];

sub funk_download {
print "Testing curl version ",WWW::Curl::Easy::version()," ";
# Init the curl session
my $curl= WWW::Curl::Easy->new() or die "curl init failed! ";
# Follow location headers
$curl->setopt(CURLOPT_FOLLOWLOCATION, 1);
# Add some additional headers to the http-request:
my @myheaders=("I-am-a-silly-programmer: yes indeed you are","User-Agent: Perl interface for libcURL");
$curl->setopt(CURLOPT_HTTPHEADER, \@myheaders);
$curl->setopt(CURLOPT_URL, "http://192.168.0.1/RPC1");
sub body_callback {
my ($chunk,$context)=@_;
push @{$context}, $chunk;
return length($chunk); # OK
}
$curl->setopt(CURLOPT_WRITEFUNCTION, \&body_callback);
$curl->setopt(CURLOPT_POST, 1);
$curl->setopt(CURLOPT_POSTFIELDS, "<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall><methodName>set_upload_rate</methodName><params><param><value><string>".$speed_down."</string></value></param></params></methodCall>");
$curl->setopt(CURLOPT_USERPWD, "admin:pass");
$curl->setopt(CURLOPT_COOKIEJAR, "cooc.txt");
$curl->setopt(CURLOPT_COOKIEFILE,"cooc.txt");

my @body;
$curl->setopt(CURLOPT_FILE, \@body);
if ($curl->perform() != 0) { print "Failed ::".$curl->errbuf."\n";};
print join("",@body);
}

sub funk_upload {
print "Testing curl version ",WWW::Curl::Easy::version()," ";
# Init the curl session
my $curl= WWW::Curl::Easy->new() or die "curl init failed! ";
# Follow location headers
$curl->setopt(CURLOPT_FOLLOWLOCATION, 1);
# Add some additional headers to the http-request:
my @myheaders=("I-am-a-silly-programmer: yes indeed you are","User-Agent: Perl interface for libcURL");
$curl->setopt(CURLOPT_HTTPHEADER, \@myheaders);
$curl->setopt(CURLOPT_URL, "http://192.168.0.1/RPC1");
sub body_callback {
my ($chunk,$context)=@_;
push @{$context}, $chunk;
return length($chunk); # OK
}
$curl->setopt(CURLOPT_WRITEFUNCTION, \&body_callback);
$curl->setopt(CURLOPT_POST, 1);
$curl->setopt(CURLOPT_POSTFIELDS, "<?xml version=\"1.0\" encoding=\"UTF-8\"?><methodCall><methodName>set_download_rate</methodName><params><param><value><string>".$speed_up."</string></value></param></params></methodCall>");
$curl->setopt(CURLOPT_USERPWD, "admin:pass");
$curl->setopt(CURLOPT_COOKIEJAR, "cooc.txt");
$curl->setopt(CURLOPT_COOKIEFILE,"cooc.txt");

my @body;
$curl->setopt(CURLOPT_FILE, \@body);
if ($curl->perform() != 0) { print "Failed ::".$curl->errbuf."\n";};
print join("",@body);
}