Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Re-Tracker | Система локальных ретрекеров | Ретрекер _ Патчер торрентов _ Программирования патчера

Автор: boris_z 21.6.2009, 4:00

Вопрос наверно к разработчикам. У меня встала проблема, написать свой патчер для ретеркера. Но опыта с BitTorrent по части кодинга не имел. Попытался ручками менять файл(*.torrent) не выходит. Вот даже не знаю, что и делать. Как туда прописать ретрекер. А так вроде принцип понятен. Спасибо надеюсь кто поможет.

Автор: boris_z 21.6.2009, 20:57

Все разобрался ответ нашел тут http://wiki.depthstrike.com/index.php/P2P:Protocol:Specifications:Multitracker dry.gif

Автор: Evolgr 22.6.2009, 14:50

тоже недавно написал свой. работает вроде, даже лучше чем Torrent Patcher smile.gif если будут вопросы - спрашивай, попробую ответить.

Автор: boris_z 22.6.2009, 15:47

Можете пояснить с announce-list, вы его в конец документа помещаете так ?
Какой он должен иметь формат announce-list, а то я уже по битово начел разбирать документ. Может ссылочку подкинете.

Автор: Evolgr 22.6.2009, 21:08

Цитата(boris_z @ 22.6.2009, 15:47) *
Можете пояснить с announce-list, вы его в конец документа помещаете так ?
Какой он должен иметь формат announce-list, а то я уже по битово начел разбирать документ. Может ссылочку подкинете.

ну в Torrent Patcher'е он почему-то записывается в конец, хотя ето неправильно, т.к. ключи (announce, announce-list и т.д.) должны идти в алфавитном порядке. надо его писать сразу после ключа announce. в той спецификации вроде нормально описано: надо свой ретрекер поместить в отдельный список, чтобы он работал паралельно основному. иначе (если поместить его в тот самый список где знаходится и основной) они будут работать в случайном порядке (чтобы уменьшить нагрузку на сервера).

тут еще есть спецификации:
http://wiki.theory.org/index.php/BitTorrentSpecification
http://www.bittorrent.org/beps/bep_0000.html

в процессе еще нарыл такой проектик: http://trac.calitko.org/changeset/releases/calitko-0.6.2%2C110.1.11

Автор: boris_z 22.6.2009, 23:39

Цитата(Evolgr @ 22.6.2009, 22:08) *
в процессе еще нарыл такой проектик: http://trac.calitko.org/changeset/releases/calitko-0.6.2%2C110.1.11


Процесс реализации требует декодирования самого *.torrent файл. Или можно обойтись
просто чтением файла, вставкой элементов announce-list c данными торрента-трекера и ретрекера ?
Если просто найти вставить свои данные просто не работают. mellow.gif Как говорится, если лесть в дебри, нужно знать, а нужно ли это делать. dry.gif

Автор: Evolgr 23.6.2009, 1:40

Цитата(boris_z @ 22.6.2009, 23:39) *
Процесс реализации требует декодирования самого *.torrent файл. Или можно обойтись
просто чтением файла, вставкой элементов announce-list c данными торрента-трекера и ретрекера ?
Если просто найти вставить свои данные просто не работают. mellow.gif Как говорится, если лесть в дебри, нужно знать, а нужно ли это делать. dry.gif

по тому проекту не знаю..

а почему не работает? может неправильно вставляешь?
может сдесь будет более наглядно видно: http://trac.calitko.org/browser/releases/calitko-0.6.2/Protocols/BitTorrent/Torrents/Testing/Samples/readable_sample.torrent?rev=releases%2Fcalitko-0.6.2%2C110.1.11
после announce добавляем announce-list с трекером из announce + наш трекер. должно получится как-то так:
Код
8:announce        => 80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
13:announce-list  =>
        l
                l
                        80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
                e
                l
                        32:http://somehost.com/announce.php
                e
        e

Автор: boris_z 23.6.2009, 2:33

Цитата(Evolgr @ 23.6.2009, 2:40) *
по тому проекту не знаю..

а почему не работает? может неправильно вставляешь?
может сдесь будет более наглядно видно: http://trac.calitko.org/browser/releases/calitko-0.6.2/Protocols/BitTorrent/Torrents/Testing/Samples/readable_sample.torrent?rev=releases%2Fcalitko-0.6.2%2C110.1.11
после announce добавляем announce-list с трекером из announce + наш трекер. должно получится как-то так:
Код
8:announce        => 80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
13:announce-list  =>
        l
                l
                        80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307
                 e
                l
                        32:http://somehost.com/announce.php
                e
        e



