Commit Graph
1158 Commits
Author SHA1 Message Date
Kenneth Hsu f2bcf470d2 Add factory method to get default AmazonS3Config instance.
This adds a method to get a default instance of AmazonS3Config.  This
accomplishes two key things:

1. Previously, the documentation for the default buffer size (8192) was
   inconsistent with the actual default value (65536).  This was due to
   differences in the property values betwen the instance used to
   generate the documentation, and that used in the actual backend
   client.

2. Disables the use of Amazon Resource Names (ARN).  This does not seem
   critical to our application.  Moreover, if the UseArnRegion property
   is not set, accessing it triggers an expensive operation (~30
   seconds) to get the region endpoint.  This causes the loading of the
   backend modules to take a long time and run afoul of HTTP request
   timeouts, causing the application to think that no backends are
   available.

   The previous version of the AWSSDK.S3 library that we used did not
   have this property, so this was not an issue until we started
   migrating away from .NET Framework.

This fixes #4543.
2021-06-28 09:52:13 -07:00
Valentin eda3666bc7 Add support for mega.nz two fa authentication 2021-06-26 13:39:05 +02:00
Kenneth Hsu de2a651763 Fix bug in PutAsync implementations.
Without await, the using statement can dispose the Stream before the
call to PutAsync completes, resulting in an ObjectDisposedException.

This fixes #4556.
2021-06-12 15:12:13 -07:00
Serge 5404fed634 Do not use StreamWriter 2021-06-02 19:35:40 +10:00
Serge 955dbebc03 Check contents of written test file
Before performing test write, reset stream Position to 0, otherwise test performs zero-byte write.
When performing test read, verify that file was written correctly.
2021-06-01 02:51:42 +10:00
warwickmmandGitHub ed86cca3e4 Merge pull request #4509 from sergethedev17/feature/azure-storage-sastoken
Add ability to provide SAS token for Azure backend
2021-05-30 10:15:43 -07:00
Kenneth SkovhedeandGitHub 8ee90fdf64 Merge pull request #4506 from warwickmm/mono_ssh_avoid_ecdsa_algorithms
Avoid ECDSA algorithms when using SFTP with Mono
2021-05-29 12:22:52 +02:00
Kenneth SkovhedeandGitHub 368a3a9a9b Merge branch 'master' into feature/azure-storage-sastoken 2021-05-29 12:20:30 +02:00
Kenneth SkovhedeandGitHub 2bcb0f511c Merge pull request #4513 from warwickmm/fix_bug_handlings_deprecated_options
Fix bug in handling deprecated Azure and S3 options
2021-05-29 12:17:44 +02:00
Kenneth Hsu a5fbee0335 Simplify exception handling when testing for ECDSA support.
.NET 5 moves the responsibility to the operating system, and since
SSH.NET currently relies on the ECDsaCng class, we will simply interpret
all exceptions to mean lack of ECDSA support.
2021-05-18 12:19:49 -07:00
Kenneth Hsu c246976fbb Cache knowledge of ECDSA support using static field.
This is simpler, and would potentially allow us to query this without an
instance.
2021-05-18 10:18:14 -07:00
Kenneth Hsu 22564bb2a3 Cache knowledge of ECDSA support. 2021-05-18 10:07:33 -07:00
Kenneth Hsu bfa240c8ec Assume we have ECDSA support if our test throws exception.
It's possible that our test will no longer be valid (e.g., due to
changes in SSH.NET), so we don't want the backend to fail if our test
is no longer valid.
2021-05-18 09:06:00 -07:00
Kenneth Hsu 90dfce81b2 Construct instance of ECDsaCng to test for ECDSA support.
This more closely reflects the SSH.NET code.
2021-05-18 09:00:40 -07:00
Kenneth Hsu 3d8817608e Test for ECDSA support explicitly.
The previous implementation could possibly fail for reasons unrelated to
ECDSA support.
2021-05-16 17:29:00 -07:00
marodev a156c511da Reorder parameters of previously wrongly refactored string interpolation 2021-05-16 09:12:00 +02:00
Kenneth Hsu 29f1d2c3cb Fix bug handling deprecated Azure and S3 options.
In pull request #4443, we renamed some of the Azure and S3 options to
use dashes '-' instead of underscores '_' for consistency.  However, our
treatment of the options in the backend constructors still required that
the underscore versions be present even if the dashed version was
provided.

