Commit Graph
373 Commits
Author SHA1 Message Date
Kenneth Skovhede b26782ddf1 Improve config speed from console
This PR updates the remove configuration to receive configuration directly on connection, instead of waiting for the server to send it.

This also adds a hibernation setting that will let the server tell the client to stop connecting for a while which can reduce resource consumption at the cost of not being always available.
2026-04-21 14:47:03 +02:00
Kenneth Skovhede c0f40e19ca Updated copyright year to 2026 across the project 2026-04-16 15:21:24 +02:00
Kenneth Skovhede 6ec7a24bb8 Improved settings management code.
The logic is now that the properties for each of the server settings are defined on the constant that triggers them, instead of splitting it across the API and internal database.

This makes it less error prone to introduce newsensitive server settings.
2026-03-02 13:50:43 +01:00
Kenneth Skovhede ce9a433390 Merge remote-tracking branch 'origin/master' into feature/automatic-https-support 2026-03-02 13:15:21 +01:00
Kenneth Skovhede fae5e9a30c Streamline serversettings
This PR streamlines the access to the serversetting+serversettings so they both rely on the database key name, and not using reflection to find properties.
2026-03-02 12:35:18 +01:00
Kenneth Skovhede 07cd39af34 Add support for managed TLS
This PR adds support for generating a self-signed CA and then using that CA to generate TLS certificates.

A new tool `duplicati-configure` / `Duplicati.CommandLine.ConfigureTool.exe` is added to manage the certificates.  The tool saves the configuration in the database and is meant to run with elevated privileges for the initial CA installation.

The option `--configure-https` can be added to server/trayicon, and if the process has permissions, this will automatically install the CA certificate.

If a CA is configured, the server will automatically issue, renew and use a TLS certificate.

With this setup, the TLS is opt-in, but once the flow is well tested, we can switch it to opt-out.
2026-03-01 11:33:05 +01:00
Kenneth SkovhedeandGitHub 264f455319 Merge branch 'master' into feature/assign-license-from-console 2026-02-20 13:09:10 +01:00
Kenneth Skovhede ab82719a6b Improved license key support
Added support for reporting the license key details in SystemInfo.

Added support for loading a key via the console connection, if used.
2026-02-20 10:39:51 +01:00
Kenneth SkovhedeandGitHub e8bc016791 Merge branch 'master' into feature/folder-status-indicator 2026-02-20 10:34:16 +01:00
Kenneth Skovhede 21f85dbcc9 Fixed a compile issue after merge 2026-02-20 10:32:08 +01:00
Kenneth Skovhede 020698233e Fixed an edge case, relevant for tests only 2026-02-20 09:05:20 +01:00
Kenneth SkovhedeandGitHub 8cf2154037 Merge pull request #6768 from duplicati/feature/add-google-workspace-backup
Add support for Google Workspace backup
2026-02-20 08:56:40 +01:00
Kenneth SkovhedeandGitHub 336e30936e Merge pull request #6773 from duplicati/feature/add-tempdisk-api
Add temp disk space check endpoint
2026-02-20 08:56:26 +01:00
Kenneth SkovhedeandGitHub a2d247adb3 Merge branch 'master' into feature/folder-status-indicator 2026-02-19 19:30:31 +01:00
Kenneth Skovhede 01130f4cd5 Implemented option to enable folder-status service (disabled by default). 2026-02-19 17:30:57 +01:00
Kenneth Skovhede 4bba0d4a41 Updated unmasking to support values from persisted ConnectionStrings 2026-02-19 16:35:49 +01:00
Kenneth Skovhede 55ed014689 Fixed a missing connectionStringID mapping 2026-02-19 16:34:52 +01:00
Kenneth Skovhede 8cebbd4f3c Add temp disk space check endpoint
Add a new V2 API endpoint POST `/system/temp-disk-space` that reports
free and total disk space for the configured temporary folder. The
endpoint accepts an optional backup ID to resolve backup-specific
tempdir overrides, and returns the resolved temp path, free/total
space, `dblock-size`, and `restore-cache-max values`.
2026-02-19 14:23:51 +01:00
Kenneth Skovhede 94d272e734 Added support for also storing the connectionstringId for additional target urls 2026-02-19 10:41:27 +01:00
Kenneth Skovhede ea6d94b035 Added support for storing multiple targets in database with backwards compatibility. 2026-02-18 11:06:08 +01:00
Kenneth Skovhede b8e148d000 Merge remote-tracking branch 'origin/HEAD' into feature/add-destination-repo 2026-02-17 10:29:53 +01:00
Kenneth Skovhede f785f3e6ea Reworked restore flow to support unmasking source path for destination 2026-02-16 22:33:28 +01:00
Kenneth Skovhede 23e1d8ee3e Fixed correct unmasking of remote sources 2026-02-16 22:05:44 +01:00
Kenneth Skovhede c606dba53a Fixed issues with testing remote sources when masked 2026-02-06 14:04:51 +01:00
Kenneth Skovhede fa6dd0fd94 Fixed option to provide a connection string id for test methods 2026-02-05 10:43:16 +01:00
Kenneth Skovhede 9dd6dba0c2 Merge remote-tracking branch 'origin/master' into feature/add-destination-repo 2026-02-05 10:26:45 +01:00
Kenneth SkovhedeandGitHub a6b9002011 Merge branch 'master' into feature/encrypt-and-mask-remote-sources 2026-02-04 14:21:19 +01:00
Kenneth Skovhede 0f806c1a3a Improve WebDAV SSL certs
This PR now checks for the SSL certificate and the UI will offer to pin the certificate if this is not a trusted certificate.

