Commit Graph
368 Commits
Author SHA1 Message Date
Kenneth Skovhede 98deb8c576 Update support for VSS
This updates VSS to default use Vanara in favor of AlphaVSS which is no longer maintained.

The build for Vanara requires targeting `net8.0-windows7.0`, which will cause significant build overhead and complexity for cross platform builds.
To counter this, the setup is to have a single project, `Duplicati.Library.WindowsModules`, that is targeting `net8.0-windows7.0`.
The output from this project is then hoisted into the TrayIcon project for Windows builds so the files are available when debugging on Windows.
A top-level dummy executable project is added to ensure the project always builds.
The built modules are then loaded with reflection when requested.

With the use of Vanara there is now also support for using BackupRead to read files without making a VSS snapshot.
With BackupRead, it is possible to read locked files, but it still requires the SeBackupPrivilege as VSS does as well.

Unfortunately, the `vssapi.dll` file is not shipped for Arm64 on Windows, so even with Vanara this will not work, and only WMIC is supported on Arm64.
A workaround is to run Duplicati with x64 emulation if more advanced VSS features are needed (HyperV and MSSQL support).

This PR also updates options and filters out unsupported options for each operating system, so options that are not supported by the current OS are not reported and will give warnings if they are used, as opposed to just being ignored.

The release builder project has been updated to exclude the unused project, and purge unwanted outputs.
2025-07-01 16:32:19 +02:00
Kenneth SkovhedeandGitHub 15eb009594 Merge pull request #6343 from duplicati/feature/fix-module-loading
Handle loading and unloading of modules
2025-06-13 10:47:26 +02:00
Kenneth SkovhedeandGitHub 423338cfec Merge pull request #6341 from marceloduplicati/feature/http-client-timeout-revision
Sets infinite timeout for HTTP clients
2025-06-13 07:36:45 +02:00
Kenneth SkovhedeandGitHub 225fd1f3c9 Merge pull request #6344 from duplicati/feature/better-handling-of-wrong-email
Add null checks to send-mail
2025-06-13 07:36:31 +02:00
Kenneth SkovhedeandGitHub d432006207 Merge branch 'master' into feature/http-client-timeout-revision 2025-06-12 22:27:12 +02:00
Kenneth SkovhedeandGitHub 131f8a25d6 Merge pull request #6328 from duplicati/feature/improve-alternate-oauth-url-support
Update handling of alternate OAuth url
2025-06-12 22:21:56 +02:00
Kenneth Skovhede 151afe5d82 Add null checks to send-mail
This PR adds null checks to the email module to prevent crashes when sending email.

It also guards against improper reuse of the modules. This is related to #6343.

This fixes #6315
2025-06-12 22:17:02 +02:00
Kenneth Skovhede f6094baddb Handle loading and unloading of modules
This PR fixes the issues with not correctly loading and disposing modules.

Prior to this PR, there would be only a single instance of each module loaded, which would be configured and later disposed, meaning that the same instance would be used after being disposed, and disposed multiple times.

This mostly worked, but it could carry configuration details over between unrelated runs.

This fixes #6314
2025-06-12 22:13:55 +02:00
Marcelo C. 477f70508e Applying suggested changes 2025-06-12 11:29:44 -03: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
Kenneth Skovhede 3812f1df0a Updated Windows example script
This fixes #6322
2025-06-12 11:44:50 +02:00
Kenneth Skovhede 35058d333e Update handling of alternate OAuth url
This PR removes the `OAuthContextSettings` class, and makes the `--oauth-url` option available on each backend that uses it, so it can be configured as part of the destination.

To assemble everything related to configuring OAuth, the code was moved to the `AuthIdOptionsHelper`, such that the usage can be shared between implementations.

This PR also adds the option to set the default OAuth url from the environment variable `DUPLICATI_OAUTH_SERVICE`.

The server can then be set in the following locations (most important last):
- Environment variable
- Server-wide advanced settings
- Backup job advanced settings (or commandline)
- Destination url
2025-06-11 09:27:40 +02:00
Kenneth Skovhede 481744a8a1 Bumped MailKit and DnsClient to latest versions 2025-06-10 10:17:07 +02:00
Kenneth Skovhede 6044d19662 Filter report messages to limit double-reporting issues 2025-05-30 08:16:20 +02:00
Kenneth Skovhede d00264639f Removed HttpOptions
This fixes #5582
2025-05-26 14:13:16 +02:00
Kenneth Skovhede d3b65f1e92 Remove OAuthHelper
This PR removes OAuthHelper.

