qBittorrent BitTorrent client
Find a file
Kristof Mattei 140e73be4e
Use the URI's setData to set query data (#15187)
This allows the system to properly encode the '|', instead of passing
the '|' on in the URL, which is not allowed and breaks proxies such as
Authelia.

Then, for the purpose of generalization, I pushed this pattern through
to all places where we join items with a '|'.

This comes with the caveat that when we have individual components which
contain a '|' or any other character that is not allowed per the
HTTP standard, we still like to encode the individual components,
for example in the case of 3 strings, separated by a '|'.
If we don't do this we run into the risk that upon decoding URI finds
'|' in our original strings, which is something we don't want.

For example:
Sender:
````javascript
const arr = ["foo|1", "bar|2"];
const uri = new URI("test.html").setData(arr.join("|"));
````
Then on the receiving window, when it receives the uri and splits it, it
looks like this:
````javascript
const arr = new URI().getData('hashes').split('|');
// arr is now ["foo", "1", "bar", "2"]
````

This is why when we want to send a literal "|" we need to do
`encodeURIComponent` and `decodeURIComponent` manually on each item,
and THEN we join.

For example:
Sender:
````javascript
const arr = ["foo|1", "bar|2"];
const uri = new URI("test.html").setData(arr.map(encodeURIComponent).join("|"));
````

Receiver:
````javascript
const arr = new URI().getData('hashes').split('|').map(decodeURIComponent);
// arr is now ["foo|1", "bar|2"]
````

We don't need to with hashes as they are HEX, so no risk of any weird
characters in there.
2021-07-16 12:53:47 +08:00
.github Raise minimum libtorrent version to 1.2.14 (2.0.4) 2021-06-28 23:04:47 +01:00
.tx Use reverse DNS convention for metadata files naming 2019-01-05 10:37:23 +08:00
build-aux Regenerate build-aux scripts 2019-10-20 01:28:10 +08:00
cmake/Modules Disable functions deprecated in Qt 5.14 and earlier 2021-06-16 17:56:40 +03:00
dist Sync translations from Transifex and run lupdate 2021-06-26 21:03:43 +03:00
doc Add man page files in Markdown format 2020-03-12 13:12:33 +08:00
m4 Raise minimum Qt version to 5.14 2021-06-03 08:56:41 +03:00
src Use the URI's setData to set query data (#15187) 2021-07-16 12:53:47 +08:00
.appveyor.yml AppVeyor: Update CI configuration 2021-06-03 08:56:55 +03:00
.editorconfig Add basic support for EditorConfig 2017-03-09 20:52:20 +08:00
.gitattributes Add .gitattributes 2014-12-20 20:26:26 +03:00
.gitignore Generate version header when configuring project 2021-01-04 22:28:41 +08:00
5B7CC9A2.asc Update gpg key with new uid. 2016-12-27 16:56:35 +02:00
AUTHORS Clarify that the license is GPLv2+ 2021-03-29 00:08:14 +03:00
bootstrap.sh Use POSIX shell 2016-05-08 21:47:28 +08:00
build_dist.sh Add script for generating project tarball 2021-01-07 23:31:05 +08:00
Changelog Fix typos 2020-10-20 18:56:30 +08:00
CMakeLists.txt Raise minimum libtorrent version to 1.2.14 (2.0.4) 2021-06-28 23:04:47 +01:00
CODING_GUIDELINES.md Update coding guidelines policy for include guards 2020-12-14 12:24:06 +00:00
codingStyleQtCreator.xml Add info and files for coding style. Issue #2192. 2016-01-10 14:50:05 +02:00
conf.pri.in Use CC, CXX from environment when available 2018-12-08 13:15:18 +08:00
conf.pri.windows Improve Windows qmake build configuration files 2020-05-18 18:21:29 +01:00
configure Raise minimum libtorrent version to 1.2.14 (2.0.4) 2021-06-28 23:04:47 +01:00
configure.ac Raise minimum libtorrent version to 1.2.14 (2.0.4) 2021-06-28 23:04:47 +01:00
CONTRIBUTING.md Don't create 'data' subdirectory on Linux 2020-10-15 14:02:28 -04:00
COPYING Clarify that the license is GPLv2+ 2021-03-29 00:08:14 +03:00
INSTALL Raise minimum libtorrent version to 1.2.14 (2.0.4) 2021-06-28 23:04:47 +01:00
macxconf.pri QMake: Raise minimal macOS target version 2021-01-04 15:07:23 +03:00
NEWS - Moved everything to trunk to create a stable branch 2006-09-30 16:02:39 +00:00
qbittorrent.pro Add script for generating project tarball 2021-01-07 23:31:05 +08:00
README.md Remove TravisCI config 2021-06-28 10:41:16 +01:00
TODO Fix extra/missing trailing new lines in files 2020-10-28 14:20:18 +00:00
uncrustify.cfg Update uncrustify.cfg 2018-09-30 15:46:33 +07:00
unixconf.pri Install vector program icon on Linux 2021-04-16 14:06:43 +08:00
version.pri Add script for generating project tarball 2021-01-07 23:31:05 +08:00
winconf.pri Add windows-clang support (#15115) 2021-06-25 12:18:56 +08:00

qBittorrent - A BitTorrent client in Qt

AppVeyor Status 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:

For installation, follow the instructions from INSTALL file, but simple:

./configure
make && make install
qbittorrent

will install and execute qBittorrent hopefully without any problem.

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: http://wiki.qbittorrent.org

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

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

You can also meet me (sledgehammer_999) on IRC: #qbittorrent on irc.freenode.net


sledgehammer999 sledgehammer999@qbittorrent.org