UDPT

UDPT-это легкий торрент-трекер, который использует протокол UDP для отслеживания и полностью реализует BEP-15. Этот проект был разработан с учетом безопасности и простоты, поэтому запустить сервер не составит труда.

В отличие от большинства HTTP-торрент-трекеров, вы можете сэкономить около 50% пропускной способности с помощью UDP-трекера.

Особенности

  • Протокол отслеживания UDP
  • Простая конфигурация TOML
  • HTTP REST API
  • Ведение журнала
  • Выбор для работы в статическом или динамическом режимах
  • Черный список торрентов с использованием REST API
  • Может быть построен/запущен на многих платформах
  • (Пере)написано на Rust

Лицензии

UDPT доступен под MIT license.

О

Первоначально написанный на C++ @naim94a в 2012 году для развлечения.

Резюме

UDPT

Установка UDPT

Если вы читаете это, вы, вероятно, заинтересованы в использовании UDPT - так сначала, спасибо за ваш интерес!

UDPT использовался сложнее для создания, особенно в Windows из-за ее зависимостей. Спасибо Rust, сейчас гораздо проще.

Требуемые инструменты.

  • Git - Управление версиями
  • Rust - Компилятор Toolchain & Package Manager (Cargo)

Получать источники.

git clone https://github.com/naim94a/udpt.git

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

Сборка.

Этот шаг загрузит все необходимые зависимости (из crates.io) и построить их также.

Сборка всегда должна выполняться с помощью новейшего компилятора Rust.

cd udpt
cargo build --release

Как только сборкаа будет закончен, udpt будет построен в target/release/udpt.

Запуск Тестов.

UDPT поставляется с модульными тестами, они могут быть запущены с помощью следующей команды:

cargo test

Если сборка или тест не удалась, пожалуйста, отправьте вопросы в трекер проблем UDPT.

Настройка UDPT.

Конфигурация UDPT представляет собой простой файл TOML.

Конфигурация.

На корневом уровне настраиваются следующие параметры:

mode - Указывает, в каком режиме будет работать трекер. Значения могут быть статическими, динамическими или частными.

Корневой Уровень.

  • mode - Требуемый. Значения Possbile: private, static или dynamic.
  • log_level - По умолчанию: info. Возможные значения: off(выкл), error(ошибка), warning(предупреждение), info(информация),  debug(отладка), trace(трассировка).
  • db_path - Путь к базе данных. Если он не установлен, база данных будет нестабильной.
  • cleanup_interval - По умолчанию: 600. Интервал для запуска очистки в секундах. Очистка также сохраняет базу данных.

[udp] раздел

Этот раздел должен существовать.

  • bind_address - Необходимый. Именно здесь порт UDP будет связывать. Пример: 0.0.0.0:6969.
  • announce_interval - Необходимый. Устанавливает announce_interval, который будет отправлен одноранговым связям (в секундах).

[http] раздел

Этот раздел является необязательным.

  • bind_address - Обязательно (если раздел существует). HTTP REST API будет привязан к этому адресу. Лучше не разглашать этот адрес публично. Пример:127.0.0.1:1234.

[http.access_tokens] раздел

Раздел необходим, если существует раздел [http].

В этом разделе вы можете составить ключи, которые будут идентификаторами пользователей, и значения, которые будут их маркерами доступа. Если этот раздел пуст, REST API будет не очень полезен.

Пример Конфигурации.

mode = "dynamic" 

db_path = "database.json.bz2"

[udp] 
announceinterval = 120 # Two minutes bindaddress = "0.0.0.0:1212"

[http] 
bind_address = "127.0.0.1:1212"

[http.access_tokens] 
someone = "MyAccessToken" 

 

Режимы слежения.

UDPT в настоящее время поддерживает статические и динамические Static & Dynamic режимы отслеживания. Частное отслеживание планируется, но еще не полностью реализовано.

Динамический режим.

В этом режиме трекер позволяет отслеживать любой торрент, даже неизвестный. Трекеры, работающие в этом режиме, обычно не знают о содержимом отслеживаемого торрента. Кроме того, трекеры обычно ничего не знают о сверстниках.

UDPT поддерживает динамический режим и позволяет вносить торренты в черный список, чтобы избежать нарушения авторских прав. Торренты могут быть занесены в черный список (или "помечены") с помощью REST API.

Статический режим.

В статическом режиме любой желающий может использовать трекер так же, как и в динамическом. За исключением того, что торренты должны быть зарегистрированы заранее.

UDPT поддерживает статический режим, а торренты можно добавлять или удалять с помощью REST API.

Приватный режим.

Приватное отслеживание требует, чтобы все одноранговые узлы были аутентифицированы. Некоторые реализации требуют регистрации торрентов, а некоторые-нет. Этот режим может быть статическим или динамическим с одноранговой аутентификацией.

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

Использование.

На данный момент у udpt не так много вариантов. После того как вы изменили файл конфигурации, вы можете запустить udpt:

 

 udpt -c configuration.toml 

 

REST API.

REST API может помочь вам управлять UDPT с помощью ваших собственных скриптов.

Уведомление: API следует использовать только в доверенных сетях. API не должны быть доступны непосредственно в Интернете, они предназначены только для внутреннего использования.

Конечные точки.

Все конечные точки требуют маркера авторизации, который должен быть установлен в конфигурации перед запуском трекера.

Метод ​Маршрут Описание
GET /t

Список всех отслеживаемых торрентов. Возможные параметры запроса:
_offset_ - Смещение в бд, с которого начинается перечисление торрентов.
_limit_ - Максимальное количество извлекаемых записей (не более 1000).

GET /t/_infohash_ Получить информацию о конкретном торренте: подключенные узлы и статистика
DELETE /t/_infohash_ Удалить торрент из базы данных.
POST /t/_infohash_ Добавить / пометить / снять метку  торрент

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

json { "is_flagged": false }

 

Примеры.

Список всех отслеживаемых торрентов:

 

$ curl http://127.0.0.1:1212/t/?token=MyAccessToken [{"info_hash":"1234567890123456789012345678901234567890","is_flagged":true,"completed":0,"seeders":0,"leechers":0}]

 

Получение информации для конкретного торрента:

 

$ curl http://127.0.0.1:1212/t/1234567890123456789012345678901234567890?token=MyAccessToken {"info_hash":"1234567890123456789012345678901234567890","is_flagged":false,"completed":0,"seeders":0,"leechers":1,"peers":[[{"id":"2d7142343235302d3458295942396f5334af686b","client":"qBittorrent"},{"ip":"192.168.1.6:52391","uploaded":0,"downloaded":0,"left":0,"event":"Started","updated":672}]]}

 

Добавление торрента (нединамические трекеры) или Снятие блокировки торрента:

 

$ curl -X POST http://127.0.0.1:1212/t/1234567890123456789012345678901234567890?token=MyAccessToken -d "{\"is_flagged\": false}" -H "Content-Type: application/json" {"status":"ok"}

 

Удаление торрента:

 

$ curl -X DELETE http://127.0.0.1:1212/t/1234567890123456789012345678901234567890?token=MyAccessToken {"status":"ok"}

 

Пометка потока:

 

$ curl -X POST http://127.0.0.1:1212/t/1234567890123456789012345678901234567890?token=MyAccessToken -d "{\"is_flagged\": true}" -H "Content-Type: application/json" {"info_hash":"1234567890123456789012345678901234567890","is_flagged":true,"completed":0,"seeders":0,"leechers":0,"peers":[]}