Commit graph

625 commits

Author SHA1 Message Date
Sam Heinz
087653e5b6 [TB] fix: calling fileFilter twice in getdllinks 2025-03-12 22:27:48 +10:00
Sam Heinz
85a0e7b04f [TB] fix nit about bool -> var 2025-03-12 22:18:15 +10:00
Sam Heinz
dc9c7ff050 [TB] Add downloading via zip functionality 2025-03-12 18:19:24 +10:00
Cucumberrbob
f68911e9c2
Add UpdateChecker.IsInsecure to check if running version is insecure
Uses a hard-coded list of GHSA ids of known fixed vulnerabilities
2025-03-11 20:38:02 +00:00
Cucumberrbob
b333c738be
Add DisableUpdateNotifications setting
Lets the user turn notifications off completely
2025-03-11 20:34:52 +00:00
Cucumberrbob
d6efff2fb5
add rest of xmldoc for DownloadInfos 2025-03-11 12:44:48 +00:00
Cucumberrbob
c50afe9e64
[TB] GetDownloadLinks -> GetDownloadInfos 2025-03-11 12:14:15 +00:00
Cucumberrbob
0cc15d26c3
[RD] GetDownloadLinks -> GetDownloadInfos 2025-03-11 12:14:09 +00:00
Cucumberrbob
7615883fdb
[PM] GetDownloadLinks -> GetDownloadInfos 2025-03-11 12:14:04 +00:00
Cucumberrbob
2b2c5462f1
[DL] GetDownloadLinks -> GetDownloadInfos 2025-03-11 12:13:44 +00:00
Cucumberrbob
88af15b3bc
[AD] GetDownloadLinks -> GetDownloadInfos
Also makes the tests work wiith this new method
2025-03-11 12:13:24 +00:00
Cucumberrbob
e776236270
Use richer GetDownloadInfos instead of GetDownloadLinks
*Most* debrid providers know the filename as soon as they know the restricted links. By allowing them to tell the program this at an earlier stage, we don't need the `GetFileName` call for most debrid providers
2025-03-11 12:12:16 +00:00
Cucumberrbob
983e357a01
fix: require auth to setup provider 2025-03-09 14:50:51 +00:00
Cucumberrbob
d4ba114772
fix: typo - proxyserver setting applies to bezzad not internal 2025-03-09 12:45:51 +00:00
Cucumberrbob
2ae3b85dac
[RD] mark torrent failed when all files excluded by filters 2025-03-08 13:46:07 +00:00
Cucumberrbob
097ea93410
[AD] mark torrent failed when all files excluded by filters 2025-03-08 13:46:02 +00:00
Cucumberrbob
f8587d1bc8
fixup! include version when setting torbox api client useragent 2025-03-07 22:40:02 +00:00
Cucumberrbob
818d9f06b2
include version when setting torbox api client useragent 2025-03-07 22:26:18 +00:00
Roger Versluis
a366328472 Fixed docker angular build.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-03-07 13:48:14 -07:00
Roger Far
193b195218 Fixed Angular build.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-03-07 13:28:47 -07:00
Roger Far
207767dbce Fixed Angular build.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-03-07 12:39:15 -07:00
Roger Far
309a91ace2 no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-03-07 12:33:00 -07:00
Roger Far
794eec8666 Fixed vulnerability issue where the auth Update endpoint wasn't protected. 2025-03-07 12:29:33 -07:00
Roger Far
5c987a9057
Merge pull request #732 from Cucumberrbob/feat/reduce-torbox-api-load
feat:  [TB] Set user-agent
2025-03-07 12:22:06 -07:00
Roger Far
13bb353644
Merge pull request #729 from Cucumberrbob/refactor/download-filtering
refactor!: DRY Download Filtering
2025-03-07 12:21:32 -07:00
Roger Far
680904cb94
Merge pull request #721 from asylumexp/update-torboxnet
[TB] Update TorBox.NET to 1.5.0
2025-03-07 12:18:17 -07:00
Cucumberrbob
1034f342ed
Update torrent state to error when all files excluded by filters.
Only affects PM, TB and DL
2025-03-06 19:57:10 +00:00
Cucumberrbob
9cf28d8274
Revert "Use 10 second interval for TB ProviderUpdater"
This reverts commit 1abaeb598e.
2025-03-06 16:16:42 +00:00
Cucumberrbob
1abaeb598e
Use 10 second interval for TB ProviderUpdater 2025-03-06 13:25:14 +00:00
Cucumberrbob
0fd3f2a467
Set user agent for TB 2025-03-06 13:20:59 +00:00
Cucumberrbob
706be01a40
rename private methods of DownloadableFileFilter 2025-03-03 12:44:15 +00:00
Cucumberrbob
d40e686845
Remove logic in DLTorrentClient erroneously copied from RDTorrentClient
This code handled the RD-specific behaviour of choosing which files to download, and only getting those links from the API, rather than what DL does: downloading all files and having the api consumer pick which links they want to download.
2025-03-03 12:22:02 +00:00
Cucumberrbob
765a5b0543
Use DownloadableFileFilter in RealDebridTorrentClient to filter files 2025-03-03 12:04:34 +00:00
Cucumberrbob
2b6e51b5cf
Use DownloadableFileFilter in PremiumizeTorrentClient to filter files 2025-03-03 12:03:00 +00:00
Cucumberrbob
537845ea80
Use DownloadableFileFilter in DebridLinkTorrentClient to filter files.
Uses `TorrentClientTorrent.Files` instead of `.Links` to get download links. Also adds `DownloadLink` to `Files` when `Map`ping to `TorrentClientTorrent`
2025-03-03 12:00:33 +00:00
Cucumberrbob
2944101657
Use DownloadableFileFilter in AllDebridTorrentClient to filter files
Also updates unit tests to not test if filter works. Test filter is used appropriately instead.
2025-03-03 11:57:43 +00:00
Cucumberrbob
816c72f418
Use DownloadableFileFilter in TorBoxTorrentClient to filter files 2025-03-03 11:55:26 +00:00
Cucumberrbob
a02fcc6c1e
Inject DownloadableFileFilter in Service.DiConfig 2025-03-03 11:54:01 +00:00
Cucumberrbob
b95dbcc824
Add DownloadableFileFilter + unit tests
`DownloadableFileFilter` is an abstraction of the filtering we do in most of the `TorrentClient`s.
It operates on a single file at a time, not the entire torrent.
2025-03-03 11:52:19 +00:00
Sam Heinz
6b7e9b2943
[TB] Update TorBox.NET to 1.5.0 2025-02-24 08:43:50 +10:00
Cucumberrbob
d683c45dbd
tests: use theorydata 2025-02-23 18:54:31 +00:00
Roger Far
85d6b820f3 Upgrade packages, fixed few formatting issues. 2025-02-23 11:42:38 -07:00
Roger Far
7436e2d036
Merge pull request #715 from Cucumberrbob/fix/use-getsymlinkpath-method
Actually use `GetSymlinkPath` logic
2025-02-23 11:24:23 -07:00
Roger Far
115a1dcc56
Merge pull request #709 from Wald764/pr-main-repo
⬆️ DebridLinkFr.NET to 1.0.4
2025-02-23 11:23:58 -07:00
Roger Far
a4b95923b2
Merge pull request #708 from Cucumberrbob/fix/pm-nested-files
[PM] fix: search subdirectories using `item.Id` not `item.FolderId`
2025-02-23 11:23:38 -07:00
Roger Far
f0310e2b00
Merge pull request #707 from Cucumberrbob/fix/existing-file-in-error-processed-watch-path
Delete file if exists when copying to `Error Path` or `Processed Path` (watch folder)
2025-02-23 11:23:07 -07:00
Cucumberrbob
d292fbaee8
remove superfluous newline 2025-02-20 14:59:09 +00:00
Cucumberrbob
8e1f61472a
remove commented out line 2025-02-20 14:58:37 +00:00
Cucumberrbob
439b266946
Actually use GetSymlinkPath 2025-02-20 14:57:44 +00:00
Wald764
66f0ae0e7c ⬆️ DebridLinkFr.NET to 1.0.4 2025-02-18 18:38:07 +01:00
Cucumberrbob
5a78125053
[PM] fix: search subdirectories using item.Id as folderId when getting downloaod links 2025-02-18 11:51:30 +00:00
Cucumberrbob
29914138aa
cleanup 2025-02-17 23:31:13 +00:00
Cucumberrbob
c43be84507
Delete file if exists when copying to {error,processed}StorePath (watch folder) 2025-02-17 23:03:38 +00:00
Cucumberrbob
1d15b0d651
Add tests for AllDebridTorrentClient
Tests:
- `GetDownloadLinks`
  - `IncludeRegex` filter works
  - `ExcludeRegex` filter works
  - `DownloadMinSize` filter works
  - only `IncludeRegex` is used when both `IncludeRegex` and `ExcludeRegex` are set
  - gets links for all files if none of the above filters are set
  - returns null if `torrent.RdId` is null
