Commit Graph

2234 Commits

Author SHA1 Message Date
Vladimir Golovnev
330dce6aa2 Correctly handle "torrent finished" events
PR #21786.
Closes #21699.
2024-11-08 11:47:37 +03:00
Vladimir Golovnev
5e105b0348 Optimize checking for outdated tracker endpoints
PR #21768.
2024-11-07 09:42:53 +03:00
Vladimir Golovnev
f2b2a2b034 Optimize converting TCP endpoints to strings
There may be quite a few endpoint names (one for each available network card), and they usually remain unchanged throughout the session, while previously producing such names was performed every time they were accessed. Now they are retrieved from the cache.

PR #21770.
2024-11-07 09:42:43 +03:00
Vladimir Golovnev
10499dffe9 Optimize conversion of time points from libtorrent to Qt clocks
Obtain current date time of Qt and libtorrent clocks only once
for processing entire current libtorrent alerts bunch.

PR #21764.
2024-11-05 16:46:28 +03:00
Vladimir Golovnev
eea01b94a3 Reset tracker entries when pause the session
PR #21738.
2024-11-04 16:28:04 +03:00
Vladimir Golovnev
6079b25419 Fix .torrent file could not be deleted when torrent is canceled
PR #21735.
Closes #21723.
2024-11-02 16:42:11 +03:00
Hanabishi
983b7814aa Add "Simple pread/pwrite" disk IO type
PR #21300.
2024-10-21 15:47:28 +03:00
Vladimir Golovnev
fbf68a0649 Correctly apply filename filter when !qB extension is enabled
PR #21628.
Closes #21624.
2024-10-19 13:39:12 +03:00
Vladimir Golovnev
bb314e1555 Correctly handle "torrent finished after move" event
PR #21596.
Closes #21576.
2024-10-14 11:52:56 +03:00
Vladimir Golovnev
a3a8b15828 Always notify user about duplicate torrent
PR #21480.
Closes #21475.
2024-10-14 11:52:47 +03:00
Vladimir Golovnev
b579afe1aa Allow to choose Qt style
PR #21553.
2024-10-11 16:09:59 +03:00
Vladimir Golovnev
6379c33964 Disable "Move to trash" option by default
PR #21528.
2024-10-10 14:16:37 +03:00
Vladimir Golovnev
387821267f Don't try to apply Mark-of-the-Web to nonexistent files
Trying to apply it to a nonexistent file is unacceptable, as it may unexpectedly create such a file.

PR #21488.
Closes #21440.
2024-10-05 12:28:09 +03:00
sledgehammer999
cce295faeb Bump to 5.0.0 2024-09-29 20:53:45 +03:00
Vladimir Golovnev
3e96048ee4 Apply "merge trackers" logic regardless of way the torrent is added
PR #21299.
2024-09-07 09:13:19 +04:00
sledgehammer999
2d67729617 Bump to v5.0.0rc1 2024-08-18 23:21:21 +03:00
stalkerok
63689cf763 Add a flag about the connection peers are using NAT hole punching
PR #21052.
2024-08-15 20:33:45 +03:00
Vladimir Golovnev
7dfb0110d4 Fix Incomplete Save Path cannot be changed for torrents without metadata
PR #21152.
Closes #21140.
2024-08-08 08:22:54 +03:00
Vladimir Golovnev
96607ce874 Prevent incorrect size from being used for creating array
PR #21050.
2024-07-12 08:51:08 +03:00
Vladimir Golovnev
4149609e78 Allow to move content files to Trash instead of deleting them
PR #20252.
2024-07-07 16:09:48 +03:00
Vladimir Golovnev
78c549f83e Use custom storage when reloading torrent
PR #20998.
2024-07-07 16:07:22 +03:00
Chocobo1
fe93b6d0d8 Use proper casting
Previously `m_shutdownTimeout * 1000` was calculated in `int` and now it
is `qint64`.

PR #20982.
2024-06-25 21:13:19 +03:00
Chocobo1
0f5a27ed50 Improve connection handling
1. Previously unhandled connections will stay in pending state. It won't
be closed until timeout happened. This may lead to wasting system
resources. Now the (over-limit) connection is actively rejected.

2. When out-of-memory occurs here, reject the new connection instead of
throwing exception and crash.

3. Also clean up some unused bits.

PR #20961.
2024-06-25 21:13:18 +03:00
ManiMatter
12a4c3fda2 WebAPI: Add "private" filter for 'info' endpoint
PR #20833.

---------

