Pull to refresh

uTorrent для маководов

IT-companies
Радостная новость для любителей торрентов, по совместительству — маководов!
Сегодня утром счастливчики, подписавшиеся на новости о выпуске mac-версии программы, получили сообщение на почту

с таким содержанием...
Total votes 57: ↑54 and ↓3 +51
Views 3.2K
Comments 85

моддинг wTorrent'a

Lumber room
Здравствуйте, господа.
Преамбула:
Неделю назад я купил себе дешёвый PC для организации на нём локального файл-сервера, роутера, качалки и прочих удобных сервисов, которые на десктопной машине держать надоело. Всё это дело крутится под gentoo.

Амбула:
Сегодня потратил вечер и немного подмоддил wTorrent:
Теперь он выглядит вот так:

Из нововведений:
1. Теперь он показывает общий объём траффика, in/out.
2. Представленный в центре страницы график входящего/исходящего трафика.

Рассмотрим пункт первый. Реализация его проста:
Добавляем в планировщик rtorrent'а правила. Делается это через ctrl+x в клиенте или добавлением строки в конфиг и перезапуск.
schedule=export_traffic,0,15,«execute=/var/www/localhost/htdocs/wtorrent/schedule/passthrough,$get_up_total=,$get_down_total=,/var/www/localhost/htdocs/wtorrent/schedule/traffic.rtorrent»
это правило каждые 15 секунд в файл traffic.rtorrent через маленький скрипт passthrough
#!/bin/sh
echo $1 $2 > $3

будет писать 2 числа: исходящий и входящий объём трафика. Сделано это потому, что через xmlrpc отдаётся signed integer, которое при объёме трафика > 2Гб ожидаемо уходит в отрицательный диапазон :-) Как его научить отдавать большие числа я не нашёл — поэтому пришлось сделать такой костыль.

Теперь в rtorrent.cls.php добавим следующие три метода:
private function getTrafficInfo()
{
static $data;

if (!$data){
if (is_file('./schedule/traffic.rtorrent')) {
$data = file('./schedule/traffic.rtorrent');
$data = explode(' ', $data[0]);
} else {
$data = array(0, 0);
}
}

return $data;
}

public function getDownTotal()
{
if ($data = $this->getTrafficInfo()) {
return $this->getCorrectUnits($data[1]);
}

return $this->getCorrectUnits($this->get_info_rtorrent('get_down_total', false, false));
}

public function getUpTotal()
{
if ($data = $this->getTrafficInfo()) {
return $this->getCorrectUnits($data[0]);
}

return $this->getCorrectUnits($this->get_info_rtorrent('get_up_total', false, false));
}

которые просто извлекают из файла экспортируемые торрент-клиентом числа. Теперь в шаблоне menu.tpl.php просто покажем эти два числа:
{$str.dw_rate} {$web->getDownload()} ({$web->getDownTotal()})
{$str.up_rate} {$web->getUpload()} ({$web->getUpTotal()})

добавив их в скобки после блоков с текущей скоростью.

Задача рисования графика немногим более сложная.
Для её реализации мы добавляем ещё одно правило в планировщик:
schedule=import_traffic,0,60,«execute=/usr/bin/php,-f,/var/www/localhost/htdocs/wtorrent/schedule/bandwidth.php»
это правило каждую минуту запускает php-скрипт:
<?php

chdir(dirname(__FILE__));

$datafile = './traffic.rtorrent';

if (is_file($datafile)) {
$data = file($datafile);
list($out, $in) = explode(' ', $data[0]);

$out = (double)$out;
$in = (double)$in;

require_once '../conf/user.conf.php';

$db = new PDO(DB_STAT_DSN, DB_STAT_LOGIN, DB_STAT_PWD);

$qry = 'SELECT `in`, `out`, `time` FROM `bandwidth` ORDER BY `id` DESC LIMIT 1';
$stmt = $db->query($qry);

$delta_in = 0;
$delta_out = 0;

if ($row = $stmt->fetch()) {
if ($in >= $row['in'] && $out >= $row['out']) {
$delta_in = $in - $row['in'];
$delta_out = $out - $row['out'];
}
}

$db->query('INSERT INTO `bandwidth` (`in`, `delta_in`, `out`, `delta_out`, `period`) VALUES (' . $in . ', ' . $delta_in . ', ' . $out . ', ' . $delta_out . ", TIME_TO_SEC(TIMEDIFF(NOW(), '" . $row['time'] . "')))");
}

