Форум by ArjLover

Форум by ArjLover (http://forum.arjlover.net/index.php)
-   Приёмная ArjLover-a (http://forum.arjlover.net/forumdisplay.php?f=3)
-   -   Нам нужен торрент-трекер (http://forum.arjlover.net/showthread.php?t=3636)

mno 27.02.2008 13:39

Ну что мне сказать... :)
Да, вроде bnbt тоже не плохой.
Впринципе, я не против поменять треккер еще раз или еще раз. С xbtt все очень просто - вставляешь хеш в БД и все. Я не знаю, что нужно будет, что-бы вставить торрент файл в BNBT. Я могу написать cURL скрипты что-бы это делать. Похоже, что BNBT вообще не использует БД, а если использует, то свой внутренний формат. Похоже, что-бы добавить торрент, мы должны будем это делать через веб консоль.

Увы, но в Gentoo нету BNBT. Хотя, это может и не столько важно быть, если мы разсматриваем передвинуть все это на FreeBSD со временем (а может и раньше чем позже).

На чем-же он все-таки написан??

Немножко смущает, что документация не обновлялась с 2004 года. Хотя она ОООЧЕНЬ хорошо написана по сравнению со всеми остальными треккерами, что я видел.

Еще -- если генерация торрентов уже пошла, то может быть важно иметь возможность поменять порт на 2710.

По поводу иных треккеров, что вы предлагали, то я честно на них не смотрел. Немножко недоверие к тем, что написаны специально для какой-то проблеммы (например, как плаг-ин в систему пользователей vBulletin) потому-что не уверен, если они серьезно сделаны, или побыстрее что-бы добавить эту возможность. Хотя я могу быть не прав.

mno 27.02.2008 13:41

Turtle, да, мы это помним :) Просто сейчас мы еще на стадии самой установки. Сначала хотели просто поднять на текущие фильмы. А потом уже добавлять все остальные возможности (так-как это делать нужно будет, скорее всего, вручную).

ArjLover 27.02.2008 14:55

AlekseyS, ты просто герой опенсорса. :)
думаю нам не стоит совсем уж размазывать наши усилия по трекерам. По-моему требования простые, попробую подбить:
1) поддерживать весь архив, легко добавлять и удалять торренты на автоматической обработке.
2) Иметь возможность добавления торрента из под аккаунта форума. Я надеюсь сделать эту функцию без модерации, просто немного расширить правила форума.
3) Иметь некую статистику чтобы понимать картину происходящего - это я так понимаю пишется своими скриптами.

Если последний, который на порту 2710 (запутался в названиях) :) заработает - пусть работает. Нет - будем пробовать следующий.

