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`
The new API avoids using HTTP status codes and verbs.
Added new structure for having a similar response envelope and pagination support for V2 calls.
Added extensions to the systemInfo call so the client knows if the V2 methods are available.
This moves the throttle support to the StreamUtil throttled stream, which allows multiple streams to share a throttle value, such that the throttle setting is applied to the entire communication from Duplicati, and not for each connection.
This also cleans up a bit in the progress reporting, where the backend manager now keeps track of the "active" transfer and only emits progress on that. Once it finishes, a new transfer is promoted a "active".
On some locales, odd strings would parse as valid full dates, causing relative dates to be incorrectly calculated.
This commit fixes the issues and revisits the DST aware calculations with more tests.
This adds support for providing a custom defined token instead of using the JWT tokens.
The intended use is for deployments where the authentication is provide by a different layer (a proxy service).
In some cases the stored database state would be misinterpreted causing abnormal wait periods that crashes the program on startup.
This change converts all time compares to UTC asn the database value was already UTC.
It also adds a clamping function to prevent crashes on extreme values (using 24h pause instead of crash).
* 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
* 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
* 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
* Simplified task control by having all logic in a single class and using async control mechanism
* Fixed the tests
* Made the marking of a backup partial explicitly communicated if the enumeration process is stopped.
* Added support for pausing active transfers
* Introduced transfer token to abort operations.
* Updated the way LiveControl is emitting events.
* Retains the paused state of the server across reboots, this fixes#5760.
* Reworked the way throttle speeds are propagated through LiveControls.
* Added option to pause transfers in the UI.
* Removed throttle settings from the LiveControls class so it is exclusively handled by the ApplicationSettings.
* Removed `thread-priority` as it does not work at all when tasks are used.
* Fixed the stop dialog and API to only support stop and abort.
* Removed unused variables