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

Started by Wertos on 2025-07-29 19:53 — 27 replies, 2177 views

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

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

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

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

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

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

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


Но.... После этих изменений отвалятся старые торренты..
Поэтому пришлось сделать такой костыль из проверок в анонсере
$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%'
#9
К примеру если пользователь создает торрент в qbittorrent в формате только v2 и пытается прикрепить его к раздаче - я выдаю уведомление, что трекер не поддерживает такой торрент. Создавайте v1 или v1+v2 hybrid. Потому что полно сидеров с сидбоксами на том же трансмишне 2.94, 3.0+ и других клиентах, которые не понимают этот формат
#10
К примеру если пользователь создает торрент в qbittorrent в формате только v2 и пытается прикрепить его к раздаче - я выдаю уведомление, что трекер не поддерживает такой торрент. Создавайте v1 или v1+v2 hybrid. Потому что полно сидеров с сидбоксами на том же трансмишне 3, который не понимет этот формат
Интересный подход... Но в корне неверный ! Не понимает, это пока ! Кстати гибридный торрент тоже временный... В любом случае останется только BTv2.
Вот переход на BTv2 будет ппц болезненный... Поддерживать v1 раздачи и ждать пока на них отвалится последний пир или в принудиловку их запретить... Я даже ХЗ !