- `GetTorrents`
  - [Both full/partial sync] returns empty list when no torrents present in api response
  - [full sync] overrides any previous torrents in cache, deleting those not present in the api response
  - [partial sync] updates torrents in cache according to the api response
  - [partial sync] adds torrents to cache according to the api response
  - `Map` (private so tested via `GetTorrents`)
    - Computes progress correctly from `Downloaded / Size`
  - `UpdateData`
    - [`torrentClientTorrent != null`] does not get from api, updates the `torrent` accordingly
    - [`torrentClientTorrent == null`] gets from api, updates the `torrent` accordingly
    - [`torrentClientTorrent == null`] when torrent deleted from rd, updates `RdStatusRaw = "deleted""`
    - when `torrent.RdId == null`, returns the `torrent` unmodified
2025-02-17 22:04:18 +00:00
Cucumberrbob
e0264a6e29
Add tests for DownloadHelper (GetDownloadPath)
Tests:
- [Both overloads] uses the `download.Link` to guess the filenamem if it's not present
- [Both overloads] returns null if `download.Link` is null
- [Both overloads] returns nuyll if `download.RdName` is null
- [Both overloads] works for a file in a deeply nested subdirectory
- [overload with `downloadPath` argument only] creates the correct directory
2025-02-17 22:01:53 +00:00
Cucumberrbob
95ef1f42b8
Add tests for DownloadStationDownloader
Tests:
- Downloads successfully when everything goes right first time
- Downloads successfully when the 5th api call is successful after 4 failures
- Fails to download when 5 api calls fail in a row
- Fails to download if the file has already been added to `Download Station` (when `GetInfoAsync` does not error)
- FAils to download if `remotePath` cannot be parsed by `Path.GetDirectoryName()`
2025-02-17 22:01:16 +00:00
Cucumberrbob
f4ca137e83
Add tests for Torrents#RunTorrentComplete
Tests:
- doesn't run command when not present
- does run command when present
- listens to events on process for stdout/stderr
2025-02-17 22:00:57 +00:00
Cucumberrbob
3dee900be6
Add test project RdtClient.Service.Test 2025-02-17 22:00:33 +00:00
Cucumberrbob
2bbbf0fd10
Use ISynologyClient (mockable) and inject IDelayProvider so SynologyTorrentClient is testable 2025-02-17 22:00:19 +00:00
Cucumberrbob
c546bd0173
Use IProcessFactory, IFileSystem in Service.Torrents#RunTorrentComplete
Also adds dependency injection to `Torrents#RunTorrentComplete` for `DbSettings` (`Settings.Get`)
2025-02-17 21:59:56 +00:00
Cucumberrbob
fd073b4762
Add interfaces for TorrentData, Downloads, Process, ProcessFactory
Making them interfaces lets us dependency inject them, allowing a given class to be tested.
2025-02-17 21:57:29 +00:00
Cucumberrbob
daf8a9c6da
DownloadHelper: use IFileSystem for testable filesystem access 2025-02-17 21:57:02 +00:00
Cucumberrbob
95307f2933
Use AllDebridNetClientFactory so AD client can be dependency-injected 2025-02-17 21:56:32 +00:00
Roger Far
fe241db5db Upgrade AllDebrid and Downloader.NET to the latest versions.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-02-16 09:44:21 -07:00
Roger Far
7c3c1fb24c
Merge pull request #692 from Cucumberrbob/fix/include-exclude-pm-tb
[PM] [TB] Fix: Implement `IncludeRegex`, `ExcludeRegex`, and `DownloadMinSize`
2025-02-16 09:30:19 -07:00
Cucumberrbob
9299314b14
Log when rejecting files in TB GetDownloadLinks 2025-02-13 11:50:40 +00:00
Cucumberrbob
e5e64e6946
Include torrent in logs when rejecting files in PM GetDownloadLinks 2025-02-13 11:41:41 +00:00
Roger Far
56c25770c3 Cleanup. 2025-02-12 20:27:29 -07:00
Roger Far
c005bda484
Merge branch 'master' into pr-main-repo 2025-02-12 20:24:54 -07:00
Roger Far
f58b7d3e72 Refactored TorrentClientKind to Provider. Upgrade Downloader.NET 2025-02-12 20:24:22 -07:00
Roger Far
780d0e5118 Add fixes for AllDebrid and their new API. 2025-02-12 19:48:48 -07:00
Cucumberrbob
26f1f26cd1
Ensure MinDownloadSize, IncludeRegex and ExcludeRegex are honoured by TorBoxTorrentClient 2025-02-07 14:43:59 +00:00
Cucumberrbob
9e223de32e
Ensure MinDownloadSize, IncludeRegex and ExcludeRegex are honoured by PremiumizeTorrentClient 2025-02-07 14:40:13 +00:00
Wald764
f1bdc7d8b4 ♻️ fix a reference to RD instead of DL in DebridLinkTorrentClient 2025-02-03 00:49:36 +01:00
Cucumberrbob
48766e3d44 🐛 Fix build errors by not using Torrent = in DebridLinkTorrentClient
use `Data.Models.Data.Torrent`instead of `Torrent` and `Download = RdtClient.Data.Models.Torrent`
2025-02-03 00:25:02 +01:00
Cucumberrbob
56a61ad012 Use exact path for symlink source when using SymlinkDownloader 2025-02-02 22:11:26 +01:00
Wald764
303244127b ♻️ fix typo in Torrents.cs 2025-02-02 17:50:51 +01:00
Wald764
20fbf8833a ♻️ rename occurrences of debridlinkfr to debridlink 2025-02-02 17:19:41 +01:00
Wald764
d6d1813340 🐛 implement PR suggestions 2025-02-02 17:10:41 +01:00
Wald764
7902f56d66 🐛 endpoint /seedbox/cached removed by DebridLink 2025-02-02 16:46:35 +01:00
Wald764
4198b6ab55 🐛 fixes about the providers order and addition of GetFileName to DebridLinkFrTorrentClient 2025-02-02 16:26:46 +01:00
Wald764
59c47bfe1a 🎉 add support of DebridLinkFr 2025-01-31 10:07:29 +01:00
Roger Far
dc2ec486d7 no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-01-29 19:13:43 -07:00
Roger Far
a566f47988 Set the download client based on the torrent instead of hardcoded when upload a torrent from the web GUI. 2025-01-29 19:10:14 -07:00
Roger Far
24c759e4e6 Small fixes in the download client. 2025-01-29 19:03:38 -07:00
Roger Far
ef8142453f
Merge branch 'master' into fix/bad-download-path 2025-01-29 18:59:31 -07:00
Roger Far
f379d4efb8 DownloadStation cleanup. 2025-01-29 18:55:24 -07:00
Cucumberrbob
0c9de86531
rename symlinkPath -> symlinkSourcePath 2025-01-29 12:19:52 +00:00
Cucumberrbob
82f0bb8bbe
Use static GetSymlinkPath on AllDebridTorrentClient to get the symlink (since the behaviour is unique to the debrid service) 2025-01-29 12:11:25 +00:00
Cucumberrbob
beb0299a0b
revert changes to DownloadHelper.cs 2025-01-29 11:07:20 +00:00
YvesPa
062787143f Throw an lisible error if not config 2025-01-28 14:12:37 +01:00
YvesPa
eeef6fb7fe Merge remote-tracking branch 'rogerfar/master'
# Conflicts:
#	server/RdtClient.Service/RdtClient.Service.csproj
#	server/RdtClient.Service/Services/DownloadClient.cs
2025-01-22 19:11:23 +01:00
YvesPa
85e07f3c90 Update to nuget Synology project 2025-01-22 17:42:04 +01:00
Roger Far
db1760b36e Update to .95.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-01-19 20:47:09 -07:00
Roger Far
ce223d3e2c Add qBittorrent endpoint transfer/info. 2025-01-19 20:43:28 -07:00
Roger Far
3ed80909de Upgrade packages. 2025-01-19 19:58:29 -07:00
Roger Far
b8c183c079 Refactored out merge pattern for more readable syntax. 2025-01-19 19:57:39 -07:00
Roger Far
e449bd7928 Refactored out goto statement. 2025-01-19 19:55:19 -07:00
YvesPa
735912da5d Change log position 2025-01-10 16:45:50 +01:00
YvesPa
7d2d7fa35f Merge remote-tracking branch 'rogerfar/master' 2025-01-10 16:27:04 +01:00
Sculas
00e499593e
fix: Fix Alldebrid path again 2025-01-09 16:23:56 +01:00
Sculas
d6305c26f8
fix: Only add path separator in specific cases 2025-01-08 13:41:47 +01:00
Sculas
56934e3183
refactor: Improve logging 2025-01-07 15:15:31 +01:00
Sculas
38a3bc1537
perf(SymlinkDownloader): Skip file search when using Alldebrid 2025-01-07 14:34:02 +01:00
Sculas
8fe277fa52
fix(SymlinkDownloader): Add search path to potential file paths 2025-01-07 14:26:26 +01:00
Sculas
ee9e80f7d2
fix: Only apply AllDebrid-specific path fixes to AllDebrid 2025-01-06 12:41:41 +01:00
Roger Far
d5ee5d209c Changed how files are saved. 2025-01-05 20:56:37 -07:00
Roger Far
d43774d9b5 Fix hanging Aria2 downloads when files are being copied or cannot be found on the host. 2025-01-05 20:49:55 -07:00
Roger Far
e700939cfa
Merge pull request #651 from Sculas/fix/path-single-file-torrent
fix: Fix invalid download path with single-file torrents
2025-01-05 15:21:05 -07:00
Sculas
268bb6826c
fix: Fix invalid download path with single-file torrents 2025-01-05 22:17:22 +01:00
Roger Far
79164d54ca no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-01-05 11:03:18 -07:00
Sculas
0026541dca
fix(AllDebrid): Implement filters & fix file paths 2025-01-04 04:29:26 +01:00
Roger Versluis
8518cc1e10 no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2025-01-03 15:54:55 -07:00
Roger Versluis
34aec3d45d no message 2025-01-03 15:54:43 -07:00
Sam Heinz
409e47920e Revert "[TB] Download via zip if file count is over 50"
This reverts commit 6afef14855.
2025-01-02 21:21:52 +10:00
Sam Heinz
fa0f535858 [TB] Update TorBox.NET to 1.3.2 2025-01-02 13:15:59 +10:00
Sam Heinz
065afe9461 [TB] Set seeding based on website seeding setting
The default seed value for website dash is used to set whether to seed or not for new uncached torrents added via rdtclient
2025-01-02 13:15:42 +10:00
Sam Heinz
6afef14855 [TB] Download via zip if file count is over 50
Due to rate limiting issues this is implemented again, it works now since TB reenabled HEAD method for zip downloads on their backend
2025-01-02 13:10:36 +10:00
Sam Heinz
78daeeeaf3 [TB] Update TorBox.NET to 1.3.0 2024-12-28 16:52:45 +10:00
Sam Heinz
e21dc7279a [TB] Fix Index was out of range error
put < when shouldve put >
2024-12-28 01:36:21 +10:00
Roger Versluis
9a2d59afe0 no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-12-18 07:23:44 -07:00
Sam Heinz
1ad3dc51dd
[TB] Fix source parameter null log spam #618 2024-12-12 17:46:46 +10:00
Roger Far
ea364eefc5 Cleanup, bump to 91.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-12-11 20:15:25 -07:00
Roger Far
98c4b2ae9b Merge branch 'master' of https://github.com/rogerfar/rdt-client 2024-12-11 20:13:46 -07:00
Roger Far
1a27be8309 Update packages. 2024-12-11 20:13:42 -07:00
Sam Heinz
e92b197ddb [TB] Fix UI errors 2024-12-11 18:59:21 +10:00
Sam Heinz
ac6300a504 [TB] Replace null with empty string for filenames in TorrentClient
Not sure if its better to do this or allow null value to db, but i had this originally and it worked so i think im better off leaving it for now, but idk.

