qBittorrent BitTorrent client
Go to file
Chocobo1 cffd74b62a
Add support for SSL torrents
The 'SSL torrent' feature is not standardized. I.e. there are no BEP (BitTorrent Enhancement Proposals) associated with it, so we do not greatly encourage its usage as it will only work with libtorrent clients and derivatives. It will not work with other torrent clients that do not support the libtorrent specific implementation.
This PR aims to provide minimal support for those who need SSL torrents. Furthermore, it is intended that there will be no UI support (nor indication) of adding/creating SSL torrents.

* Prerequisites:
  I omit the instructions of creating those files as the intended audience (experts & advanced users) should have no problem with it. All files are as follow:
  1. Root (torrent publisher) certificate
  2. Root private key
  3. A .torrent file created with root certificate 
  5. Peer certificate (signed by the root certificate)
  6. Peer private key
  7. Diffie-Hellman parameters file
  
  All files are stored in .pem format.

* Enable SSL torrent protocol in qbt
  There are 2 hidden keys to put in qbt config file, under `[BitTorrent]` section:
  1. `Session\SSL\Enabled`: set it to `true`.
  2. `Session\SSL\Port`: set it to some unused port or omit the key entirely to let qbt pick one for you.
* Add an SSL torrent to qbt
  The only way of adding an SSL torrent is via WebAPI. The `/api/v2/torrents/add` endpoint will support 3 additional parameters. You must provide them for an SSL torrent.
  1. `ssl_certificate`: Contents of the peer certificate file (in PEM format).
  2. `ssl_private_key`: Contents of the peer private key file.
  3. `ssl_dh_params`: Contents of the Diffie-Hellman parameters file.

* Change the SSL parameters to a torrent
  In case you provided wrong SSL parameters when adding a torrent, there is a new endpoint `/api/v2/torrents/setSSLParameters` that you can update the SSL parameters. The parameters (`ssl_*`) are the same as `/api/v2/torrents/add` endpoint.

* Query the SSL parameters of a torrent
  There is a new endpoint `/api/v2/torrents/SSLParameters` that you can query the SSL parameters of a torrent.

References:
* https://www.libtorrent.org/manual-ref.html#ssl-torrents
* https://blog.libtorrent.org/2012/01/bittorrent-over-ssl/

PR #20338.
---------

Co-authored-by: Radu Carpa <radu.carpa@cern.ch>
2024-02-25 19:58:58 +08:00
.github GHA CI: Bump libtorrent 2 version to 2.0.10 2024-02-25 19:30:20 +08:00
.tx Migrate transifex tool config to new version 2023-02-28 00:10:16 +02:00
cmake/Modules Specify standards conformance mode to MSVC 2024-02-18 13:03:00 +08:00
dist Set specific exit codes when NSIS installer failed in silent mode 2024-01-22 14:01:15 +08:00
doc GHA CI: add checking for doc 2023-09-07 15:28:43 +08:00
src Add support for SSL torrents 2024-02-25 19:58:58 +08:00
test Provide safe helper for converting to 'seconds since epoch' 2024-01-08 15:13:02 +08:00
.clang-tidy Use using declarations instead of typedef 2023-08-14 18:14:36 +03:00
.editorconfig Specify charset and end_of_line in .editorconfig 2023-08-11 13:49:07 +08:00
.gitattributes Improve NSIS scripts 2023-10-20 09:04:56 +03:00
.gitignore Git: Ignore all compiled translation files (*.qm) and DLLs 2023-10-18 10:53:55 +03:00
.pre-commit-config.yaml Update Readme for WebUI 2023-12-05 03:34:40 +08:00
5B7CC9A2.asc Update gpg key with new uid. 2016-12-27 16:56:35 +02:00
AUTHORS Change author name 2023-10-09 10:21:29 +03:00
build_dist.sh Add script for generating project tarball 2021-01-07 23:31:05 +08:00
Changelog Consolidate all the Changelog entries into master 2024-02-18 20:26:10 +02:00
CMakeLists.txt Bump OpenSSL requirement to 3.0.2 2023-09-26 06:51:53 +03:00
CODING_GUIDELINES.md Convert Windows header names to lowercase 2023-08-16 10:29:13 +03:00
codingStyleQtCreator.xml Add info and files for coding style. Issue #2192. 2016-01-10 14:50:05 +02:00
CONTRIBUTING.md Switch URLs to https 2023-04-23 15:09:58 +08:00
COPYING Binary distributions are GPLv3+ licensed 2022-09-13 01:33:08 +03:00
COPYING.GPLv2 Binary distributions are GPLv3+ licensed 2022-09-13 01:33:08 +03:00
COPYING.GPLv3 Binary distributions are GPLv3+ licensed 2022-09-13 01:33:08 +03:00
INSTALL Bump OpenSSL requirement to 3.0.2 2023-09-26 06:51:53 +03:00
README.md Remove old build instructions from README.md 2024-01-01 14:15:16 +03:00
uncrustify.cfg Update uncrustify.cfg 2018-09-30 15:46:33 +07:00

qBittorrent - A BitTorrent client in Qt

GitHub Actions CI Status Coverity Status


Description:

qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent (sometimes called libtorrent-rasterbar) by Arvid Norberg.

It aims to be a good alternative to all other bittorrent clients out there. qBittorrent is fast, stable and provides unicode support as well as many features.

The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License.

Installation:

Refer to the INSTALL file.

Public key:

Starting from v3.3.4 all source tarballs and binaries are signed.
The key currently used is 4096R/5B7CC9A2 with fingerprint D8F3DA77AAC6741053599C136E4A2D025B7CC9A2.
You can also download it from here.
PREVIOUSLY the following key was used to sign the v3.3.4 source tarballs and v3.3.4 Windows installer only: 4096R/520EC6F6 with fingerprint F4A5FD201B117B1C2AB590E2A1ACCAE4520EC6F6.

Misc:

For more information please visit: https://www.qbittorrent.org

or our wiki here: https://wiki.qbittorrent.org

Use the forum for troubleshooting before reporting bugs: https://forum.qbittorrent.org

Please report any bug (or feature request) to: https://bugs.qbittorrent.org

Official IRC channel: #qbittorrent on irc.libera.chat


sledgehammer999 <sledgehammer999@qbittorrent.org>