Commit Graph
217 Commits
Author SHA1 Message Date
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 Skovhede d7f9981f49 Fixed a few nullable warnings 2026-02-17 10:37:08 +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 1ea74a3c63 Updated to .NET10 2025-11-14 15:05:39 +01:00
Kenneth Skovhede 68da969456 Added support for injecting custom CSS and JS into the client 2025-11-06 13:35:19 +01:00
Kenneth Skovhede 1f41c7af12 Moved to JsonSignature library
Code that was previously embedded in th Duplicati.Library.Utility is now in its own library.
2025-10-08 10:11:57 +02:00
Kenneth Skovhede f25187f043 Fixed comment to match what the code does 2025-09-16 09:54:51 +02:00
Kenneth Skovhede fc478146f3 Update ServerUtil probing
This PR updates the probing logic to not try the database if a password is supplied on the commandline.

It also fixes a crash that could happen at an unwanted place, if the user does not have write access to the supplied data folder. After this, the application will still crash due to not having  a place to write information, but it does not crash in the preloader logic. This also prevents creating the folder while probing for the database.

This PR also fixes a case where the database could become encrypted, if the ServerUtil was providing an encryption key to an unencrypted database. Before this fix, the database would be encrypted with the key provided to ServerUtil, which would most likely cause the Server/TrayIcon to fail starting and perhaps crash.

This fixes #6377
2025-07-10 21:03:16 +02:00
Marcelo C. 614f047dbb Sets infinite timeout for HTTP clients
Ensures that long-running HTTP requests, such as downloads and uploads, do not timeout prematurely.