Тем временем я сгенерил торренты для всех фильмиков, на этом сервере отвалился один интерфейс после апгрейда ОС, :( но это помогло побыстрее прохэшить. :)
Упс, тестирование откладывается, из-за потери этого интерфейса сервер почему-то не видит других серверов в своей сети. :( Неудачно получилось. Ладно буду чинить и хэшировать на других серверах...

AlekseyS 27.02.2008 15:34

Герой это конечно перебор, тут все проще - я в свое время изучал как и что в битторренте и общался с несколькими трекероводами на тему что у них и на чем работает. Так что просто в тему пришлись прошлые знания.

Значит подведу небольшой итог того что я выяснил:
XBTT под freebsd все таки РАБОТАЕТ! Мой косяк был, он мне белым по аглицки писал что ему надо, а я не понял его сходу, как в пословице: смотришь в книгу, видишь... буквы... Так что буквально 10 минут назад провел проверку работы XBTT под фрей - торрент добавился, клиент его увидел, статистику в скуле обновил, то-есть все базовые вещи отработали нормально.
Так что с движком трекера стало все ясно. (по крайней мере пока что, если что будем смотреть на BNBT, ArjLover правильно высказался: не пойдет, возьмем другой и будем пробовать с ним. Это меня вечно заносит - вижу код и просыпается в душе давно бездействующий программер... :-(

Начинается новый этап работ - добавление хэшей в базу:
1. Для этого нам нужно эти самые хэши получить из .torrent-файлов, теоретически я знаю как это делается, а вот практически... консольных программ, которые это могут сделать я не видел, кроме одной грубой и недоделанной поделки...
Что скажете?
2. Можно попробовать использовать, для начальной загрузки, режим авторегистрации торрентов на трекере и просто добавить торренты в mlDonkey. mlDonkey подключится к трекеру в первый раз и он в себя сам загрузит все хэши, потом выключим авторегистрацию и трекер продолжит работать в обычном режиме... Это кривой, но простой и быстрый путь.

Первую партию можно конечно загрузить при помощи режима авторегистрации, а вот дальше по любому придеться научиться получать хэши из .torrent-файлов...

mno 27.02.2008 17:55

Цитата:

Сообщение от AlekseyS
1. Для этого нам нужно эти самые хэши получить из .torrent-файлов, теоретически я знаю как это делается, а вот практически... консольных программ, которые это могут сделать я не видел, кроме одной грубой и недоделанной поделки...

Хм... А расскажите, плз, как это делать теоретически. Может там есть хитрый способ где-то. Я только что открыл .торрент файл в хекс вьювере, и вижу что он там негде так просто не записан. Как я понял, нужно открыть файл, пропустить весь заголовок, и сгенить sha1 всего остального. Так?

Цитата:

Сообщение от AlekseyS
2. Можно попробовать использовать, для начальной загрузки, режим авторегистрации торрентов на трекере и просто добавить торренты в mlDonkey. mlDonkey подключится к трекеру в первый раз и он в себя сам загрузит все хэши, потом выключим авторегистрацию и трекер продолжит работать в обычном режиме... Это кривой, но простой и быстрый путь.

Да, это хорошее решение, но только вначале. Все равно в будущем нужно будет самому это делать вручную... :)

AlekseyS 27.02.2008 18:38

mno, почти так. Содержимое .torrent-файла это несколько записей вида "имя=значение" в определенном формате. Несколько значений могут быть собраны в одну секцию, по большому счету такая секция всего одна info. В ней несколько записей:
имя файла=
размер файла=
размер "куска"=
sha1 всех "кусков"=sha1(кусок1)+sha1(кусок2)+...

В общем так.
Хэш торрента это sha1 всей info секции.
можно открыть любой файл, созданный createtorrent (она создает полей по минимуму, другие программы добавляют дополнительные поля):
1. Находим строчку "4:info" - это название инфо секции. 2. Сразу за ней идет символ "d" - с этого символа начинается сама секция, это первый символ который входит в расчет sha1.
3. В конце файла будут два символа "ee" - первый из них это как раз конец инфо секции, а последний это конец .torrent-файла.

То-есть чтобы подсчитать хэш торрента нужно взять кусок .torrent-файла начиная с символа d и заканчивая предпоследним "e" и прогнать его через sha1.

Это алгоритм. Начал писать программу, для его реализации, но я компилятор последний раз запускал лет 5-7 назад и написание идет с сильным скрипом...

ArjLover 27.02.2008 18:40

Погодите, ну если у нас теперь проблема сместилась в сторону потрошения бинарных файлов, то от этого не легче. А какой штатный способ добавления у этого трекера? может через него будет проще?
на данный момент прохэшилось половина мультиков, а фильмики починить пока не удалось. :(

AlekseyS 27.02.2008 18:42

Штатный для XBTT - insert в таблицу скуля. А для этого нужно знать хэш...

mno 27.02.2008 23:46

Мне кажеться, что если даже мы перейдем на BNBT, то будет проблемма примерно такой-же сложности (нужно будет cURLом подключиться к треккеру и передать ему файл, хотя это можно будет делать другим путем тоже, типа, nfs).

ArjLover 28.02.2008 01:23

Погодите. я думаю сравнить файл и то что лежит в базе не так уж сложно. Наверняка с первого взгляда будет понятно что хэш начинается с какого-то места файла, вот и все. Залить пару торрентов и посмотреть. раскусить файл на перле - одна строчка.

А тем временем хэши мультов сделались и я их скормил mldonkey, самое забавное что он сразу начал их обрабатывать. при это он линки файлов переносит в директорию old, торренты вроде остаются на месте. Делает не быстро, минут 10 у него на это уйдет..
всю папку торрентов примено 2500 штук перелил в корень сервера на трекер. Mno, принимай. :)

AlekseyS 28.02.2008 02:44

Хэша в .torrent-файле нет в чистом виде, он вычисляется на основе части файла, которую, можно найти по шаблону, в принципе (для файлов созданный createtorrent), только нужно использовать "жадный" алгоритм поиска по шаблону. И работать с файлом как с бинарными данными.
Я завтра постараюсь закончить свою утилитку для подсчета хэша, но гарантий не даю что успею...
Для нее нужен будет скрипт, который, используя утилитку, пройдется по .torrent-файлам и загрузит их хэши в базу скуля...

ArjLover, в mlDonkey битторрент модуль настроен на одновременную отдачу такого количества торрентов?

P.S. Наткнулся на свежую ветку форума про mlDonkey - написано что битторрент сеть в нем реализована не сильно хорошо и дает большую нагрузку на машину, так что как запустится сидирование такого количества торрентов нужно будет внимательно анализировать нагрузку на сервера, чтобы не довести их до стопора из-за mlDonkey...

mno 29.02.2008 01:42

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

AlekseyS 29.02.2008 04:23

Вложений: 3
mno, чего-то не понял я: трекер стоит в открытом режиме, но в базе у него вообще ничего нет...

А я тем временем закончил свою работу:
1. Программа thash - считает Хэш торрента и выводит его на stdout.
2. Скрипты regTF (добавляет) и unregTF (удаляет) - один или несколько торрентов из базы трекера, для подсчета Хэшей используют thash.
В скриптах нужно настроить параметры доступа к базе mysql - хост, порт, пользователь, пароль и т.д.

Тестировал работу thash и regTF/unregTF на FreeBSD 5.4 , mysql сервер с базой был запущен на другой машине в сети.
Загрузка по сети шла довольно неспешно - для каждого файла вычисляеться Хэш и стартует по новый mysql-client... Но все равно добавление 1-го торрента укладывалось в 2-3 секунды. Так как загрузка такого количество торрентов разовая задача, оптимизировать ее я не стал.
запуск всего процесса загрузки:

find /multiki/BT -iname "*.torrent" | xargs ./regTF

соотвественно find находит все .torrent-файлы в указанной папке и передает их с полными путями regTF или unregTF (если вдруг нужно будет массовое удаление с трекера).

Программу и скрипты прикрепил.
.txt и .zip добавил чтобы загрузить файлы на форум.
thash собирается как обычно:

tar xvf thash.tgz
cd thash
./configure
make
make install

mno 29.02.2008 16:17

Я все сделал что-бы можно было использовать эти скрипты. Теперт, MySQL слушает на 81.176.66.198, НО НЕ слушает на 127.0.0.1! Он может слушать только на один IP.

Так что в скриптах, используйте 81.... как адрес базы. Юзер и пароль я вам разослал приватными сообщениями.

ArjLover 29.02.2008 17:26

Это ты как так сделал что он только один айпи слушает? :) :)
я вообще убрал bind из конфига, теперь слушает так
0.0.0.0:3306 0.0.0.0:* LISTEN
секурити потом внутренними правилами закрутим.

я сейчас попробую влить все мультовые торренты...

mno 29.02.2008 17:47

А оки... а то он ранше толко на 127.0.0.1 слушал...

mno 29.02.2008 17:52

Как успехи? Вижу что еше не виложил... проблеммы?

mno 29.02.2008 17:56

AlekseyS, спасибо за все скрипти! У меня в последниые две недели хроническиы не хватало времени на все :(

mno 29.02.2008 18:05

ГЫ: я отключил анноунсе лог на треккере, так кок он просто ел память... с одним торрентом, он скушал 4.7МБ за пару днеи... И я еше витер тот торрент, так как он бил тестовои... БД готова для впихивания торрентов! Я потом еше скопирую мои скрипт, что делаыет еженочной бекап. А то перевпихиват все может быть болезнено если база полетит...

ArjLover 29.02.2008 19:16

Торренты влил, но трекер пока отдает оффлайн-меседж и все. Ждем mno...

AlekseyS, ты еще и герой шела! красивый скрипт! мда, sh, прошел как-то мимо моей молодости весь навык в перл ушел. :)

mno, да таблица была весьма размерная. тоже неприятно удивила.


Часовой пояс GMT +3, время: 17:41.

vBulletin® Version 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot