Торрент трекер UDPT
UDPT
- Страница Проекта:github.com/naim94a/udpt
- Документация: naim94a.github.io/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 использовался сложнее для создания, особенно в Windows из-за ее зависимостей. Спасибо Rust, сейчас гораздо проще.
Требуемые инструменты.
Получать источники.
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 |
Список всех отслеживаемых торрентов. Возможные параметры запроса: |
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":[]}