This change configures specific HttpClient instances with an infinite timeout to accommodate operations that may take an extended period. The default 100s timeout is retained for some operations like registration, where a long delay may indicate a problem.
2025-06-12 10:33:13 -03:00
Carl Johnsen 8be97bcefd Whitespace changes 2025-05-16 10:22:51 +02:00
Carl Johnsen 04153d2c12 Removed Microsoft.DotNet.Analyzers.Compatibility from csproj's as it's deprecated. 2025-05-16 09:53:26 +02:00
Kenneth Skovhede a0ecc5e05d Added a database downgrade tool 2025-04-24 16:36:14 +02:00
Marcelo C. bf22d7e178 Changed parameter from boolean to Enum for clarity of purpose 2025-04-02 10:15:21 -03:00
Marcelo C. 2da12c12bb Refactoring of how permissions are set whilst obtaining DataFolder
This addresses [Issue](https://github.com/duplicati/duplicati/issues/6114).

Whenever in non-write context, the permissions of the folder are not set.

Changing pattern from static constructor execution.
2025-04-01 15:21:40 -03:00
Kenneth Skovhede e2df06b8f5 Guards for setting permissions
When setting the permissions, this does not crash the process if it fails, but emits a warning.
2025-03-31 16:07:50 +02:00
Kenneth Skovhede b754caccc3 Added metadata to reports to report current update channel 2025-03-25 12:34:54 +01:00
Kenneth Skovhede 5a4fcaa6d7 Added tool to work with remote sources 2025-02-21 11:51:45 +01:00
Kenneth Skovhede 0260a061bb Made the synctool an executable 2025-02-10 21:37:52 +01:00
Kenneth Skovhede f0f79418d8 Fixed logic so the permissions are always applied, unless the user specifically opts out by placing a file named insecure-permissions.txt in the data folder. 2025-02-06 17:09:18 +01:00
Kenneth Skovhede 1af6e2b1d6 Experiment with CommonProgramData on Windows in favor of users folder. 2025-02-06 16:57:44 +01:00
Kenneth Skovhede aab91eb0df Added protection to newly create data folder and databases 2025-02-06 16:56:06 +01:00
Kenneth Skovhede de00eee3de Changed logic so overrides to server-datafolder will affect any operation, including CLI, Agent, and ServerUtil 2025-01-28 13:23:57 +01:00
Kenneth Skovhede fac12ba772 Further consolidated the data folder.
Added support for `--portable-mode` and `--server-datafolder` for the CLI, ServerUtil, and Agent.

Fixed a few places where file reads were not cached properly.

Moved some responsibilities of UpdaterManager into DataFolderManager.

This now supports storing `machineid.txt` and `installation.txt` inside the path pointed to by `--server-datafolder` or alternatively with `--portable-mode`.

It is possible that some fringe backwards compatibility is lost with this update.

Fixed an issue with AutoUpdater crashing on check/download.

This fixes #5902
2025-01-28 13:01:35 +01:00
Kenneth SkovhedeandGitHub 039e1a08fb Merge branch 'master' into feature/prevent-windows-subfolder-storage 2025-01-28 08:58:26 +01:00
Kenneth SkovhedeandGitHub 610f3b47d1 Update reporting module (#5910)
* Updated reporting values.

The reporter module can now emit the following extra values:
- operating-system
- installation-type
- destination-type
- next-scheduled-run

When running from the built-in scheduler, it will automatically set `--next-scheduled-run` so it is applied to the reporting data.

* Implemented an improved machine name reader.
This fixes #5907

* Added a guard against sending too much of the destination url as the destination.

* Fixed reading Windows Machine name

* Removed extra Windows logic as it has no effect
2025-01-28 08:56:42 +01: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
Kenneth SkovhedeandGitHub 997891525a Updated license-updater to update csproj files (#5898)
* Updated license-updater to update csproj files

* License updates
2025-01-22 21:04:19 +01:00
Kenneth SkovhedeandGitHub 6bbd64a655 Fixed nullability warnings in Utility.cs (#5861)
* Fixed nullability warnings in `Utility.cs`

* Fixed a number of nullability issues and warnings

* More nullable fixes

* Fixed the overwrite issue

* Fixed additional nullability issues

* Removed additional nullability issues

* More nullability fixes and added some xmldoc

* Added more xmldocs and removed an unused argument

* Removed more warnings
2025-01-14 14:03:48 +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 b610e412d7 Updated preload probing logic.
This updates the logic to not emit any console messags unless the environment variable `DUPLICATI_PRELOAD_SETTINGS_DEBUG=1` is set.
This changes the paths used on MacOS to not use the `/usr/share/Duplicati` folder which is write procted, but rather the `/usr/share/local/Duplicati`.

Added the `/usr/share/local/Duplicati` path for Linux as well.

Added detection for portable mode and only using relative/specific paths for preload in portable mode.

Added support for also probing `%LOCALAPPDATA% folder, which is where other settings are loaded, to allow "all settings in one place". Note that it is possible to use the preload to choose a different folder for anything but the `preload.json` file.

Added an option for specifying `DUPLICATI_PRELOAD_SETTINGS=!<path to file>`, where the leading `!` signifies that **only** that file is loaded and all other locations are ignored.
2024-12-13 11:07:40 +01:00
Kenneth Skovhede 42c4e50482 Fixed issues with update detection.
This fixes a case where the update checker keeps an old reference to the previous updated version, despite running a newer version.

It also removes some use of `Assembly.GetExecutingAssembly().GetName().Version` with the information from `UpdaterManager.SelfVersion.Version` as that should follow the update info.

This fixes #5698
This fixes #5252
2024-11-25 17:27:50 +01:00
Kenneth Skovhede 3bac3dbae3 Added package type ids when sending usage reports to track individual package type usage.
Added package type id to download checker header for future use.
2024-11-09 23:00:20 +01:00
Kenneth Skovhede 4b84135622 Merge remote-tracking branch 'origin/master' into feature/add-secret-provider 2024-10-24 16:11:41 +02:00
Kenneth Skovhede 34d13a20e2 Initial version of the external secret provider 2024-10-24 16:06:59 +02:00
Kenneth Skovhede f251d34b57 Implemented support for including the machine hostname in reports for simpler identification. 2024-10-16 16:22:47 +02:00
Kenneth Skovhede ef0ca64d52 Merge remote-tracking branch 'origin/master' into feature/remote-control-support 2024-10-03 14:49:07 +02:00
Kenneth Skovhede 669e90704d Initial work on supporting a secure remote control connection. 2024-09-18 11:07:59 +02:00
Kenneth Skovhede f3e2a0a902 Avoid setting Thread.CurrentCulture
Avoids setting deprecated `Thread.CurrentCulture` and `Thread.CurrentUICulture`, using `CultureInfo.CurrentCulture` instead.
Fixed a few legacy places where incorrect string compares were used.
2024-09-18 09:24:55 +02:00
Marcelo Ceccon 331960a3c5 Timeout corrections for Updatemanager & Report Uploader 2024-09-06 17:02:04 +02:00
Marcelo Ceccon c7c46aed7d Replacing deprecated WebClient for HttpClient
This is a proposal for replacing the deprecated WebClient with the HttpClient.

This commit implements the core functionality following the HttpClientFactory pattern as suggested by the framework. It also supports an alternative approach in areas where the HttpClient pattern is not desirable.

The first backend component to be migrated is WebDav, and the HttpClient pattern is also applied to the update downloader.

Once merged, other backend components can be migrated, eventually removing the deprecated WebClient from the codebase.

Additionally, the debug-profind-file option from webdav, which was a remnant from early development, is removed as it is no longer useful for debugging different webdav server responses.
2024-09-06 10:46:46 +02:00
Kenneth Skovhede 71053c6b94 Improved debugging support for preload 2024-08-28 09:45:37 +02:00
Kenneth Skovhede 3548475360 Implemented preload support.
This commit adds the option to provide preload/preset options that change the default values for Duplicati's commandline or environment variables.
This fixes #5480
2024-08-28 00:18:55 +02:00
Kenneth Skovhede 4f332ea075 Added the missing duplicati-service binary 2024-08-28 00:15:53 +02:00
Kenneth Skovhede 735b4020eb Implemented duplicati-server-util for sending various commands to a running server.
This tool replaces `ConfigurationImporter` and partially replaces `duplicati_client`.
This fixes #5474
2024-08-26 20:00:13 +02:00
Grzegorz Łagocki 9b19bac7da Add Copyright Property to *.csproj files 2024-07-09 00:37:18 +02:00
Jojo-1000 917e2cd0c4 Remove obsolete custom platform detection. 2024-05-30 02:14:05 +02:00
Kenneth Skovhede 95b040d386 Added ConfigurationImporter to the package helper 2024-05-21 12:09:05 +02:00
Kenneth Skovhede afc34e00be Merge remote-tracking branch 'origin/master' into feature/add-missing-executables 2024-05-21 12:08:14 +02:00
Kenneth Skovhede 84d7a56ab1 Added executables for SharpAESCrypt and Snapshots 2024-05-21 09:54:01 +02:00
Kenneth Skovhede 05e5fbcf80 Fixed issue with recovery-tool help.
Cleaned up some loading of embedded resourse to rely on type instead of assembly name.
Implemented installed executable name instead of using Windows executable names.
2024-05-21 08:26:40 +02:00