Also got fix for incorrect log
2024-12-11 00:03:43 +10:00
Sam Heinz
9d03c20aaa [TB] Change DownloadHelper to use download.FileName
Also adds the UpdateFileName function to DownloadHelper & DownloadData to push FileName to DB
2024-12-10 23:47:55 +10:00
Sam Heinz
350185b702 [TB] Refactor GetFileName in Torrent Clients 2024-12-10 23:45:13 +10:00
Sam Heinz
a1599ee716 [TB] Add FileName value to Download model 2024-12-10 23:44:11 +10:00
YvesPa
f9335be163 Merge remote-tracking branch 'rogerfar/master' 2024-12-10 11:12:55 +01:00
YvesPa
346982fe8d Manage error 2024-12-10 11:05:39 +01:00
Sam Heinz
3364deecbb [TB] Add download state for stalledDL 2024-12-10 15:25:45 +10:00
Sam Heinz
dffce96a45 [TB] Add default for fileName in DownloadHelper 2024-12-10 15:25:30 +10:00
Sam Heinz
c34c62f879 [TB] Move handling filenames from DownloadHelper to TorrentClients 2024-12-10 15:10:55 +10:00
Roger Far
4351c7541c no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-12-06 18:13:24 -07:00
Roger Far
165d83361b Removed InstantAvailability endpoint from AllDebrid. 2024-12-06 18:11:24 -07:00
Sam Heinz
99c30bbc4f [TB] Fix source parameter null error 2024-11-27 08:19:40 +10:00
Sam Heinz
8b16bd8ee2 [TB] Download files individually rather than via zip 2024-11-27 05:10:24 +10:00
Roger Far
8bd83dffbf no message
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-11-24 06:06:28 -07:00
Roger Far
116ca29131 Ignore the "Only download available files on debrid provider" for real-debrid and disable the instant availability completely for Real Debrid. 2024-11-24 06:05:23 -07:00
Roger Far
d932089b90 Catch disabled instant availability endpoint from Real Debrid.
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-11-24 05:45:22 -07:00
Roger Versluis
f33380e77b Changed dockerfile to use .NET 9
Some checks failed
Docker Image CI / build (push) Has been cancelled
2024-11-18 03:58:53 -07:00
Roger Versluis
ee5b5f8dc3 Upgrade to .NET 9, code cleanup. 2024-11-18 03:39:12 -07:00
Roger Far
7573492bcf
Merge pull request #585 from asylumexp/master
TorBox support
2024-11-18 03:28:51 -07:00
Roger Far
c9c4b4550b
Merge pull request #600 from Ruakij/fix/qbittorrent-api-login-on-authenticationtype-none
Accept login via qbittorrent-api when AuthType is none
2024-11-18 03:25:08 -07:00
Sam Heinz
b12f6812cf update torbox.net to 1.2.1 2024-11-12 15:16:03 +10:00
Sam Heinz
ec4e160288 disable seeding
Would rather have seeding disabled and Torbox support be merged then fix it in December when I have time again.
2024-11-12 14:29:47 +10:00
Sam Heinz
b78f0cdd95
Remove zipped 2024-11-11 17:59:00 +10:00
Ruakij
3bae4501a5
Accept login via qbittorrent-api when AuthType is none 2024-10-27 18:02:32 +01:00