?>


Этот примитивный скрипт сравнивает текущие значения трафика в файле traffic.torrent и на основании этих данных записывает в базу текущие значения и разницу с предыдущими.

Вот схема БД и таблицы, в которую скрипт пишет данные:
CREATE DATABASE `rtorrent`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

CREATE TABLE `bandwidth` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`in` BIGINT(20) DEFAULT NULL,
`delta_in` BIGINT(20) DEFAULT NULL,
`out` BIGINT(20) DEFAULT NULL,
`delta_out` BIGINT(20) DEFAULT NULL,
`time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`period` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `time` (`time`)
)ENGINE=MyISAM
AUTO_INCREMENT=1 ROW_FORMAT=FIXED CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';


Осталось совсем немного :-) Скрипт, рисующий график будет использовать jpgraph. Вот содержание самого скрипта:

<?php

include "../../lib/jpgraph/jpgraph.php";
include "../../lib/jpgraph/jpgraph_line.php";
include "../../lib/jpgraph/jpgraph_scatter.php";
include "../../lib/jpgraph/jpgraph_regstat.php";

include "../../conf/user.conf.php";

$db = new PDO(DB_STAT_DSN, DB_STAT_LOGIN, DB_STAT_PWD);

$stmt = $db->query('SELECT SUM(`delta_in`) / 1024 / SUM(`period`) AS `in`,
SUM(`delta_out`) / 1024 / SUM(`period`) AS `out`,
MAX(`time`) AS `time`
FROM `bandwidth`
WHERE `time` > DATE_SUB(NOW(), INTERVAL 12 HOUR)
GROUP BY CONCAT(DATE(`time`), HOUR(`time`), FLOOR(MINUTE(`time`) / 5))
ORDER BY `time`');
$x = $in = $out = array();
while ($row = $stmt->fetch()) {
$ts = strtotime($row['time']);
$x[] = $ts;
$in[] = $row['in'];
$out[] = $row['out'];
}

// Setup the basic graph
$graph = new Graph(800, 400);
$graph->SetMargin(30, 10, 0, 30);
$graph->title->Set('Bandwidth, KB/s');
$graph->SetAlphaBlending();

// Setup a manual x-scale (We leave the sentinels for the
// Y-axis at 0 which will then autoscale the Y-axis.)
// We could also use autoscaling for the x-axis but then it
// probably will start a little bit earlier than the first value
// to make the first value an even number as it sees the timestamp
// as an normal integer value.
$graph->SetScale("intlin", 0, max(max($out), max($in)) * 1.1, reset($x), end($x));
$graph->xgrid->Show();
$graph->yaxis->HideZeroLabel();
$graph->SetFrame(false);

function TimeCallback($aVal) {
return Date('H:i',$aVal);
}
// Setup the x-axis with a format callback to convert the timestamp
// to a user readable time
$graph->xaxis->SetLabelFormatCallback('TimeCallback');
//$graph->xaxis->SetLabelAngle(90);

// Create the line
$p1 = new LinePlot($out, $x);
$p1->SetColor("red");

$p2 = new LinePlot($in, $x);
$p2->SetColor("blue");

// Add lineplot to the graph
$graph->Add($p1);
$graph->Add($p2);

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");

// Output line
$graph->Stroke();

?>


Вначале мы подключаем необходимые библиотеки. Затем — простым запросом выбираем данные из базы. Причём аггрегируем их в интервалы по 5 минут, чтобы график получался более усреднённым и плавным. Затем — на основе примеров, идущих с jpgraph, «собираем» график нужного вида. Полученный код помещаем в файл wt/img/bandwidth.php.

Ну и самое последнее — отображение полученного графика на странице wtorrent.

Добавляем пункт меню. Это делается также в файле rtorrent.cls.php, добавлением элемента 'Graphic' => 'Graphic' в ассоциативный массив с меню menu_admin.
Потом — создаём класс, который будет управлять отображением страницы Graphic.cls.php:

<?php

class Graphic extends rtorrent
{
public function construct()
{
if(!$this->setClient())
{
return false;
}
}
}
?>


Ну и наконец создаём шаблон с единственной строчкой, которая и будет показывать график, graphic.tpl.php:


Всё, после этих нехитрых манипуляций у вас должно было получиться результат, сходный с тем, что я продемонстрировал выше. :-)

PS: все исходники, которые приводились выше, можно скачать тут.
Total votes 38: ↑23 and ↓15 +8
Views 363
Comments 25

ThePirateBay и Google?

Lumber room
Небольшое сравнение, которое я оставлю без комментариев. Оно ни на что не претендует и предоставляется as is. Если кто- то не знает, в самое ближайшее время, в Швеции состоится слушание, которое решит судьбу одного из крупнейших торрент-трекеров, ThePirateBay.org
Следить за слушанием можно на сайте http://trial.thepiratebay.org/ и в твиттере, по метке #spectrial

Я далеко не сторонник использования пиратского софта и музыки. Но и текущая ситуация меня не устраивает — цены сильно завышены, нормального доступа к фильмам и играм без перевода на русский язык — нет. Поэтому хочется, чтобы этот судебный процесс имел большой общественный резонанс. И именно поэтому я решил написать пост, так или иначе относящийся к этой злободневной теме.

Я считаю, что ThePirateBay похож на Google. Чем же?

Total votes 101: ↑71 and ↓30 +41
Views 349
Comments 140

Пресс-конференция команды The Pirate Bay

Decentralized networks *


Основателям торрент-трекера The Pirate Bay (TPB) предъявлен иск — им грозит до двух лет тюрьмы и штраф в размере $140.000. Против них также подан коллективный гражданский иск от Warner Bros., MGM Pictures, Columbia Pictures, 20th Century Fox, Sony BMG. Они требуют гораздо более солидной компенсации в 14 миллионов долларов.

В связи с этим командой TPB была проведена пресс-конференция, на которой присутствовали люди из TorrentFreak. О чем и написали вчера. Ниже перевод этой конференции.
Читать дальше →
Total votes 194: ↑188 and ↓6 +182
Views 836
Comments 285

Настройка conky для отображения количества новых ТВ-шоу

Lumber room
В этой статье я покажу, как настроить систему таким образом, чтобы новые серии ваших новых ТВ-шоу автоматически закачивались в виде торрентов, а конки отображал количество этих самых закачанных торрентов.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 720
Comments 1

Онлайн P2P клиент

Self Promo
image

Месяца 3 назад я показал на Хабре первую бета-версию моего проекта. На тот момент было довольно много мелких багов и не большая стабильность всей системы в целом. На то это и приставка «бета» впринципе :)

С тех пор все известные дыры были заделаны, частично изменена система монетизации и стабильность не вызывает опасений. Для регистрации теперь достаточно ввести только свой ник и пароль.
читать дальше
Total votes 70: ↑59 and ↓11 +48
Views 1.2K
Comments 107

Идеальный NAS? Другая точка зрения, eBox-2300SX

Computer hardware
Около месяца назад я пришел к выводу, что мне нужен NAS. Для чего? Это просто — мне хотелось качать торренты независимо от основного компьютера. Т.е забил закачки в очередь и делай с основным компом что хочешь — трудится пусть NAS. Сразу же возник вопрос — а что, собственно, брать?
Я определил для себя относительные критерии:
— цена до 5000 рублей
— бесшумность
— функциональность
— небольшие размеры
Пройдясь по ассортименту доступных моделей, я понял одну очень важную штуку — при цене до 5000 рублей, ни один NAS не может вменяемо заниматься закачкой торрентов. В первую очередь потому, что аппаратная платформа данных моделей очень слаба, а торренты известны своей прожорливостью (относительно прямой передачи данных).
А если к этому еще и добавить стоимость жесткого диска, то становится прям совсем нехорошо.

И тогда я заинтересовался тонкими клиентами.
Читать дальше →
Total votes 98: ↑92 and ↓6 +86
Views 9.6K
Comments 116

Зачем нужен firewall на веб-проектах

Information Security *
Здравствуйте, обычно при создании проектов в интернете при вопросе безопасности бОльшее внимание уделяют веб-приложению, а о защите самого сервера забывают, а именно о firewall'е. Я понимаю, что настройкой сервера, и в том числе firewall'а, должен заниматься специальный человек — сисадмин, но во многих ситуациях получается так, что программист сам себе админ. На настройку firewall'а даже у программиста уйдёт всего лишь около 1 дня — это избавит от потенциальных проблем. От каких? Сейчас расскажу небольшую историю «взлома».
Читать дальше →
Total votes 90: ↑80 and ↓10 +70
Views 12K
Comments 72

Собираем тихий и вместительный домашний сервер

DIY
image
Задача: собрать малогабаритный домашний сервер с четырьмя 3,5-дюймовыми HDD, по возможности тихий. Служить будет в качестве NAS, backup-сервера и торрентокачалки.

Решение
Читать дальше →
Total votes 107: ↑100 and ↓7 +93
Views 36K
Comments 164

Design Inspiration vol.1

Design
У каждого мудрого дизайнера, всегда есть набор работ, собранный в интернете, который может вывести из творческого ступора, задать планку по качеству, и в самый депрессивный момент — вдохновить. Не помню поднимался ли данный вопрос на хабре но на днях tastmeru поднял данную тему в своем жж. И в резултате получилось выложить наши с ним подборки на torrents.ru. ( Там все с подробностями можно посмотреть, замучался тему оформлять, но там вроде все красиво получилось )

image

Мне кажется такая подборка будет интересна дизайнерам хабра.

В следующем сборнике я попробую сохранить авторство, чтобы всегда можно было посмотреть другие работы автора. Ну и сами работы в будущем будут лучше отсортированы чем сейчас, а главное планируется много нового и интересного. Жду комменатриев и пожеланий как все это улучшить и сделать удобнее.

P.S. присылайте свои подборки. А также некоторые мои мысли по поводу flickr Design Inspiration vol.2
Total votes 63: ↑49 and ↓14 +35
Views 430
Comments 38

Из чего состоит мировой торрент-трафик?

Decentralized networks *


Попытка оценки. Только факты.

Студент Принстона, Sauhard Sahi, провел небольшое исследование, с целью оценить, из какого рода данных состоит мировой торрент-трафик. Для этого он подключился к сети Mainline DHT, основному DHT, используемом Bitorrent, uTorrent, Transmission и др. (Azureus/Vuze использует по умолчанию иную DHT-систему, но существует плагин, позволяющий ему использовать и Mainline DHT), и получил данные и фрагменты из 1021 случайно выбранного торрента, находящегося в раздаче.
Читать дальше →
Total votes 92: ↑86 and ↓6 +80
Views 4.3K
Comments 119

Релиз µTorrent 2.0

Decentralized networks *
Тестирование новой версии µTorrent 1.9 началось ещё больше года назад. Постепенно программа обрастала новыми функциями, и номер версии в итоге был сменен на 2.0.
И вот, 25 явнваря, была выпущена тестовая сборка RC5 (17920), а сегодня, спустя неделю, по причине отсутствия проблем с последним билдом — он перешёл в статус финальной версии.
image

Ключевые особенности µTorrent 2.0:
  • Поддержка UDP-трекеров;
  • Поддержка микро-транспортного протокола µTP и TCP Rate Control;
  • Улучшения интерфейса: новый диалог установки, улучшенный встроенный тест скорости, новый дефолтный скин;
  • Функция Transfer Cap для контроля потребления траффика.
Про преимущества новых протоколов хорошо написано тут: habrahabr.ru/blogs/p2p/68332

Скачать µTorrent 2.0 можно с официального сайта: download.utorrent.com/2.0/utorrent.exe

Тем временем автор программы не останавливается на достигнутом и продолжает развитие программы: свежие тестовые билды версии 2.1 можно найти на официальном форуме: forum.utorrent.com/viewtopic.php?id=63247
Total votes 122: ↑120 and ↓2 +118
Views 2.5K
Comments 93

Еще один способ использования Dropbox

Cloud services *
image

Доброго времени суток Хабр! Хочу описать свой способ использования сервиса Dropbox. Поиск по сайту выдает кучу всяких способов использования данного файлообменника — это и хостинг небольших сайтов, и бекап данных, и просто передача небольших файлов. Для меня же Dropbox решил проблему удаленной загрузки торрентов.
Читать дальше →
Total votes 56: ↑41 and ↓15 +26
Views 476
Comments 35

Парсим RSS LostFilm'a с помощью grep и передаем на закачку через wget

Decentralized networks *
Tutorial
RSS
Однажды мне надоело вручную просматривать LostFilm на наличие новых вышедших серий и я решил автоматизировать этот процесс. Дело в том, что многие BitTorrent клиенты имеют в своих настройках так называемые папки слежения (wach directory). Как только в этой папке появляется новый torrent файл BitTorrent клиент сразу же начинает его загрузку. Обычной практикой, к примеру, является создание такой папки и открытие к ней доступа на запись по FTP. Теперь, все что нам требуется, это автоматизировать скачивание torrent файла по выходу нового эпизода в указанную папку для их дальнейшей автоматической загрузки. Как сделать именно это я сейчас и покажу.
Читать дальше →
Total votes 61: ↑53 and ↓8 +45
Views 19K
Comments 75

Продолжаем парсить RSS теперь уже kinozal'a используя grep, wget/curl

Decentralized networks *
Tutorial
RSS
В моем предыдущем посте про автоматизацию загрузок новых эпизодов с RSS ленты LostFilm'а хабраюзер AmoN поднял правильный вопрос о невозможности описанным мною способом загрузки раздач, прямых ссылок на torrent файл которых в RSS ленте не содержится. В качестве примера был приведен трекер кинозал.тв. Именно решению этого вопроса посвящен сей пост ;)
Читать дальше →
Total votes 37: ↑31 and ↓6 +25
Views 12K
Comments 24

Рунетология (49): правовой статус и судьба торрентов

Lumber room
Генеральный директор компании «Интернет Контент» Андрей Клименко и управляющий партнер юридической компании «Сенешаль Нейман» Павел Шинкаренко — о юридическом статусе торрентов, о технологиях блокирования распространения нелегального контента, о последствиях закрытия Torrents.ru и судьбе других торрент-трекеров, о достоинствах протокола Bittorrent, а также о деятельности «Пиратской партии» и глубине правовых проблем с социальной сетью «Вконтакте».

Интервью:
  • Можно ли оценить экономический ущерб от пиратства?
  • Торренты: юридические и этические противоречия
  • Возможен ли альянс между правообладателями и поисковыми системами?
  • Система контроля за пользователями торрентов от компании «Интернет контент»: технология, алгоритмы работы, бизнес-модель
  • Судебная практика в области интернет-права
  • Преследование нелегального контента: бизнес нового поколения?
  • В чем недостатки donation-модели дистрибуции?
  • Будущее торрент-пиратства — прогнозы и предположения
Обсуждаемые новости:
  • «Вконтакте» выиграла у ВГТРК в суде
  • Провайдеры будут делиться IP-адресами пользователей с милицией?
  • Троян вымогает деньги у пользователей торрентов
Послушать предыдущие выпуски и подписаться на RSS подкаста
Страница «Рунетологии» на Facebook

Total votes 33: ↑26 and ↓7 +19
Views 863
Comments 13
1