Also, the sourceproviders and restoredestinationproviders now actually invoke the `Test` method when being tested.
2026-02-03 14:57:11 +01:00
Kenneth SkovhedeandGitHub 562cb1199a Merge branch 'master' into feature/add-destination-repo 2026-02-02 11:00:39 +01:00
Kenneth SkovhedeandGitHub 0a702f48ff Merge branch 'master' into feature/folder-status-indicator 2026-01-30 16:22:18 +01:00
Kenneth Skovhede e009a0f3ec Remote source masking and encrypting
This PR adds masking to remote sources so the passwords are not leaked to the browser. The logic works the same as for TargetURL, where the sensitive fields are replaced by a password placeholder before being transmitted via the endpoints.

When data returns, the masking is removed by looking at the original source and the unmasked value is then encrypted before being stored in the database.

Since the sources is an array and not just a single field, the logic here uses the mount point as a "key" for figuring out which new sources map to the original sources. This is robust in the face of re-ordering, deletions and additions.

If there is just a single remote source (assumed most common) this will match even if the prefix does not, making it possible to change the prefix in this case.

For multi-remote sources, it is not possible to change the prefix without also re-typing all masked properties.

If there is a need later, we could extend the matching to look for how many unique protocols are there, and maybe servers as well to try to match better when the prefixes have been renamed.

There is a guard right before saving a source that rejects it if the source contains the placeholder so we ensure that even faulty logic cannot persist an invalid connection string.
2026-01-30 14:36:57 +01:00
Kenneth Skovhede cf17d2617e Added a connection string repo
This adds a connection string repo, where connection strings can be stored.

The general idea is that it is possible to store connection strings, say an S3 connection, and then re-use the connection string for multiple backups, editing as needed.

The implementation supports listing connection strings, creating, updating, and deleting them.

The connection strings are masked so sensitive information is not available in the browser, and the logic patches connection strings internally to ensure markers are replaced with the correct values.

The connection string itself is stored in full, such that a Duplicati version roll-back will not make the connectionstring become invalid.

There is also an endpoint that allows updating existing backups using the connection string, so it is easy to rotate keys. The logic for this feature is that it retains: scheme, port, host, path, and any extra settings on the target url.
It does not remove settings from the target, but will overwrite or add settings from the connectionstring.
2026-01-30 13:59:47 +01:00
Kenneth SkovhedeandGitHub 26f7dd8586 Merge branch 'master' into feature/add-office-365-backup 2026-01-29 20:04:42 +01:00
Kenneth Skovhede 0f61698238 Minor fixes for better experience when running a command and the database is in an incorrect version 2026-01-28 15:37:41 +01:00
Kenneth SkovhedeandGitHub c8283fe299 Merge branch 'master' into feature/add-office-365-backup 2026-01-27 20:44:45 +01:00
Kenneth Skovhede 732b4e3989 Implemented support for the Test operation on sourceProvider and restoreDestinationProvider 2026-01-25 11:57:09 +01:00
Kenneth Skovhede e9af50f9ac Added minor code cleanup
- Added missing cultureinformation on some date/time strings
- Added a check if a file exists to avoid an exception when probing for datafolder files
- Fixed a string that should be a constant
- Fixed a dirseparator append
- Fixed places where the exception message was logged into the log message itself creating double data
2026-01-23 11:43:59 +01:00
Kenneth Skovhede f4a7e3a209 Added support for loading proprietary modules 2026-01-14 10:12:32 +01:00
Kenneth Skovhede 22e66a27a6 Rewrote logic to provide a restore destination 2026-01-14 10:04:52 +01:00
Kenneth Skovhede 1523f730e3 Added support for storing metadata in the database 2026-01-14 10:01:20 +01:00
Kenneth Skovhede 6ac07531bd Change webmodule to have async return value 2026-01-14 09:49:56 +01:00
Andy Bodnar 1538ed4b26 Add Windows folder icon overlay for backup status
This adds a Windows Shell Extension that shows overlay icons on folders
that are included in Duplicati backups, similar to how cloud storage
solutions like OneDrive and Google Drive indicate sync status.

The feature includes:
- New API endpoint /api/v1/folderstatus to query backup status of folders
- Windows Shell Icon Overlay handlers for backed up, warning, error and
  syncing states
- Client methods in DuplicatiServerClient for the new endpoint
- Registration script for the COM shell extension

Closes #6450
2026-01-11 14:34:52 -07:00
Kenneth SkovhedeandGitHub f34377fb76 Merge pull request #6686 from duplicati/feature/support-synology-dsm
Added support for Synology DSM
2026-01-05 14:45:23 +01:00
Kenneth SkovhedeandGitHub e37a636819 Merge pull request #6684 from duplicati/feature/support-remote-locking
Add support for remote locks
2026-01-05 14:44:37 +01:00
Kenneth Skovhede 7f11f9db2e Handle auth messages after being authenticated. 2025-12-19 11:44:19 +01:00
Kenneth Skovhede 204a563335 Updated authentication to cover all files, including static ones.
The static files are not XSRF protected but require a valid token.

Updated to an expiring memory cache instead of concurrent dictionary to avoid memory leaks with really long running sessions.
2025-12-19 11:43:52 +01:00
Kenneth Skovhede 940b5f031a Fixed integrated authentication.
API calls are now guarded by DSM auth, including XSRF protection.
2025-12-18 16:23:28 +01:00
Kenneth Skovhede f51f09664e Added support for XSRF token forwarding 2025-12-18 15:44:25 +01:00
Kenneth Skovhede 6f0b6df2a5 Merge remote-tracking branch 'origin/HEAD' into feature/support-synology-dsm 2025-12-18 11:31:37 +01:00
Kenneth Skovhede 0dbcb456cc Improve API for getting registration status.
This PR adds a new endpoint to explicitly wait for registration instead of reusing the registration endpoint for both starting and continuing registration wait.
2025-12-18 08:11:14 +01:00