Commit Graph

1267 Commits

Author SHA1 Message Date
Vladimir Golovnev
b462a2bf0c Reset tracker entries when pause the session
PR #21738.
2024-11-04 16:27:21 +03:00
Vladimir Golovnev
4805afc1a2 Correctly apply filename filter when !qB extension is enabled
PR #21628.
Closes #21624.
2024-10-19 13:36:03 +03:00
Vladimir Golovnev
8e941a06f1 Correctly handle "torrent finished after move" event
PR #21596.
Closes #21576.
2024-10-14 11:51:30 +03:00
Chocobo1
21b0367629 Avoid heavy weight function object
Also, by switching to template we can avoid the cost of converting to some specific type and
perfectly forward the parameter to the final function.

PR #21572.
2024-10-12 15:15:39 +08:00
Chocobo1
ac646f47a2 Avoid shadowing function parameter
The function already has a parameter named `result`.
Also remove a duplicate variable since it already has a pref pointer at the start of the function.

PR #21571.
2024-10-12 15:04:47 +08:00
Vladimir Golovnev
2d857b6200 Disable "Move to trash" option by default
PR #21528.
2024-10-10 14:13:40 +03:00
Chocobo1
9e5433bcf8 Add name to threads
This help identifying threads when debugging.
The naming scheme is using 'class/function name + variable name'.
Note that the length limitaion is 16 chars on linux. On Windows, the limit is 32767 chars.

PR #21403.
2024-10-06 15:23:50 +08:00
stalkerok
e75bcbed6d Remove non-working DHT bootstrap nodes
router.utorrent.com has been dead for a long time. router.bittorrent.com died about a month or two ago. dht.aelitis.com doesn't work either. It is no longer possible to get DHT nodes from them.
Added router.silotis.us. Only ipv6!

PR #21296.
2024-10-05 16:45:29 +08:00
Hanabishi
b5b34c9ff4 Add "Simple pread/pwrite" disk IO type
PR #21300.
2024-10-01 19:58:35 +03:00
Burnerelu
e06b7f8f4d Enable customizing the save statistics time interval
This change extends the Advanced section of the Preferences menu with a new field, allowing changing the time statistics save interval. A zero value will prevent recurrent saving.

This aims to provide the feature requested in issue #21285.

PR #21291.
2024-09-16 17:16:59 +08:00
Vladimir Golovnev
d9bc7935eb Apply "merge trackers" logic regardless of way the torrent is added
PR #21299.
2024-09-06 16:28:22 +03:00
stalkerok
0da383e7b6 Add a flag about the connection peers are using NAT hole punching
PR #21052.
2024-08-15 20:27:19 +03:00
Vladimir Golovnev
bee56f2567 Fix Incomplete Save Path cannot be changed for torrents without metadata
PR #21152.
Closes #21140.
2024-08-08 08:20:26 +03:00
Vladimir Golovnev
3b38d0de7f Represent by TorrentInfo only info-section related metadata
PR #21084.
2024-07-19 06:25:41 +03:00
Vladimir Golovnev
815ab180c1 Prevent incorrect size from being used for creating array
PR #21050.
2024-07-12 08:49:45 +03:00
Vladimir Golovnev
5ef2a1df07 Use QList explicitly
PR #21016.
2024-07-04 08:30:39 +03:00
Vladimir Golovnev
4e27e88f6a Allow to move content files to Trash instead of deleting them
PR #20252.
2024-06-29 08:21:35 +03:00
Vladimir Golovnev
0cbe4882c3 Use custom storage when reloading torrent
PR #20998.
2024-06-28 07:14:19 +03:00
Chocobo1
5740238933 Use proper casting
Previously `m_shutdownTimeout * 1000` was calculated in `int` and now it
is `qint64`.

PR #20982.
2024-06-24 15:02:48 +08:00
Chocobo1
7a2bfae5e4 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-20 12:13:27 +08:00
Vladimir Golovnev
65d143d4c4 Apply share limits when torrent downloading is finished
PR #20917.
Closes #20874.
2024-06-12 09:03:07 +03:00
Vladimir Golovnev
d89f289f82 Apply filename filter to subfolder names as well
PR #20902.
Closes #14480.
2024-06-12 09:02:10 +03:00
Vladimir Golovnev
e09a871ca3 Revamp alerts handling
PR #20854.
2024-05-18 10:36:08 +03:00
Hanabishi
2c47f09d7a Sanitize peer client names
PR #20788.
Closes #20010.
2024-05-11 18:46:11 +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
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
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
Vladimir Golovnev
d5e41bf679 Allow torrents to override default share limit action
PR #20528.
2024-03-12 14:08:59 +03: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
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
Chocobo1
f87ea1b5d3 Sort languages combobox by language code
* Avoid creating redundant file lists
* Sort languages combobox by language code

PR #20365.
2024-02-05 13:44:18 +08:00
Vladimir Golovnev
88a4990435 Don't use iterator after erase
PR #20357.
Closes #20356.
2024-02-03 08:10:14 +03:00
Chocobo1
94e80d01a8 Clean up code
* Use compiler generated comparison function
* Use designated initializers
* Convert to proper type
* Use reference
* Remove redundant text
  The `msg` already contain the text `Reason:` so it isn't needed.

PR #20312.
2024-01-25 02:56:12 +08:00
Vladimir Golovnev
bab9c15913 Revamp handling of getting resume data from libtorrent
PR #20310.
2024-01-24 15:40:08 +03:00
Vladimir Golovnev
8ec3db1807 Change "metadata received" stop condition behavior
PR #20283.
Closes #20122.
2024-01-19 20:34:40 +03:00
Vladimir Golovnev
14513d051d Don't stuck loading on mismatching info-hashes in resume data
PR #20262.
Closes #20251.
2024-01-13 18:08:16 +03:00
Vladimir Golovnev
f3d45327e1 Apply inactive seeding time limit set on new torrents
PR #20231.
Closes #20224.
2024-01-05 18:25:29 +03:00
Vladimir Golovnev
9bf7f3b181 Show correctly decoded filename in log
PR #20214.
Closes #20186.
2024-01-02 16:03:12 +03:00
Chocobo1
073ca4267c Introduce helper function to join values as string
PR #20130.
2023-12-19 00:08:37 +08:00
Chocobo1
cc563d9f78 Fix incorrect usage of translation functions
PR #20107.
2023-12-10 23:07:29 +08:00
Vladimir Golovnev
7a41192597 Add a class to represent a tag
PR #20028.
Closes #19744.
2023-12-05 17:01:09 +03:00
Vladimir Golovnev
4ba8eaf4b4 Don't forget to store Stop condition
PR #20045.
Closes #20043.
2023-11-30 08:58:41 +03:00
Vladimir Golovnev
60eaff9fcb Simplify share ratio limits processing code
PR #19971.
2023-11-21 22:14:27 +03:00
Vladimir Golovnev
ef06be63bf Remove incorrect assertions
PR #19964.
2023-11-20 20:37:55 +03:00
Vladimir Golovnev
a1c78a0455 Follow the parent category options
PR #19957.
Closes #19941.
2023-11-20 20:37:17 +03:00