Initial commit is removal of OAuthHelper in GoogleCommon, GoogleDrive and GCS.
2025-05-23 10:40:55 +02:00
Carl Johnsen 388e849324 Converted tabs to spaces 2025-05-16 10:25:08 +02: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
Marcelo C. 728080a911 Fix Notification Parsing Failure by Defaulting to Text-Only Mode
Resolved markdown parsing issues in notifications (see [Issue #5909](https://github.com/duplicati/duplicati/issues/5909)) by switching to text-only mode for reliable delivery.

Tested.
2025-04-01 10:11:48 -03:00
Kenneth SkovhedeandGitHub 4f81771681 Merge pull request #6085 from duplicati/feature/report-current-update-channel-in-reports
Added metadata to reports to report current update channel
2025-03-25 16:36:50 +01:00
Kenneth SkovhedeandGitHub 99ad60571e Merge pull request #6083 from duplicati/feature/handle-backspace-for-password-input
Handle backspace for passphrase input
2025-03-25 12:36:23 +01:00
Kenneth Skovhede b754caccc3 Added metadata to reports to report current update channel 2025-03-25 12:34:54 +01:00
Kenneth SkovhedeandGitHub 38c492c33b Merge branch 'master' into feature/handle-backspace-for-password-input 2025-03-25 08:54:28 +01:00
Kenneth SkovhedeandGitHub 631dc172c8 Merge branch 'master' into feature/support-large-form-body-reports 2025-03-25 08:53:25 +01:00
Kenneth Skovhede 9530e8ab36 Handle backspace for passphrase input
This fixes #976
2025-03-24 23:23:51 +01:00
Kenneth Skovhede aabfbb8df6 Added support for large http reports
When sending large http reports with URL encoding, they are now encoded in chunks to avoid the encoding limitations in .NET.

This fixes #2843
2025-03-24 22:28:44 +01:00
Kenneth Skovhede 6d2137d9e4 Removed JSON example as it trips up the localization on Linux 2025-03-24 17:23:25 +01:00
Kenneth Skovhede 4036d18566 Fixed non-translateable strings 2025-03-24 17:18:41 +01:00
Kenneth Skovhede bf3ff44e32 Collapsed into single option 2025-03-24 14:43:00 +01:00
Kenneth Skovhede 646b1f9b97 Add extra parameters to reports.
This adds the option to set additional parameters to any report sent.

This fixes #3448
2025-03-24 14:35:16 +01:00
Kenneth Skovhede ddf90196cd Update serialized results to omit task control
The `TaskControl` and `TaskReader` properties contain no information that can be used in serialized form, but they were added to the output anyway.

With this commit, the unwanted extra data is no longer emitted.
2025-03-20 16:06:11 +01:00
Kenneth Skovhede e37f20aedd Added retries for HTTP messages
This adds a retry count and a retry delay for posting backup reports via HTTP requests. This will make the report delivery more reliable if the network is unstable or server is briefly unreachable.
2025-03-16 16:52:30 +01:00
Kenneth SkovhedeandGitHub e614b08bb3 Merge pull request #5955 from duplicati/feature/alternate-source-provider
Alternate source provider
2025-02-28 10:07:53 +01:00
Kenneth Skovhede 11a27042bc Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-26 19:25:46 +01:00
Kenneth Skovhede 0b61e0d0bc Yet another way to find out if the RID is for Windows 2025-02-25 15:14:37 +01:00
Kenneth Skovhede 3bfd12bf76 Fixed rid detection 2025-02-24 13:32:26 +01:00
Kenneth Skovhede 39ba3ab89e More exact rid match 2025-02-24 13:25:47 +01:00
Kenneth Skovhede ea07ac4288 Updated build logic to use target os 2025-02-24 13:24:58 +01:00
Kenneth Skovhede a9f328ae95 Add back missing Windows example script.
This adds back the missing `run-script-example.bat`.

It also makes the output conditional, so the Windows builds get the `.bat` and others get the `.sh` version.
2025-02-19 16:11:37 +01:00
Kenneth Skovhede cf5b4bb24d Added support for Wmic based Windows VSS snapshots.
Refactored code a bit to be easier to understand.
2025-02-19 14:00:14 +01:00
Kenneth Skovhede 6bbc93b8df Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-16 16:37:12 +01:00
Kenneth Skovhede 439d10b53d Improve shell-script arguments 2025-02-12 09:23:07 +01:00
Kenneth SkovhedeandGitHub 5b66d06370 Merge pull request #5961 from duplicati/feature/do-not-escape-http-form-parameters
Do not encode http form extra parameters.
2025-02-11 09:26:07 +01:00
Kenneth Skovhede 3caaa78336 Merge remote-tracking branch 'origin/master' into feature/alternate-source-provider 2025-02-09 16:15:06 +01:00
Kenneth Skovhede 8c935a7344 This creates a new ISourceProvider interface for describing a data source.
With this interface it is possible to wrap the current support for snapshots and USN and simplify the enumeration.

This makes a number of assumptions into fields such as `IsMetaEntry` and `IsRootEntry` that removes code that was checking for various properties.

This first commit has support for VSS and USN as well as "naked" files, keeping feature parity.

There is also an experimental support for loading a backend-as-a-source. The support for this is currently limited as the backends need to be extended to support a folder concept.
2025-02-09 16:14:22 +01:00
Marcelo C. a203de90e1 Added support for Topic ID on Telegram
This adds support for TopicID as specified in parameter "send-telegram-topid-id" which allows the messages to be organized in topics on a group.

Finding out your topic ID in a group can be rather tricky the easiest way is to use curl to create it.

```bash
export CHAT_ID="-99999999"
export TOPIC_NAME="Your Topic"
export BOT_TOKEN="7777777777:AAAAAAAAA-4WwwwwwwwwwwwwwwwwwwwwwwQ"

curl -X POST \
    -H "Content-Type: application/json" \
    -d "{\"chat_id\":\"$CHAT_ID\",\"name\":\"$TOPIC_NAME\"}" \
    https://api.telegram.org/bot$BOT_TOKEN/createForumTopic
```
Which will response with a json where message_thread_id is the Topic ID
```bash
{"ok":true,"result":{"message_thread_id":33,"name":.....
```
2025-02-03 11:05:27 -03:00
Kenneth Skovhede 23e7233691 Do not encode http form extra parameters.
This changes the encoding that broke because the encoding function was changed.

The new logic is to not encode the parameters, but just use them as provided.

Any escaping needs to then be applied to the input by the user/caller.

This fixes #5900
2025-01-30 21:39:41 +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 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