Commit Graph
14132 Commits
Author SHA1 Message Date
Kenneth Skovhede dcaba2fbcd Store configuration with backup
This PR revives the `store-task-config` option that was never shown in the user interface and extends the feature to allow more flexibility in exporting the configurations.

The `Auto` setting is now on by default. For encrypted backups, this will store the backup configuration of the current backup with the backup for easy restore of a configuration.

For unencrypted backups, nothing will be stored by default.

To manually pick the what backup configurations are stored, the following options are also available:
- None: no configuration is stored
- Self: The configuration of the current backup is stored
- All: The configurations of all backups are stored

If the backup is not encrypted, the data is stored without any secrets (encryption keys, passphrases, passwords, api-keys, etc).

To override this, the following two options are also present:
- SelfWithForcedSecrets
- AllWithForcedSecrets

Using one of these when encryption is enabled has no additional effects, but for unecrypted backups this will include all secrets in the backups in plain-text.

This fixes #6256
This fixes #3073
2026-06-17 12:04:43 +02:00
Kenneth Skovhede 8663f55e8b Fixed case-insensitive search
This PR fixes a bug that caused backup searching to be case-sensitive.

The PR also exposes the case sensitive-flag in the API endpoint so the UI can toggle case-sensitive searching.
2026-06-17 10:15:08 +02:00
Kenneth SkovhedeandGitHub 59be19660c Merge pull request #6954 from duplicati/feature/support-ads
Implement support for ADS
2026-06-17 08:58:29 +02:00
Kenneth Skovhede d06b217975 Improved check for empty restore 2026-06-16 15:05:44 +02:00
Kenneth SkovhedeandGitHub 03f30e3f7d Merge pull request #6962 from duplicati/feature/add-auth-timeout-to-duplicatibackend
Add an auth timeout to the Duplicati backend
2026-06-16 12:09:29 +02:00
Kenneth Skovhede 5e2b13cc7b Made test logic similar to other places with ignore 2026-06-16 12:08:27 +02:00
Kenneth Skovhede bea9d3a84d Fix issue with problematic paths dissapearing on Windows 2026-06-16 12:05:00 +02:00
Kenneth Skovhede a6071a66d8 Updated test to check that backup actually sees problematic files 2026-06-16 12:04:29 +02:00
Kenneth Skovhede bfc4b00d96 Added quick exit if no files match when restoring 2026-06-16 12:03:55 +02:00
Kenneth Skovhede c58087db7e Fixed tests to check for errors, instead of crashing the restore process on path traversal checks 2026-06-16 10:20:27 +02:00
Kenneth Skovhede d08431059a Add an auth timeout to the Duplicati backend
On the first connection attempt, the autentication can be a bit slower due to the setup, causing it to time out. This PR adds a specific timeout for authentication so the calls do not time out.
2026-06-16 10:01:03 +02:00
Kenneth Skovhede 4aa61b2352 Avoid using .NET File operations during restore as they normalize paths. 2026-06-15 22:51:13 +02:00
Kenneth Skovhede aea61969e4 Cleaned up problematic path tests to return warning messages if seen 2026-06-15 17:55:08 +02:00
Kenneth Skovhede a3741d559c Revert testing change 2026-06-15 16:24:50 +02:00
Kenneth Skovhede a406c418ab Expand test to cover directory ADS 2026-06-15 16:12:28 +02:00
Kenneth Skovhede 980f80084c Handle case where ADS was restored before the host entry. 2026-06-15 16:10:26 +02:00
Kenneth Skovhede 2c64191c39 Fixes to tests 2026-06-15 15:58:50 +02:00
Kenneth Skovhede 1f3f4976f2 Added support for ADS in TargetCalculation 2026-06-15 15:48:23 +02:00
Kenneth Skovhede da83bf1cd2 Fixed a few failing tests 2026-06-15 15:45:51 +02:00
Kenneth Skovhede 9f3ea8f805 Fixed isseus with restoring ADS correctly 2026-06-15 14:43:24 +02:00
Kenneth SkovhedeandGitHub 44ba6f8b6f Merge pull request #6956 from duplicati/feature/handle-modified-filter
Handle script modified filter
2026-06-12 21:47:40 +02:00
Kenneth SkovhedeandGitHub eeb9bea2d9 Merge branch 'master' into feature/support-ads 2026-06-12 19:43:31 +02:00
Kenneth SkovhedeandGitHub cdc4368c0f Merge pull request #6961 from duplicati/feature/fix-minor-issues-with-remote-sources
Fix minor issues with remote sources
2026-06-12 19:43:07 +02:00
Kenneth SkovhedeandGitHub ffd32988af Merge pull request #6960 from duplicati/feature/improve-license-flexibility
Improve license flexibility
2026-06-12 19:41:40 +02:00
Kenneth Skovhede d00166f791 Attempt to fix test issues on Windows 2026-06-12 19:40:32 +02:00
Kenneth Skovhede 4f26f77f6c Fixed failing test 2026-06-12 19:27:15 +02:00
Kenneth Skovhede 49f08bdbbe Fixed an issue with HyperV parsing failing if the filter string was null 2026-06-12 18:08:25 +02:00
Kenneth Skovhede ee92633b80 Reworked parameter mapping and passing inside Controller.cs to avoid future issues with lambda captures that prevent module modifications from being applied. 2026-06-12 17:41:17 +02:00
Kenneth Skovhede 1f155da26a Added test that verifies paths can be modified by writing --localpath options back 2026-06-12 17:15:55 +02:00
Kenneth Skovhede c5e621434c Simplify test to avoid quirks in how filters are handled internally across platforms. 2026-06-12 16:37:41 +02:00
Kenneth Skovhede c65dc52fc6 Path traversal now logs a warning instead of crashing the recovery restore. 2026-06-12 16:37:08 +02:00
Kenneth SkovhedeandGitHub 318d37e689 Merge branch 'master' into feature/handle-modified-filter 2026-06-12 16:26:49 +02:00
Kenneth Skovhede 6313471ffa Fix minor issues with remote sources
This updates some minor issues that would cause warnings or make things appear to not work, even though they would work fine when actually running a backup.
2026-06-12 13:47:49 +02:00
Kenneth SkovhedeandGitHub 3f7161873a Merge branch 'master' into feature/improve-license-flexibility 2026-06-12 13:35:50 +02:00
Kenneth SkovhedeandGitHub 6ceadf2afb Merge pull request #6959 from duplicati/feature/browse-remote
Added unified interface for remote browsing.
2026-06-12 13:35:38 +02:00
Kenneth SkovhedeandGitHub d4c2f7ad86 Merge pull request #6957 from duplicati/feature/always-install-windowsservice
Always install WindowsService.exe
2026-06-12 13:35:13 +02:00
Kenneth Skovhede 243cb62975 Improve license flexibility
This changes the way license usage is calculated. Previously the licenses would prohibit enumerating more than what was licensed. This had the benefit that the backup engine was unaware that more items exists.