Now, we allow for either option to be present, but the value for the
dashed version will take precedence.
2021-05-15 14:37:53 -07:00
marodev e87688d9d3 Fix ReSharper's "Use string interpolation expression" / Code Smell 2021-05-15 17:02:57 +02:00
Serge 5b3d85fc25 Add authentication using Shared access signature token
Allow users to authenticate using a Shared access signature (SAS) token. SAS tokens are more secure because they:
 * have a start and expiry date/time
 * can be restricted to specified IP addresses
 * can limit access scope to a single Storage blob container
2021-05-15 21:22:50 +10:00
Serge 5172119864 Bugfix read non-present key from dictionary
The lines with null-coalescing operator (??) throw an exception when the dictionary does not contain the first key (eg azure_account_name). Exception thrown: "The given key was not present in the dictionary".
2021-05-15 21:03:26 +10:00
Kenneth Hsu b80845a176 Enumerate items to list before modifying collection. 2021-05-11 15:40:33 -07:00
Kenneth Hsu 3e2103335b SSH: Avoid advertising support for ECDSA algorithms with Mono.
SSH.NET relies on the System.Security.Cryptography.ECDsaCng class for
ECDSA algorithms, which is not implemented in Mono (as of 6.12.0.144).
This prevents clients from connecting if one of the ECDSA algorithms is
chosen as the host key algorithm.  In the event that this causes a
connection failure, we will prevent the client from advertising support
for ECDSA algorithms and make another connection attempt.

Related forum discussion:

	https://forum.duplicati.com/t/release-2-0-6-1-beta-2021-sftp-failure-synology/12358
2021-05-11 12:42:34 -07:00
Kenneth SkovhedeandGitHub 8ce34c084b Merge pull request #4488 from warwickmm/file_backend_should_truncate
Make File backend truncate existing files when overwriting
2021-05-08 11:40:23 +02:00
TopperDELandGitHub 3ed7d4b163 fix: Typo 2021-05-06 20:14:53 +02:00
TopperDEL fbf559c109 fix: Remove unnecessary strings 2021-05-06 09:06:25 +02:00
TopperDEL 4609743e24 fix: Command line options 2021-05-06 08:57:43 +02:00
TopperDEL 001329bcd8 fix: fetch parameters from options via TryGetValue 2021-05-06 08:56:39 +02:00
TopperDEL 6253dcad40 feat: Rename all parameters and UIs
Existing configurations will not be affected
2021-05-03 10:36:39 +02:00
TopperDEL a3d9d4c6ba feat: Rename C# and Project-files to Storj 2021-05-03 09:50:29 +02:00
TopperDEL 7e07cf5b6a feat: Verify encryption passphrase 2021-04-29 15:02:00 +02:00
TopperDEL d923cfaa6e feat: Further rename 2021-04-29 14:10:46 +02:00
TopperDEL 96c28e8e32 feat: Rename Tardigrade to Storj DCS 2021-04-29 14:09:05 +02:00
TopperDEL 9bb892ef04 feat: Update satellites-list 2021-04-29 14:06:16 +02:00
TopperDEL d9a4b939b1 build: Update to latest uplink.NET 2021-04-29 13:58:11 +02:00
Kenneth Hsu c14ace0d68 Make File backend truncate existing files when overwriting.
The implementations of ISystemIO.FileOpenWrite call File.OpenWrite,
which does not truncate the existing file.  As such, if we overwrite a
larger file with a smaller one, tail remnants of the existing file will
remain.

Since most of the put operations involve unique filenames, this is only
a problem when overwriting existing files (e.g.,
duplicati-verification.json).

