Commit Graph

2359 Commits

Author SHA1 Message Date
Thomas (Tom) Piccirello
4ad93bafb2 Update Piccirello's copyright email
PR #23197.
2025-09-07 16:10:07 +08:00
Userdocs
3146a3c2f9 Fix compilation in C++23 mode
This adds c++23 support. In my testing it works for nox and desktop.

PR #23193.
2025-09-07 15:49:50 +08:00
Chocobo1
4be33b2ddc Fix typo
This typo is causing the header `X-Forwarded-Proto` to be ineffective
(when using reverse proxy).

PR #23120.
2025-08-23 03:21:28 +08:00
Hanabishi
bda37cbade Improve parsing of HTTP headers
Parse HTTP headers using raw byte arrays instead of strings. This allows us to apply different encodings for different parts.
This change is backward compatible and should not affect any existing operation, so WebAPI version bump is not required.

PR #23083.
2025-08-23 02:51:51 +08:00
Vladimir Golovnev
2631692cff Improve changing torrents queue positions
PR #23068.
2025-08-10 18:37:19 +03:00
Ryu481
02d72179fe Migrate away from deprecated methods for setting the standard application on macOS
The methods for checking if qBittorrent is set as the standard application for opening torrent files and magnet links and setting qBittorrent as the standard application for those is using deprecated methods now. For example `LSCopyDefaultHandlerForURLScheme` and `kUTTagClassFilenameExtension`.
The new methods have been moved to `macutilities.mm` because in `os.cpp` cocoa couldn't be imported.

PR #23059.
2025-08-09 18:13:18 +08:00
Vladimir Golovnev
de7d9c960d Forbid usage of context-less connections
PR #23032.
2025-08-06 16:28:31 +03:00
HamletDuFromage
d7b330c069 WebAPI: Add setComment endpoint
No UI implementation as of now.

Closes #19598.
PR #23031.
2025-08-04 17:52:54 +08:00
Chocobo1
fef6ac515c Use source URL for search plugins
This saves a few URL redirections. And avoids potential issues related to Cloudflare
protections/blockages on qbt domain.

Closes #22990.
PR #23048.
2025-08-03 15:16:57 +08:00
Chocobo1
7c443b0c3b Fix random function detection with static PIE builds
Certain build options didn't like the detection with an no-op. So make it really fetch a random value.

Closes #22981.
PR #22987.
2025-07-15 01:56:04 +08:00
Ryu481
ec9d541bbd Don't leave an empty folder when deleting or moving torrents
Currently when you delete or move a torrent sometimes an empty folder will stay. This is because hidden files will stay which didn't got deleted.
The reason that it is not working is that QDir::Files is used which doesn't lists hidden files. Adding QDir::Hidden will make the code work as expected. At least on Windows and macOS QDir::Files doesn't lists hidden files. I can't test on linux.

PR #22983.
2025-07-15 01:44:57 +08:00
Vladimir Golovnev
e1ebf8374e Add option to disable torrent state colors
PR #22976.
2025-07-14 11:40:53 +03:00
Mark Yu
9fc7bd938f Add option to make progress bar to follow torrent state color
PR  #22967.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
2025-07-13 08:42:38 +03:00
Thomas Piccirello
2ebe8595c9 Modify CategoryOptions serialization to JSON
When a category's download path option is set to "Default", its `downloadPath` is serialized into JSON as `undefined`. This results in the `downloadPath` field being omitted from `torrents/categories` and `torrents/maindata` payloads (as is expected with an `undefined` value).

The use of `undefined` here causes an issue in the WebUI. Specifically, when the category previously contained a value for this field (i.e. download path option set to either "Yes" or "No"), the `processMap` logic in `SyncController` does not detect the removal this field. This results in the category's new `downloadPath` not being properly sent to the client. By switching from `undefined` to `null`, we ensure that the `downloadPath` value is always included in the category's payload. This allows `processMap` to properly detect whenever the value changes.

This change is backwards compatible with existing categories.json files. Older qBittorrent versions should also be able to parse new categories.json files containing `null`.

More context: cd3fbfbf9b (r2173148696)

PR #22958.
2025-07-07 00:17:57 +08:00
sledgehammer999
4f94eac235 Merge private branch for an RSS security fix
Reported responsibly by Michael Lappas (@lappas-m)
2025-07-02 08:43:15 +03:00
Vladimir Golovnev
41d7d672ce Optimize parsing of search results
PR #22906.
2025-06-26 08:49:58 +03:00
Vladimir Golovnev (Glassez)
d379fa3035 Prevent opening local files if web page is expected 2025-06-23 13:14:37 +03:00
Vladimir Golovnev
71af105a89 Avoid copying resume data when loading torrents
PR #22899.
2025-06-23 12:20:01 +03:00
Vladimir Golovnev
e27cbab7ee Don't ignore QFile::open() result
PR #22889.
Closes #22888.
2025-06-20 10:19:16 +03:00
Vladimir Golovnev
794310dca9 Add WebAPI for fetching torrent metadata
PR #21015.
2025-06-17 10:15:21 +03:00
Leon Blakey
d7a5430893 Improve resume queue load performance
PR #22831.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
2025-06-13 09:47:23 +03:00
Thomas Piccirello
69bf31f4e9 Add WebAPI for downloading torrent metadata
Signed-off-by: Thomas Piccirello <thomas@piccirello.com>
2025-06-11 17:03:46 -07:00
Vladimir Golovnev
05bcc4e175 Don't limit the size of read "resume data"
PR #22825.
2025-06-07 06:58:48 +03:00
Vladimir Golovnev
526abdf7ce Avoid data copying when prepare resume data
PR #22812.
2025-06-06 08:59:39 +03:00
Vladimir Golovnev
2cbfb91b88 Use modern API to export torrent
PR #22786.
2025-06-03 15:24:52 +03:00
Vladimir Golovnev
0729c9a2f8 Handle libtorrent alerts in SessionImpl only
PR #22798.
2025-06-03 08:18:12 +03:00
Vladimir Golovnev
a9213627a9 Interpret tracker "updating" status as a separate property
PR #22787.
2025-05-30 08:34:26 +03:00
Zentino
7648a2838d Fix access denial messages
Updated error messages for access denial from (401) to (403) for remote content.
Added (401) status code to authentication error messages.