However, this also prevented filtering items, as the enumeration happens before the filters are applied.

With the new approach, enumeration is applied without imposing limitations, but actually reading the items are limited. This allows filtering unwanted items, and they will not count towards usage.

The downside of this approach is that the backup will contain empty "folders" that could, at a glance, appear to contain everything, but are in fact just empty folders.

To mitigate this, the warning message now explictly mentions that some folders may be empty.
2026-06-12 13:34:04 +02:00
Kenneth Skovhede b67a73553a Added unified interface for remote browsing.
This PR adds a single API endpoint for listing contents of remote source or backend. With this API, we can greatly simplify the FE as it does not need to know about webmodules for each provider, but can just use the single API.

To support this, the fulldisk module was updated slightly to return enumerable meta entries, similar to ms365 and gws providers.
2026-06-12 11:06:21 +02:00
Kenneth Skovhede a438e2d675 Update Agent MSI to not include options and no shortcuts are installed.
Since the service starts automatically, there are no options to start it either.
2026-06-10 16:44:14 +02:00
Kenneth Skovhede 3d37498a0b Always install WindowsService.exe
The MSI update to a managed service component meant that the `Duplicati.WindowsService.exe` would only be installed if the "Install as service" option was selected.

This PR fixes it by directly installing `Duplicati.WindowsService.exe` in case the service install is not selected.
2026-06-10 16:31:37 +02:00
Kenneth Skovhede 933c8924c8 Fixed filter not being passed to soem controller methods 2026-06-10 14:18:06 +02:00
Kenneth SkovhedeandGitHub 87b6f636fc Merge pull request #6955 from duplicati/feature/add-server-side-filters
Add server-side filter eval
2026-06-09 21:00:21 +02:00
Kenneth Skovhede ee371c7413 Handle script modified filter
This PR fixes a bug where a script could write a new filter, but the filter was never applied to the backup.

This also fixes an issue where the filter string was not available in scripts or emails, except on the initial call.

This PR updates the logic so the `run-script-after` and `run-script-post-backup` also have access to the filter string, if needed for reporting or other.

This fixes #5143
2026-06-09 16:29:02 +02:00
Kenneth SkovhedeandGitHub 6deed30db4 Merge pull request #6953 from duplicati/feature/block-path-traversal-in-recovery-tool
Block path traversal in recovery tool
2026-06-09 10:14:06 +02:00
Kenneth SkovhedeandGitHub 04a0619296 Merge pull request #6952 from duplicati/feature/allow-disable-default-secret-provider
Allow disable default secret provider
2026-06-09 10:13:41 +02:00
Kenneth Skovhede 2a71a1e816 Add server-side filter eval
This PR adds a service-side function to perform filter evaluation. This can be used by the FE to get more correct results when using complicated filters.

This fixes #6926
This fixes #4194
This fixes #3180
2026-06-09 10:10:03 +02:00
Kenneth Skovhede ce006a695d Merge branch 'master' of github.com:duplicati/duplicati 2026-06-08 19:33:25 +02:00
Kenneth Skovhede a4820ccb62 Implement support for ADS
This PR implements support for reading and writing alternate data streams on Windows.

For now, the option is disabled by default and needs to be enabled with `--enable-ads-backup`. After this option is set, Duplicati will also extract any alternate datastreams from the filesystem and include them in the backup.

By default, ADS elements will be restored, but `--disable-ads-restore` can be used to ignore any ADS elements during the restore process.

This fixes #189
2026-06-08 19:33:01 +02:00
Kenneth Skovhede 8cb1c9562e Block path traversal in recovery tool
This adds a check that prevents restoring files outside the specified target folder when using the recovery tool.

When choosing to restore to a specific folder, the expectation is that files are not restored outside the folder, which could happen with symlinks or manually crafted entries. This blocks it the same way the regular restore does and also supports `--allow-restore-outside-target-directory` to disable the check.
2026-06-08 19:17:07 +02:00
Kenneth SkovhedeandGitHub a096b3ca24 Merge pull request #6950 from duplicati/feature/case-change-usn
Fixed a case-change issue with USN
2026-06-08 17:33:15 +02:00