Форум vBTorrents.org  
Вернуться   Форум vBTorrents.org > Движок торрент трекера VBTT > VBTT v.2.0

Вновь про retracker.local

Ответ
 
Опции темы
Старый 06.03.2011, 06:31   #1
Аватар для qaqaqa
qaqaqa qaqaqa вне форума
Любитель
Вновь про retracker.local

Решил я вновь заняться этой темой.
Итак, что мы имеем:

1) файл benc.php, в который нужно прописать функцию, которая в свою очередь будет прописывать в поле announce-list несколько URL аннонсеров. (Поправьте, если я ошибаюсь).

2) и модуль 2.0.0826 Attachment Download, который отвечает за прописывание URL трекера в сам торрент-файл.
PHP код:
if ($extension == 'torrent' AND !($vbulletin->userinfo['permissions']['vbttpermissions'] & $vbulletin->bf_ugp_vbttpermissions['vbttcanview'])) print_no_permission();
if (
$extension == 'torrent' AND !in_array($foruminfo['forumid'], explode(',',$vbulletin->options['vbtt_forums']))) eval(standard_error(fetch_error('vbtt_disabled_forum')));
if (
$extension == 'torrent' AND $vbulletin->userinfo['userid'] AND strlen($vbulletin->userinfo['torrent_pass']) == 32 AND $attachmentinfo['info_hash']!='') {

$torrent $vbulletin->options['attachfile'] ? fread($fp2097152) : $attachmentinfo['filedata'];
    if (!
$comment=strpos($torrent,'4:infod6:lengthi')) 
        
$comment=strpos($torrent,'4:infod5:filesld6:lengthi');
    if (
$comment
        
$torrentstring=substr($torrent,$comment+6,-1);
    if (
pack('H*'sha1($torrentstring))!= $attachmentinfo['info_hash']) {
        require_once(
DIR '/includes/benc.php');
        
$torrent bdec($torrent);
        
$torrentstring $torrent['value']['info']['string'];
    }
    unset(
$torrent);


    
    
$announce_url construct_phrase($vbulletin->options['vbtt_primary_announce'],$vbulletin->userinfo['torrent_pass']); 
    
$comment=$vbulletin->options['bburl'].'/showthread.php?p='.$attachmentinfo['postid'];
    
$attachmentinfo['filedata'] = sprintf('d8:announce%d:%s7:comment%d:%s13:creation datei%de4:info%se'strlen($announce_url), $announce_urlstrlen($comment), $comment$attachmentinfo['dateline'], $torrentstring);
    
     
    
    unset(
$torrentstring,$announce_url,$comment);
    
$attachmentinfo['filesize'] = strlen($attachmentinfo['filedata']);
    
$vbulletin->options['attachfile'] = false;

Больше всего нас должен интересовать кусок
Код:
    
    $announce_url = construct_phrase($vbulletin->options['vbtt_primary_announce'],$vbulletin->userinfo['torrent_pass']); 
    $comment=$vbulletin->options['bburl'].'/showthread.php?p='.$attachmentinfo['postid'];
    $attachmentinfo['filedata'] = sprintf('d8:announce%d:%s7:comment%d:%s13:creation datei%de4:info%se', strlen($announce_url), $announce_url, strlen($comment), $comment, $attachmentinfo['dateline'], $torrentstring);
также мы имеем подсказку от Skald
Сообщение от Skald Посмотреть сообщение
HELLRAiSER, вот самый простой пример, на основе чужого кода (заняло 5 минут поиска в гугле)
PHP код:
function put_announce_urls(&$dict,$anarray,$announce_url){
     
$liststring '';
     unset(
$dict['value']['announce']);
     unset(
$dict['value']['announce-list']);

     
$dict['value']['announce'] = bdec(benc_str($announce_url));

     
$announces[0] = array('type' => 'list''value' => array(bdec(benc_str($announce_url))), 'strlen' => strlen("l".$announce_url."e"), 'string' => "l".$announce_url."e");
     
$liststring .= "l".$announce_url."e";

     if (
is_array($anarray))
     foreach (
$anarray as $announce) {
          
$announces[] = array('type' => 'list''value' => array(bdec(benc_str($announce))), 'strlen' => strlen("l".$announce."e"), 'string' => "l".$announce."e");
          
$liststring .= "l".$announce."e";
     }
     
$dict['value']['announce-list']['type'] = 'list';
     
$dict['value']['announce-list']['value'] = $announces;


     
$dict['value']['announce-list']['string'] = "l".$liststring."e";
     
$dict['value']['announce-list']['strlen'] = strlen($dict['value']['announce-list']['string']);


примерный вариант использования:
PHP код:
put_announce_urls($torrent, array('мой_первый_урл','мой_второй_урл','мой_третий_урл'),$announce_url); 
Ну а дальше... Дальше вопрос - у кого какие соображения по реализации? Моих познаний не хватает.
Ответить с цитированием
Старый 06.03.2011, 18:23   #2
Аватар для Cyberdaemon
Cyberdaemon Cyberdaemon вне форума
Любитель
Ну скажем так.... на днях ковырял - анонс прописать удалось, ход мыслей относительно правильный, в benc.php ничего нет вроде смысла прописывать (это просто парсер торрент файла).

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

P.S. Дело осложняется тем, что я в упор не могу понять работу использованного Скалдом benc.php (для своих разработок юзаю другую реализацию данного дела).

Последний раз редактировалось Cyberdaemon; 20.03.2011 в 14:31.
Ответить с цитированием
Старый 07.03.2011, 01:05   #3
Аватар для qaqaqa
qaqaqa qaqaqa вне форума
Любитель
значит ковырять только модуль?
Ответить с цитированием
Старый 07.03.2011, 02:22   #4
Аватар для Cyberdaemon
Cyberdaemon Cyberdaemon вне форума
Любитель
да, ибо benc.php просто для того существует, что бы декодировать торрент файл и потом закодировать его обратно в bencode - тупо парсер.
Что бы проще понималось - погугли на тему структуры торрент файла и почитай, я лично с этого начинал.

Последний раз редактировалось Cyberdaemon; 20.03.2011 в 14:31.
Ответить с цитированием
Старый 07.03.2011, 02:37   #5
Аватар для qaqaqa
qaqaqa qaqaqa вне форума
Любитель
ясно. значит мы на правильном пути.
а ты в какое мета-поле пишешь урлы трекеров? в announce-list?

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

у меня в планах вывести урлы ретрекеров прям в админку, тем более там что-то когда-то уже присутствовало на эту тему.

Последний раз редактировалось qaqaqa; 07.03.2011 в 02:41.
Ответить с цитированием
Старый 07.03.2011, 12:02   #6
Аватар для Cyberdaemon
Cyberdaemon Cyberdaemon вне форума
Любитель
1. при чём тут META ??? Я же уже написал - что бы не возникало глупых вопросов, разбирай структуру торрент файла.
2. В админку вывести - дело 1й минуты, у меня выведено изначально ибо это просто удобно (не вижу особой трудности в добавлении настройки с выводом в переменную в настройках самого трекера).
3. Выложить - да не вопрос....

PHP код:
if ($extension == 'torrent' AND !in_array($foruminfo['forumid'], explode(',',$vbulletin->options['vbtt_forums']))) eval(standard_error(fetch_error('vbtt_disabled_forum')));

if (
$extension == 'torrent' AND $vbulletin->userinfo['userid'] AND strlen($vbulletin->userinfo['torrent_pass']) == 32 AND $attachmentinfo['info_hash']!='') {

$torrent $vbulletin->options['attachfile'] ? fread($fp2097152) : $attachmentinfo['filedata'];
    if (!
$comment=strpos($torrent,'4:infod6:lengthi')) 
        
$comment=strpos($torrent,'4:infod5:filesld6:lengthi');
    if (
$comment
        
$torrentstring=substr($torrent,$comment+6,-1);
    if (
pack('H*'sha1($torrentstring))!= $attachmentinfo['info_hash']) {
        require_once(
DIR '/includes/benc.php');
        
$torrent bdec($torrent);
        
$torrentstring $torrent['value']['info']['string'];
    }
    unset(
$torrent);
    
$announce_local $vbulletin->options['announce_local'];
    
$announce_url construct_phrase($vbulletin->options['vbtt_primary_announce'],$vbulletin->userinfo['torrent_pass']);

    
$comment=$vbulletin->options['bburl'].'/showthread.php?p='.$attachmentinfo['postid'];
    
$attachmentinfo['filedata'] = sprintf('d8:announce%d:%s%d:%s7:comment%d:%s13:creation datei%de4:info%se'strlen($announce_local), $announce_localstrlen($announce_url), $announce_urlstrlen($comment), $comment$attachmentinfo['dateline'], $torrentstring);

    unset(
$torrentstring,$announce_url,$announce_local,$comment);
    
$attachmentinfo['filesize'] = strlen($attachmentinfo['filedata']);
    
$vbulletin->options['attachfile'] = false;

$vbulletin->options['announce_local'] - как раз переменная поля настройки дополнительного анонсера в настройках трекера.

Последний раз редактировалось Cyberdaemon; 20.03.2011 в 14:31.
Ответить с цитированием
Старый 07.03.2011, 13:35   #7
Аватар для qaqaqa
qaqaqa qaqaqa вне форума
Любитель
И всё же мне кажется, что без ковыряния benc.php тут не обойтись.
Ибо нам надо в announce-list писать ретрекер при сборке торрента, а не в announce-url.

вот тут ещё почитать можно.
http://tbdevsz.ru/neskolko-announce-...ajle-t310.html
http://web-patcher.ru/democode.php.txt

Последний раз редактировалось qaqaqa; 07.03.2011 в 13:56.
Ответить с цитированием
Старый 07.03.2011, 18:31   #8
Аватар для Cyberdaemon
Cyberdaemon Cyberdaemon вне форума
Любитель
что ты подразумеваешь под "announce-list"???

Последний раз редактировалось Cyberdaemon; 20.03.2011 в 14:31.
Ответить с цитированием
Старый 08.03.2011, 01:57   #9
Аватар для qaqaqa
qaqaqa qaqaqa вне форума
Любитель
в торрент файле присутствует поле announce, куда мы пишем урл трекера.
если трекеров в торрент-файле предполагается более 1, то они пишутся торрент-файл в поле announce-list.

именно туда нам и нужно пихать основной трекер и ретрекер.
а у тебя на данный момент оба урла пытаются запихаться в поле announce, если я правильно понял.
потому клиент и не понимает торрента-файла, который ему выдать, используя твой код.
Ответить с цитированием
Старый 08.03.2011, 13:19   #10
Аватар для Cyberdaemon
Cyberdaemon Cyberdaemon вне форума
Любитель
qaqaqa, Всё возможно, не вникал на столько, времени нет совсем.......тут столько гемороев свалилось - сижу разгребаюсь.
При беглом взгляде пихаются по очереди, один за другим с указанием длины.

Последний раз редактировалось Cyberdaemon; 20.03.2011 в 14:32.
Ответить с цитированием
Ответ


Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход