* Primary functionality implemented for CIFS
This will add CIFS support to Duplicati.
One of the advantages is that the resource does not need to be mounted as the backend connects and authenticates directly to the resource via TCP/or Netbios over TCP.
The authentication supported is domain/username/password. At present integrated Windows authentication is not supported.
This implementation relies on SMBLibrary library (https://github.com/TalAloni/SMBLibrary).
* Fixes to XML documentation
* Implementing single CIFS connection + Fix on PutAsync
Single CIFS connection to avoid re-authentication on every operation.
Fix to PutAsync which only because apparent after file sizes were larger than _smb2Client.MaxWriteSize
* Adding CI tests for CIFS
The CI test for CIFS is self contained, requiring no environment variables. Also updated README.
The QuotaCheck is done in two places, and only one place was checking if the quota check was supposed to be disabled.
This adds the check in the other place.
This introduces a few constants in favor of multiple strings with the same value.
The supported arguments in the module have been augmented to better report possible values and default values.
The options parser has been updated to work better with CLI where the options are not default filled.
* Workaround for multi-backend.
There is currently an issue with creating the BackendManager which has a backend instance. This instance is not used by the uploader, so they will create new instances.
The BackendManager instance can then time out, but is used later.
This commit will allow the uploader to "borrow" the instance from the backend manager, so only a single instance is needed.
This is not a clean fix, but doing so requires a full rewrite of the backend manager and uploader, so the controller creates a single instance of the manager, which is then used for all operations.
This would allow the backend manager to keep track of instances across all requests.
* Improved reuse after shutdown
* Added missing timeouts to uploads.
Since much of the BackendManager is replicated into the BackendUploader, this code needs to be updated as well.
* Fixed namespace issue
* Added options to insert delays in backend tester
* Added wait delays to Azure and GoogleDrive to see it the CI is more stable with small delays
* Added more debug output to the backend tester
* Fixed dropbox reporting OAuth quota errors, when it is likely Dropbox API quota errors
* Implemented exception detection on AzureBlob backend
* Also showing sleep times in output
* Fixed a bug with the dropbox quota response
* Fixed error message to report correct number of files
* Fixed suppressed warning
* Improved Windows Eventlog support.
Added support for logging to a different log with a Log:Source format.
Backwards compatible by treating "Source" as "Application:Source", where "Source" is default "Duplicati".
* Changed default log-level for eventlog to `Warning`.
This fixes#5770
* Fixed issue where checking for event log would crash the process.
Changed default log to `Duplicati` (was `Application`).
New default source names for service, agent and server.
* Reverted windows log-level back to information, now that there is a separate log for it
* Using "Duplicati 2" as the log name because "Duplicati" may be registered as a source name.
* Attempt to stop service before uninstalling
* Added additional diagnostics messages
* Fixed bug with starting the agent as a service
* Default to not use WindowsService for Agent as it requires permissions to create the event log
* Reduced log message levels for ongoing communication in agent
* Prevent double-logging from agent into Windows EventLog
* Made the agent log under a separate log source name
* Change displayname of OneDrive v2
Since OneDrive v1 is removed, there is no need to name the current backend `v2`.
* Renamed everything but the protocol key
* Fixed issues with timeout in msgraph
Fixed a place where the cancellation token was not applied.
Fixed a problem with msgraph not sending correct DNS information.
Fixed a problem with msgraph downloading the entire file before streaming it, bypassing throttle and tripping the timeout.
Added `ITimeoutExemptBackend` to selectively disable timeouts for backends that do not support it.
Updated the backendmanager to support `ITimeoutExemptBackend`.
Updated the backendmanager to abort as soon as a timeout happens.
* Updated BackendTester to use the `TimeoutObservingStream` and support the `--read-write-timeout` setting.
Updated backend tester code to use `var`
* Fixed a bug reading the `read-write-timeout`
* Updated to using constants with names instead of `-1`.