Announcer & Bittorrent V2 - Поддерживает ?

Да, поддержка BitTorrent v2 имеется начиная с версии v2.4.0.
Рекомендую использовать последнюю версию из линейки v2.4.*
 
Я наверное не совсем верно поставил вопрос...
PHP:
// Check info_hash length
if (strlen($info_hash) !== 20) {
и
PHP:
OR SUBSTRING(tor.info_hash_v2, 1, 20)
Исходя из этого, если какой-то свежий клиент, сделает полноценный BTv2 запрос, в ответ ему прилетит
PHP:
msg_die('Invalid info_hash: ' . (mb_check_encoding($info_hash, DEFAULT_CHARSET) ? $info_hash : $info_hash_hex));

Я понимаю, обратная совместимость с BTv1, но всё же может не стоит проверять длину инфохеша, ну по крайней мере в запросе...
Строго ИМХО !!
 
Да, я понимаю о чем Вы. Мы добавили это до тех пор, пока торрент клиенты полноценно не реализовали BTv2.

Я подумаю что с этим можно сделать...
 
Фактически текущая конструкция полностью работает. И торрент клиенты с v2 нормально реагируют на это.
 
Last edited:
И торрент клиенты с v2 нормально реагируют на это
Потому что они сами обрезают хэш, но это временно, Qbit.... через пару минорных версий в запросах уже будет отправлять все символы.
 
Потому что они сами обрезают хэш, но это временно, Qbit.... через пару минорных версий в запросах уже будет отправлять все символы.
Сразу как это настанет, я уберу обрезание, либо сделаю проверку на то полный хэш отправляется или обрезанный, тем самым можно поддерживать любые версии клиентов
 
Исходя из этого, если какой-то свежий клиент, сделает полноценный BTv2 запрос, в ответ ему прилетит
А какие-то клиенты уже практикуют такое? Я думал это был полет фантазии только разрабов qbittorrent резать хэш до 20 бит для совместимости. Торрент сайты сейчас скорее мертвы, чем живы, а перейти только на v2 значит полностью добить их

Также писал ранее, что:
Code:
//$info_hash_sql = rtrim(DB()->escape($info_hash), ' ');
Неправильная конструкция, нельзя экранировать спецсимволы и обрезать пробелы в бинарной строке. Были случаи когда торрент не могли скачать либо не могли зарегистрировать, т.к. после случайного "обрезания" его хэш становился идентичным одному из ранее зареганых торрентов. И чем больше торрентов, тем чаще начнутся проблемы

надо так
Code:
$info_hash_hex = bin2hex($info_hash);

в sql так
Code:
#info_hash    varbinary(20)
#info_hash_v2    varbinary(32) 

WHERE HEX(tor.info_hash) = '$info_hash_hex'


Но.... После этих изменений отвалятся старые торренты..
Поэтому пришлось сделать такой костыль из проверок в анонсере
Code:
$info_hash_sql = bin2hex(rtrim(DB()->escape($info_hash), ' '));// старые торренты отвалилисиь пришлось вернуть этот костыль
...
WHERE HEX(tor.info_hash) = '$info_hash_hex'
          OR HEX(tor.info_hash) = '$info_hash_sql'
          OR HEX(tor.info_hash_v2) = '$info_hash_hex'
    OR HEX(tor.info_hash_v2) LIKE '$info_hash_hex%'
 
К примеру если пользователь создает торрент в qbittorrent в формате только v2 и пытается прикрепить его к раздаче - я выдаю уведомление, что трекер не поддерживает такой торрент. Создавайте v1 или v1+v2 hybrid. Потому что полно сидеров с сидбоксами на том же трансмишне 2.94, 3.0+ и других клиентах, которые не понимают этот формат
 
Last edited:
К примеру если пользователь создает торрент в qbittorrent в формате только v2 и пытается прикрепить его к раздаче - я выдаю уведомление, что трекер не поддерживает такой торрент. Создавайте v1 или v1+v2 hybrid. Потому что полно сидеров с сидбоксами на том же трансмишне 3, который не понимет этот формат
Интересный подход... Но в корне неверный ! Не понимает, это пока ! Кстати гибридный торрент тоже временный... В любом случае останется только BTv2.
Вот переход на BTv2 будет ппц болезненный... Поддерживать v1 раздачи и ждать пока на них отвалится последний пир или в принудиловку их запретить... Я даже ХЗ !
 
Back
Top