This fixes a regression introduced in revision 71c6aca8a7 ("Fixed IO
calls in Filebackend") from pull request #3456.  The previous
implementation called File.Open with FileMode.Create, which truncates
existing files.

This fixes #4486.
2021-04-20 16:16:00 -07:00
Thomas Suckow ecb0249259 dotnet no longer provides a method for a string to hashalgorithm
* Also fix up not diposing of hashers
2021-04-04 11:17:13 -07:00
Thomas Suckow 7b760ce237 Fix accidental revert from when master was merged into the netstandard branch 2021-04-03 20:58:34 -07:00
Kenneth Skovhede b550e61d9b Re-added compatibility analyzers 2021-04-03 21:49:51 +02:00
Kenneth Skovhede 557415c9ad Changed implementation to target netstandard2.0.
Added builds for .Net 4.8
2021-04-03 14:13:32 +02:00
Kenneth Skovhede 8892ff7df3 Cleaned up all .csproj files.
Moved things around to make cleaner build files.
Implementing everything with `netstandard2.1` and then thin wrapper executables using .net5
2021-04-03 13:57:02 +02:00
Thomas Suckow 70727b9f68 Merge remote-tracking branch 'duplicati/master'
# Conflicts:
#	.appveyor.yml
#	Duplicati.sln
#	Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
#	Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
#	Duplicati/CommandLine/Duplicati.CommandLine.csproj
#	Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj
#	Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
#	Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj
#	Duplicati/Library/Backend/SSHv2/packages.config
#	Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj
#	Duplicati/Library/Backend/Telegram/Duplicati.Library.Backend.Telegram.csproj
#	Duplicati/Library/Backend/Telegram/Properties/AssemblyInfo.cs
#	Duplicati/License/Duplicati.License.csproj
#	Duplicati/Server/Duplicati.Server.csproj
#	Duplicati/UnitTest/Duplicati.UnitTest.csproj
#	Duplicati/UnitTest/PurgeTesting.cs
#	Installer/fedora/duplicati-binary.spec
#	Installer/fedora/duplicati.spec
#	guiTests/guiTest.py
#	pipeline/shared/duplicati.sh
#	pipeline/stage_build/trigger.sh
#	pipeline/stage_integrationtests/job.sh
#	pipeline/stage_integrationtests/trigger.sh
#	pipeline/stage_unittests/trigger.sh
2021-04-01 20:30:19 -07:00
Kenneth Skovhede 63d8ab7c11 Changed all non-entry methods to use netstandard2.1 2021-04-01 22:37:26 +02:00
Kenneth Skovhede 4f565a004f Merge branch 'netstandard' of https://github.com/mnaiman/duplicati into netstandard
# Conflicts:
#	Duplicati.sln
#	Duplicati/CommandLine/BackendTester/Duplicati.CommandLine.BackendTester.csproj
#	Duplicati/CommandLine/BackendTool/Duplicati.CommandLine.BackendTool.csproj
#	Duplicati/CommandLine/Duplicati.CommandLine.csproj
#	Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj
#	Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj
#	Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj
#	Duplicati/Library/Backend/SSHv2/packages.config
#	Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj
#	Duplicati/Library/Backend/Telegram/Duplicati.Library.Backend.Telegram.csproj
#	Duplicati/Library/Backend/Telegram/Properties/AssemblyInfo.cs
#	Duplicati/License/Duplicati.License.csproj
#	Duplicati/Server/Duplicati.Server.csproj
#	Duplicati/UnitTest/Duplicati.UnitTest.csproj
2021-04-01 15:08:42 +02:00
Tyler Gill b64c2f1df0 Move Retry-After logic to RetryAfterHelper to make it easier for other backends to incorporate it. 2021-03-23 17:28:39 -06:00
Tyler Gill dadd30380c Add some logging to Microsoft Graph backends. 2021-03-23 17:08:58 -06:00
Tyler Gill 1ec1e18634 OAuthHttpClient should behave the same as the WebRequest code path and treat no http-operation-timeout override as meaning to use an infinite timeout. 2021-03-22 10:47:25 -06:00
Tyler Gill 06c28387d5 Address some more feedback 2021-03-20 16:09:23 -06:00
Tyler Gill 9a4632d551 Remove SubStream and add functionality to ReadLimitLengthStream. Switch to using that.
Also add some hardening around the Position and make sure the stream starts at relative Position 0.
2021-03-17 20:37:46 -06:00
Tyler Gill b0793d3e49 Refactor the Retry-After logic. Now it tracks Retry-After headers on all requests, and blocks any future requests until the time from the prior request has passed. 2021-03-16 11:40:38 -06:00
Tyler Gill 7894152489 A few more improvements to the MicrosoftGraphBackends.
First, when performing an upload using an upload session, data is streamed directly from the input stream to the request stream. (It is no longer read into an intermediate buffer first.)
Hopefully this will help these uploads respond to throttling behavior better.
Second, these backends now check for and respect a Retry-After header if it is present.
On 5xx errors, the existing exponential backoff is used for the intermediate retries.
A few other minor things have also been cleaned up (e.g., using Task.Delay instead of Thread.Sleep)
2021-03-15 18:04:39 -06:00