Co-authored-by: Vladimir Golovnev <glassez@yandex.ru>
Co-authored-by: Chocobo1 <Chocobo1@users.noreply.github.com>
2024-06-25 21:13:17 +03:00
Vladimir Golovnev
05e3130baa Apply share limits when torrent downloading is finished
PR #20917.
Closes #20874.
2024-06-25 21:13:17 +03:00
Vladimir Golovnev
683492648f Apply filename filter to subfolder names as well
PR #20902.
Closes #14480.
2024-06-25 21:13:17 +03:00
Chocobo1
a126a7b493 Adjust user agent version automatically
The version calculation is an estimation and it will drift off after some time. Hopefully the
drift offset won't be noticeable within a few years.

Also switched the user agent to Windows 10 which has the largest portion of users to avoid
standing out from the crowd.

PR #20864.
2024-05-20 13:50:18 +08:00
Vladimir Golovnev
e09a871ca3 Revamp alerts handling
PR #20854.
2024-05-18 10:36:08 +03:00
Vladimir Golovnev
4d8713ce11 WebAPI: Add a way to download .torrent file using search plugin
* Simplify nova2dl script
* Use search engine name instead of site URL (like nova2 does)
* Add a way to download torrent using search plugin

PR #20824.
2024-05-15 08:47:40 +03:00
Hanabishi
2c47f09d7a Sanitize peer client names
PR #20788.
Closes #20010.
2024-05-11 18:46:11 +03:00
cayenne17
21a4ab6bac Update User-Agent
PR #20801.
2024-05-10 21:47:55 +03:00
Vladimir Golovnev
2b728b3bc0 Add an option to set BitTorrent session shutdown timeout
PR #20797.
2024-05-07 13:15:39 +03:00
Vladimir Golovnev
8ef7d3ec9a Add ability to pause/resume entire BitTorrent session
PR #20757.
Closes #18993.
2024-05-03 09:02:50 +03:00
Vladislav Grechannik
cd3982cf3c Include missing header
PR #20776.
Closes #20774.
2024-05-01 12:37:22 +03:00
ducalex
42b87963fd Add date column to the built-in search engine
Adds a date column to the built-in search engine to show when a torrent was published/uploaded on the engine site.
When a plugin wants to show a date, it can now add a `pub_date` entry to its result dict. The value format is a unix timestamp (an integer representing seconds since epoch).
Plugins with no date support will keep working.

PR #20703.
2024-04-29 21:10:24 +03:00
Chocobo1
775b38079f Avoid repetitive function calls
PR #20764.
2024-04-29 13:05:05 +08:00
Chocobo1
321d7e5b17 Adjust tracker tier when adding additional trackers
Closes #20102.
PR #20729.
2024-04-25 12:18:30 +08:00
Vladimir Golovnev
ca71c186e0 Don't forget to resume "missing files" torrent when rechecking
PR #20747.
2024-04-24 09:15:19 +03:00
Vladimir Golovnev
ace5286402 Prevent invalid status filter index from being used
PR #20714.
Closes #20701.
2024-04-18 07:59:24 +03:00
Aliaksei Urbanski
f37d0c486c Add the Popularity metric
PR #20180.
2024-04-01 21:23:08 +03:00
Chocobo1
90383567b2 Revise Tracker related classes
And also rename them.

PR #20489.
2024-04-01 19:17:35 +08:00
thalieht
5d1c249606 Use Start/Stop instead of Resume/Pause
PR #20532.

---------

Co-authored-by: Vladimir Golovnev (Glassez) <glassez@yandex.ru>
2024-03-25 19:11:04 +03:00
sledgehammer999
a5681f72bc Bump to v5.0.0beta1 2024-03-19 02:44:55 +02:00
Vladimir Golovnev
d5e41bf679 Allow torrents to override default share limit action
PR #20528.
2024-03-12 14:08:59 +03:00
Thomas Piccirello
c06817f4eb Add button for sending test email
This allows for easily testing whether the provided email configuration is correct.

PR #20488.
2024-03-08 21:51:44 +08:00
Vladimir Golovnev
0114610a40 Provide torrent creation feature via WebAPI
PR #20366.
Closes #5614.

Co-authored-by: Radu Carpa <radu.carpa@cern.ch>
2024-02-27 15:57:16 +03:00
Chocobo1
46e8ee50c8 Allow to set custom suffix to window title
This is to allow users to differentiate qbt instances when there are multiple running.
PR #20429.
Closes #17905.
2024-02-27 12:41:12 +08:00
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
Vladimir Golovnev
7786e1b084 Improve received metadata handling
Avoid blocking call to libtorrent when accessing underlying torrent_info object.

PR #20424.
2024-02-21 17:25:54 +03:00
Vladimir Golovnev
f04edd555f Open "lock" files for the same folder only once
PR #20414.
Closes #12203.
2024-02-15 08:42:44 +03:00