Add a new V2 API endpoint POST `/system/temp-disk-space` that reports
free and total disk space for the configured temporary folder. The
endpoint accepts an optional backup ID to resolve backup-specific
tempdir overrides, and returns the resolved temp path, free/total
space, `dblock-size`, and `restore-cache-max values`.
This PR now checks for the SSL certificate and the UI will offer to pin the certificate if this is not a trusted certificate.
Also, the sourceproviders and restoredestinationproviders now actually invoke the `Test` method when being tested.
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.
This updates the masked password feature to be better at detecting variations of the password mask, such as removing one or more asterisks from the string.
This also updates the "Test destination" endpoints to support a backupId so the call can unmask the target urls.
Now the file listing is always fetched from remote for temporary databases, to avoid cases where the local database exists.
This can happen if you refresh the page while on the restore selection page.
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
This PR moves the check from the FTP backend into shared code, so all backends will now check for read/write permissions when using the "Test" button.
For situations where write permissions are not required (like restore or verify) there is a flag on the v2 API that indicates if the connection was established, so the UI can show a message suggesting that it is possible to proceed, if the current UI operation does not require write permissions.
This fixes#2473
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.