PR #22774.
2025-05-27 14:47:43 +08:00
Vladimir Golovnev
8cd1a80852 WebAPI: Add more properties to 'torrents/info' result
PR #22753.
2025-05-27 09:37:06 +03:00
Chocobo1
84cd8e1535 Utilize Path class when finding Python executable
This is a code clean up and shouldn't affect the outcome.

PR #22760.
2025-05-25 15:00:19 +08:00
Chocobo1
d56b353c52 Add checks for minimum supported Python version
Now it checks for all python installations and related procedures has been revised.
If the python version does not meet the minimum requirement, it will be logged.

PR #22729.
2025-05-21 14:52:11 +08:00
Chocobo1
1662a9deb2 Add fallback for random number generator
`getrandom()` is available since Linux 3.17 (2014/10/05) yet there are older devices that don't
meet this requirement.

Closes #22691.
PR #22723.
2025-05-18 15:37:17 +08:00
Chocobo1
09071d2b69 Allow symbolic links in torrent creator on Windows
Note that .lnk files (shortcuts) are always ignored on Windows.

Closes #22665.
PR #22675.
2025-05-14 07:13:52 +08:00
Vladimir Golovnev
663da093bd Fix compilation with Qt 6.6.0
PR #22678.
2025-05-12 11:27:02 +03:00
Vladimir Golovnev
d29f47c36e Revamp adding torrents to libtorrent session
PR #22648.
2025-05-08 16:31:02 +03:00
Vladimir Golovnev (Glassez)
ab04064adc Store AddTorrentParams inside alert handlers 2025-05-07 06:52:33 +03:00
Vladimir Golovnev (Glassez)
9afbd47b52 Assign add_torrent_alert handler when adding torrent 2025-05-07 06:52:33 +03:00
Vladimir Golovnev (Glassez)
582dc99cae Don't access libtorrent session directly from TorrentImpl 2025-05-07 06:52:33 +03:00
Vladimir Golovnev (Glassez)
3691eb948e Join the similar code paths 2025-05-07 06:52:33 +03:00
Vladimir Golovnev (Glassez)
76bb4e5f98 Add helpers to get InfoHash from libtorrent classes 2025-05-07 06:52:23 +03:00
Vladimir Golovnev
6cd6267c26 Fix ratio handling
PR #22638.
2025-05-01 14:18:18 +03:00
Vladimir Golovnev
e7dee969e1 Remove dubious seeding time max value
PR #22624.
2025-05-01 08:57:10 +03:00
Vladimir Golovnev
c2f2a38582 Call QPromise::start() early to avoid race condition
PR #22617.
2025-04-28 18:04:35 +03:00
Vladimir Golovnev
732b2bcbdb Provide asynchronous results via QFuture
Makes asynchronous logic to look more straightforward.
Allows caller to choose blocking or non-blocking way of obtaining asynchronous results via the same interface.

PR #22598.
2025-04-27 16:24:07 +03:00
Vladimir Golovnev
33aaa867b5 Drop support of Qt 6.5
PR #22599.
2025-04-27 16:21:20 +03:00
Vladimir Golovnev
b5394e7939 Don't interpret wildcard pattern as filepath globbing
PR #22590.
Closes #22583.
2025-04-26 09:27:22 +03:00
Chocobo1
8fc5d0914d Add versioning to socks.py
Also mark variable as private in novaprinter.py.

PR #22578.
2025-04-20 16:47:45 +08:00
Kostiantyn Chernenok
fc5daf6e1d Clamp seeding time limit in session
Add clamping for seeding and inactive seeding time limit on setting from dialog and loading from config.

Closes #21953.
PR #22558.

Signed-off-by: Kostiantyn <kos.chernenok@gmail.com>
2025-04-20 16:34:04 +08:00
Vladimir Golovnev
2785636d3f Prevent crash due to corrupted resume data
PR #22569.
Closes #22540.
2025-04-17 11:16:17 +03:00
Vladimir Golovnev
15069b2643 Fix the torrent relocates files when switching to "manual" mode
PR #22564.
Closes #22283.
Closes #22546.
2025-04-16 10:23:34 +03:00