Commit Graph
32 Commits
Author SHA1 Message Date
Kenneth Skovhede c0f40e19ca Updated copyright year to 2026 across the project 2026-04-16 15:21:24 +02:00
Kenneth Skovhede 55ed014689 Fixed a missing connectionStringID mapping 2026-02-19 16:34:52 +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 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 Skovhede 34b6f9ea55 Implemented remotely managed backup configurations
This PR adds the ability to manage backup configurations outside of the the client.

The implementation ensures that locally created configurations cannot be affected by the remotely managed backups.

If the instance is not connected to a remote console, this has no effect.

This PR updates the local database to add the column `ExternalID` that tracks backups that are managed remotely.
2025-09-17 15:07:09 +02:00
Kenneth Skovhede 45f902594e Mask passwords to avoid leaking them in the UI
This PR adds a masking function that replaces sensitive parameters with a masking string, such that the passwords are never submitted to the client during edits.

For now, the export feature (both as JSON and as commandline) do not mask the sensitive parameters.

This fixes #2024
2025-09-04 22:03:10 +02:00
Marcelo C. 2995cc284a Adds DuplicatiServerClient for API interaction
Introduces a `DuplicatiServerClient` to interact with the Duplicati server API, including authentication and various V1/V2 endpoints.

Adds `ServerCredentialType` to specify the authentication mechanism (Password or Token).

Includes a usage example to demonstrate client capabilities.
2025-07-09 17:28:15 -03:00
Carl Johnsen e55c36081f Merge branch 'master' into performance/mssqlite-async 2025-06-24 14:24:09 +02:00
Carl Johnsen f6ac30e831 Merge remote-tracking branch 'upstream/master' into performance/mssqlite-async 2025-06-19 12:17:30 +02:00
Carl Johnsen 2412800c0c Removed the sqlite page cache option. It should be set through the environment variable, or some other way of providing a custom database configurotion 2025-06-19 11:41:39 +02:00
Carl Johnsen 9b0d89363b Removed whitespace 2025-06-19 11:40:23 +02:00
Kenneth Skovhede ad52ee9c43 Added flag to indicate if the backup has a local database attached 2025-06-17 16:51:44 +02:00
Kenneth Skovhede 460f60f61c Return version numbers, and not ids
This fixes #6355
2025-06-17 11:56:12 +02:00
Kenneth Skovhede eaf6fe5f26 One more FIXMEGlobal removal 2025-05-03 16:25:24 +02:00
Kenneth Skovhede d788f44ef3 One more removed property 2025-05-03 16:03:37 +02:00
Kenneth Skovhede 16acb282c9 More FIXMEGlobal cleanup 2025-05-03 15:54:23 +02:00
Kenneth Skovhede 072f89c747 Remove WorkerThread class
This removes the WorkerThread class and many of the complications around it.

Instead of having a generic worker, there is now the `QueueRunnerService` which takes on all the resposibilities for handling queued tasks.

This is one step towards removing `FIXMEGlobal`
2025-05-03 15:01:09 +02:00
Kenneth Skovhede 0a7a1cd689 Added option to set the SQLite page cache
This adds an extra option to allow setting the SQLite page cache size as a regular option.

Prior to this commit it was only possible to set the SQLite page cache size via environment variables.

The option to use environment variables is preserved, and as options from the environment variable are applied after the new setting, environment variables take precedence.

The default value for the new option is to use 1% of the system memory for the page cache. For the restore process, a connection per worker may be made which defaults to half the number of cores, so the maximum amount of memory is 1% * half the CPU cores.

This is just the upper limit, and SQLite may choose not to use all of it.

This fixes #6178
2025-04-22 14:26:46 +02:00
Kenneth Skovhede 1ccafea2c8 Improved error flows on restore
Added `UserInformationException` to reported server output.

Removed retries on file listing as the UI will retry and the internal retries will hang the UI.

Handled the FolderMissing exception for listing filesets.
2025-04-11 08:47:46 +02:00
Kenneth Skovhede 27f0bb4ea0 Unified code to find the data folder.
The `machineid.txt` and `installation.txt` files are now default located in same folder where the database is default located.
2025-01-27 22:51:45 +01:00
marceloduplicatiandGitHub 2836e904fd Fix encoding on export backup configuration filename (#5888)
Fix for issue:
https://github.com/duplicati/duplicati/issues/5884
2025-01-17 15:14:01 +01:00
Kenneth SkovhedeandGitHub 9464caf622 Feature/update license 2025 (#5851)
* Fixed some minor whitespace issues

* Updated all copyright to 2025
2025-01-07 09:40:39 +01:00
Kenneth Skovhede 653868f553 Removed unused using directives 2024-08-28 15:10:43 +02:00
Kenneth Skovhede ae6d5112f8 Reworked encryption of fields to only affect code inside Connection.cs 2024-08-20 17:08:55 +02:00
Marcelo Ceccon 67a7df45c8 Implementation of settings field encryption
With this change, TargetURL (where credentials of storage destinations were stored in plaintext), the backups passphrases as well as JWT tokens are not stored encrypted.

The encryption key is derived from the system's motherboard serial number, or can be set manually via environment variable.
2024-08-19 13:51:14 -03:00
Kenneth Skovhede 3f51536073 Fixed issue with fetching logs 2024-06-28 10:37:47 +02:00
Kenneth Skovhede d3a8ecacad Implemented single operation token.
Fixed export and bugreport download.
2024-06-28 08:56:00 +02:00
Kenneth Skovhede 1acda72561 Fixed not creating an empty database 2024-06-24 10:14:03 +02:00
Kenneth Skovhede 8efab7f746 Fixed an optional parameter 2024-06-21 07:52:28 +02:00
Kenneth Skovhede 3f29642f6c Implemented JWT tokens.
Added auth requirement on all endpoints.
Added SignIn-, Access- and Refresh-Tokens based on JWT.
Upgraded stored password to be based on PBKDF2.
Added default password assignment.
Updated logic to support auth-header and re-sign-in for tray-icon and web-ui.
2024-06-19 13:54:10 +02:00
Kenneth Skovhede 6878a601a9 Fixed XSRF for import/export feature 2024-06-08 13:59:33 +02:00
Kenneth Skovhede 9f79025744 Removed HttpServer.
Re-implemented everything using ASP.NET.
Changed some requests to use JSON instead of FORM data.
Some work towards deleting the FIXMEGlobal instance.
Auth is missing, XSRF does not work correctly.
2024-06-07 15:56:43 +02:00