вот часть кода bomb.gif
CODE
sd = "l3:announce-listll" + v + ":" + httptraker + "el80http://"+main_url+":8080/RtBit/announce.php?mt=" + main_tracker + "&l=" + length + "&pu=" + publisher_url + "&descr=" + descr + "&eee";


которую я добавляю. v- это загадочная цифра в конце announce[**], это трекер httptraker announce то есть основной , а дальше мой трекер c переменными. Вот не понимаю (выделаны цифры и буквы которые в коде ) я не понимая по какому принципу берутся, ставлю от балды ? pardon.gif

Автор: Evolgr 23.6.2009, 11:01

Цитата(boris_z @ 23.6.2009, 2:33) *
Вот не понимаю (выделаны цифры и буквы которые в коде ) я не понимая по какому принципу берутся, ставлю от балды ? pardon.gif

потому и не работает smile.gif
написано в спецификации:
Цитата
byte strings

Byte strings are encoded as follows: <string length encoded in base ten ASCII>:<string data>
Note that there is no constant beginning delimiter, and no ending delimiter.
Example: 4:spam represents the string "spam"
строки. сначала идет число, которое означает длину строки. например "4:spam" значит что после двоеточия будет строка длиной в 4 байта. еще примеры: "8:announce", "13:announce-list", "32:http://somehost.com/announce.php".


Цитата
lists

Lists are encoded as follows: l<bencoded values>e
The initial l and trailing e are beginning and ending delimiters. Lists may contain any bencoded type, including integers, strings, dictionaries, and other lists.
Example: l4:spam4:eggse represents the list of two strings: [ "spam", "eggs" ]
списки. начинаються символом "l" (маленькая "L") и заканчиваються символом "e".
например запись вида "l4:spam4:eggse" означет что задан список с двух елементов, первым из которых есть строка "spam", вторым - строка "eggs".


также есть еще целые числа:
Цитата
integers

Integers are encoded as follows: i<integer encoded in base ten ASCII>e
The initial i and trailing e are beginning and ending delimiters. You can have negative numbers such as i-3e. You cannot prefix the number with a zero such as i04e. However, i0e is valid.
Example: i3e represents the integer "3"
т.е. числа задаються в виде "i<число_в_десятичной_системе>e". например запись вида "i254e" значит что задано число "254", "i-872e" - число "-872".


и словари:
Цитата
dictionaries

Dictionaries are encoded as follows: d<bencoded string><bencoded element>e
The initial d and trailing e are the beginning and ending delimiters. Note that the keys must be bencoded strings. The values may be any bencoded type, including integers, strings, lists, and other dictionaries. Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics). The strings should be compared using a binary comparison, not a culture-specific "natural" comparison.
Example: d3:cow3:moo4:spam4:eggse represents the dictionary { "cow" => "moo", "spam" => "eggs" }
Example: d4:spaml1:a1:bee represents the dictionary { "spam" => [ "a", "b" ] }
словари. в словарях сначала идет ключ, потом его значение. т.е. если есть выражение "d3:cow3:moo4:spam4:eggse", ето значит что задан словарь, в котором ключ "cow" имеет значение "moo", а ключ "spam" имеет значение "eggs".
еще один пример: "d4:spaml1:a1:bee". задан словарь, в котром ключ "spam" содержит список из двух елементов: "a" и "b".


на базе етого всего строится торент файл.
значением ключа "announce-list" должен быть список, елементы которого есть списками трекеров (список списков). например както так:
13:announce-listll80:http://tracker.calitko.org/torrents.php?passkey=d7c034325e7274bb2s346c6fc5b71307el32:http://somehost.com/announce.phpee

Автор: boris_z 23.6.2009, 11:35

Ага чета не уловил ссылку на вики, ага спасибо.за разъяснение, буду читать внимательней спецификации протокола. rolleyes.gif Большое спасибо за помощь. drinks.gif

Автор: boris_z 23.6.2009, 12:25

Спасибо еще раз все заработало. biggrin.gif

Автор: wMw 28.7.2009, 12:37

http://ifolder.ru/13294914

Вот патчилка на делфи smile.gif исходники прилагаются

Автор: wMw 28.7.2009, 12:37

http://depositfiles.com/files/wlpx6qlpt

Автор: POWExR 26.10.2009, 12:16

перезалей пожалуйста

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)