A commandline tool for creating, inspecting and modifying bittorrent metafiles.
Features | Documentation | Packages | Building | License
Features
- Creating bittorrent metafiles.
- Inspecting bittorrent metafiles.
- Verifying bittorrent metafiles against local data.
- Editing existing bittorrent metafiles.
- Support for the new v2 and hybrid protocols .
- Support for tracker abbreviations.
- Support for announce substitution parameters.
- Fast multi-buffer hashing with Intel ISA-L.
Status
This project is under development. The commandline interface can change at any release prior to 1.0.0.
Performance
Following test were performed on a in in-memory filesystem with 1 MiB piece size and as target a folder with a few linux iso's totaling 19.0 GiB:
- 9.0G | CentOS-Stream-8-x86_64-20201211-dvd1.iso
- 2.0G | Fedora-Workstation-Live-x86_64-33-1.2.iso
- 4.0G | openSUSE-Leap-15.2-DVD-x86_64.iso
- 2.6G | ubuntu-20.04.1-desktop-amd64.iso
- 998M | ubuntu-20.10-live-server-amd64.iso
The CPU is an Intel i7-7700HQ in a Dell XPS 15-9560 machine.
Documentation
Documentation is hosted on Github Pages.
Packages
Binary and source packages for Fedora 32, Fedora 33, Fedora 34, Fedora Rawhide and Centos stream are available in a COPR repo.
sudo dnf copr enable fbdtemme/torrenttools
sudo dnf install torrenttools
Binary and source packages for Ubuntu 20.04, Ubuntu 20.10, Ubuntu 21.04 are available in a launchpad repo.
sudo add-apt-repository ppa:fbdtemme/torrenttools
sudo apt-get update
sudo apt install torrenttools
A windows installer is available as an asset on the release page.
Building
This library depends on following projects:
- CLI11
- Catch2
- CTRE
- gsl-lite
- RE2
- expected-lite
- fmt
- nlohmann/json
- yaml-cpp
- bencode
- date
- OpenSSL or ISA-L Crypto
Almost all dependencies can be fetched from github during configure time or can be installed manually. OpenSSL has to be installed on the system in advance.
Installing build dependencies
Ubuntu 20.04
sudo apt install build-essential git cmake g++-10 libtbb2 libtbb-dev libssl-dev
Fedora 33
sudo dnf install cmake make g++ git openssl-devel libtbb-devel
Configuration
Option | Type | Description |
---|---|---|
TORRENTTOOLS_BUILD_TESTS | Bool | Build tests. |
TORRENTTOOLS_BUILD_DOCS | Bool | Build documentation. |
TORRENTTOOLS_INSTALL | Bool | Generate an install target. |
DOTTORRENT_CRYPTO_MULTIBUFFER | Bool | Enable fast multi buffer hashing. |
Building
This project requires C++20. Currently only GCC 10 is supported.
This project can be build as every other project which makes use of the CMake build system.
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target torrenttools
Installation
Installing the project:
sudo cmake --install . --component torrentttools
License
Distributed under the MIT license. See LICENSE
for more information.