diff options
author | TopperDEL <github_com@tparth.de> | 2021-05-03 10:50:29 +0300 |
---|---|---|
committer | TopperDEL <github_com@tparth.de> | 2021-05-03 10:50:29 +0300 |
commit | a3d9d4c6ba7fa47fbb64491a93632ae5a262291a (patch) | |
tree | d2f869582e2ec7ce3dce33995a93c27c97948690 /Duplicati/Library/Backend/Tardigrade | |
parent | b88a9fb6dcdacf3530a81503b411d47c841e9609 (diff) |
feat: Rename C# and Project-files to Storj
Diffstat (limited to 'Duplicati/Library/Backend/Tardigrade')
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj | 128 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/Properties/AssemblyInfo.cs | 36 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/Strings.cs | 33 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/TardigradeBackend.cs | 359 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/TardigradeConfig.cs | 68 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/TardigradeFile.cs | 56 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/libstorj_uplink.dylib | bin | 14341776 -> 0 bytes | |||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/libstorj_uplink.so | bin | 15439776 -> 0 bytes | |||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/packages.config | 13 | ||||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/win-x64/storj_uplink.dll | bin | 9595904 -> 0 bytes | |||
-rw-r--r-- | Duplicati/Library/Backend/Tardigrade/win-x86/storj_uplink.dll | bin | 8198656 -> 0 bytes |
11 files changed, 0 insertions, 693 deletions
diff --git a/Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj b/Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj deleted file mode 100644 index e3227fde0..000000000 --- a/Duplicati/Library/Backend/Tardigrade/Duplicati.Library.Backend.Tardigrade.csproj +++ /dev/null @@ -1,128 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{AE035E01-C917-4F13-A35E-78F21C1A2F17}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Duplicati.Library.Backend.Tardigrade</RootNamespace> - <AssemblyName>Duplicati.Library.Backend.Tardigrade</AssemblyName> - <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <Deterministic>true</Deterministic> - <NuGetPackageImportStamp> - </NuGetPackageImportStamp> - <TargetFrameworkProfile /> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - <PlatformTarget>x64</PlatformTarget> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="SQLite-net, Version=1.7.335.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\sqlite-net-pcl.1.7.335\lib\netstandard2.0\SQLite-net.dll</HintPath> - </Reference> - <Reference Include="SQLitePCLRaw.batteries_v2, Version=2.0.3.851, Culture=neutral, PublicKeyToken=8226ea5df37bcae9, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\SQLitePCLRaw.bundle_green.2.0.3\lib\net461\SQLitePCLRaw.batteries_v2.dll</HintPath> - </Reference> - <Reference Include="SQLitePCLRaw.core, Version=2.0.3.851, Culture=neutral, PublicKeyToken=1488e028ca7ab535, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\SQLitePCLRaw.core.2.0.3\lib\netstandard2.0\SQLitePCLRaw.core.dll</HintPath> - </Reference> - <Reference Include="SQLitePCLRaw.nativelibrary, Version=2.0.3.851, Culture=neutral, PublicKeyToken=502ed628492ab262, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\SQLitePCLRaw.bundle_green.2.0.3\lib\net461\SQLitePCLRaw.nativelibrary.dll</HintPath> - </Reference> - <Reference Include="SQLitePCLRaw.provider.dynamic_cdecl, Version=2.0.3.851, Culture=neutral, PublicKeyToken=b68184102cba0b3b, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\SQLitePCLRaw.provider.dynamic_cdecl.2.0.3\lib\netstandard2.0\SQLitePCLRaw.provider.dynamic_cdecl.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\System.Buffers.4.4.0\lib\netstandard2.0\System.Buffers.dll</HintPath> - </Reference> - <Reference Include="System.Core" /> - <Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath> - </Reference> - <Reference Include="System.Numerics" /> - <Reference Include="System.Numerics.Vectors, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\System.Numerics.Vectors.4.4.0\lib\net46\System.Numerics.Vectors.dll</HintPath> - </Reference> - <Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath> - </Reference> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xml" /> - <Reference Include="uplink.NET, Version=2.6.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\..\..\packages\uplink.NET.2.6.1451\lib\netstandard2.0\uplink.NET.dll</HintPath> - </Reference> - </ItemGroup> - <ItemGroup> - <Compile Include="TardigradeFile.cs" /> - <Compile Include="Strings.cs" /> - <Compile Include="TardigradeBackend.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - <Compile Include="TardigradeConfig.cs" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Common\Duplicati.Library.Common.csproj"> - <Project>{d63e53e4-a458-4c2f-914d-92f715f58acf}</Project> - <Name>Duplicati.Library.Common</Name> - </ProjectReference> - <ProjectReference Include="..\..\Interface\Duplicati.Library.Interface.csproj"> - <Project>{c5899f45-b0ff-483c-9d38-24a9fcaab237}</Project> - <Name>Duplicati.Library.Interface</Name> - </ProjectReference> - <ProjectReference Include="..\..\Localization\Duplicati.Library.Localization.csproj"> - <Project>{b68f2214-951f-4f78-8488-66e1ed3f50bf}</Project> - <Name>Duplicati.Library.Localization</Name> - </ProjectReference> - <ProjectReference Include="..\..\Utility\Duplicati.Library.Utility.csproj"> - <Project>{de3e5d4c-51ab-4e5e-bee8-e636cebfba65}</Project> - <Name>Duplicati.Library.Utility</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <None Include="libstorj_uplink.dylib"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="libstorj_uplink.so"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> - <Content Include="win-x64\storj_uplink.dll"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="win-x86\storj_uplink.dll"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> - <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> - <PropertyGroup> - <ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText> - </PropertyGroup> - <Error Condition="!Exists('..\..\..\..\packages\SQLitePCLRaw.lib.e_sqlite3.2.0.3\build\net461\SQLitePCLRaw.lib.e_sqlite3.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\SQLitePCLRaw.lib.e_sqlite3.2.0.3\build\net461\SQLitePCLRaw.lib.e_sqlite3.targets'))" /> - </Target> - <Import Project="..\..\..\..\packages\SQLitePCLRaw.lib.e_sqlite3.2.0.3\build\net461\SQLitePCLRaw.lib.e_sqlite3.targets" Condition="Exists('..\..\..\..\packages\SQLitePCLRaw.lib.e_sqlite3.2.0.3\build\net461\SQLitePCLRaw.lib.e_sqlite3.targets')" /> -</Project>
\ No newline at end of file diff --git a/Duplicati/Library/Backend/Tardigrade/Properties/AssemblyInfo.cs b/Duplicati/Library/Backend/Tardigrade/Properties/AssemblyInfo.cs deleted file mode 100644 index 5f3cc907e..000000000 --- a/Duplicati/Library/Backend/Tardigrade/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// Allgemeine Informationen über eine Assembly werden über die folgenden -// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, -// die einer Assembly zugeordnet sind. -[assembly: AssemblyTitle("Duplicati.Library.Backend.Tardigrade")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Duplicati.Library.Backend.Tardigrade")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly -// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von -// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. -[assembly: ComVisible(false)] - -// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird -[assembly: Guid("ae035e01-c917-4f13-a35e-78f21c1a2f17")] - -// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: -// -// Hauptversion -// Nebenversion -// Buildnummer -// Revision -// -// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, -// indem Sie "*" wie unten gezeigt eingeben: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Duplicati/Library/Backend/Tardigrade/Strings.cs b/Duplicati/Library/Backend/Tardigrade/Strings.cs deleted file mode 100644 index 2484797dc..000000000 --- a/Duplicati/Library/Backend/Tardigrade/Strings.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Duplicati.Library.Localization.Short; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Duplicati.Library.Backend.Strings -{ - internal static class Tardigrade - { - public static string DisplayName { get { return LC.L(@"Storj DCS (Decentralized Cloud Storage)"); } } - public static string Description { get { return LC.L(@"This backend can read and write data to the Storj DCS."); } } - public static string TestConnectionFailed { get { return LC.L(@"The connection-test failed."); } } - public static string TardigradeAuthMethodDescriptionShort { get { return LC.L(@"The authentication method"); } } - public static string TardigradeAuthMethodDescriptionLong { get { return LC.L(@"The authentication method describes which way to use to connect to the network - either via API key or via an access grant."); } } - public static string TardigradeSatelliteDescriptionShort { get { return LC.L(@"The satellite"); } } - public static string TardigradeSatelliteDescriptionLong { get { return LC.L(@"The satellite that keeps track of all metadata. Use a Storj DCS server for high-performance SLA-backed connectivity or use a community server. Or even host your own."); } } - public static string TardigradeAPIKeyDescriptionShort { get { return LC.L(@"The API key"); } } - public static string TardigradeAPIKeyDescriptionLong { get { return LC.L(@"The API key grants access to a specific project on your chosen satellite. Head over to the dashboard of your satellite to create one if you do not already have an API key."); } } - public static string TardigradeSecretDescriptionShort { get { return LC.L(@"The encryption passphrase"); } } - public static string TardigradeSecretDescriptionLong { get { return LC.L(@"The encryption passphrase is used to encrypt your data before sending it to the Storj network. This passphrase can be the only secret to provide - for Storj you do not necessary need any additional encryption (from Duplicati) in place."); } } - public static string TardigradeSecretVerifyDescriptionShort { get { return LC.L(@"The encryption passphrase (for verification)"); } } - public static string TardigradeSecretVerifyDescriptionLong { get { return LC.L(@"The encryption passphrase verification to make sure you provided the expected value."); } } - public static string TardigradeSharedAccessDescriptionShort { get { return LC.L(@"The access grant"); } } - public static string TardigradeSharedAccessDescriptionLong { get { return LC.L(@"An access grant contains all information in one encrypted string. You may use it instead of a satellite, API key and secret."); } } - public static string TardigradeBucketDescriptionShort { get { return LC.L(@"The bucket"); } } - public static string TardigradeBucketDescriptionLong { get { return LC.L(@"The bucket where the backup will reside in."); } } - public static string TardigradeFolderDescriptionShort { get { return LC.L(@"The folder"); } } - public static string TardigradeFolderDescriptionLong { get { return LC.L(@"The folder within the bucket where the backup will reside in."); } } - public static string TardigradeEncryptionPassphrasesDoNotMatchError { get { return LC.L(@"The encryption passphrases do not match"); } } - } -} diff --git a/Duplicati/Library/Backend/Tardigrade/TardigradeBackend.cs b/Duplicati/Library/Backend/Tardigrade/TardigradeBackend.cs deleted file mode 100644 index ecd3e67cf..000000000 --- a/Duplicati/Library/Backend/Tardigrade/TardigradeBackend.cs +++ /dev/null @@ -1,359 +0,0 @@ -using Duplicati.Library.Interface; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Linq.Expressions; -using System.Runtime.InteropServices; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using uplink.NET.Interfaces; -using uplink.NET.Models; -using uplink.NET.Services; - -namespace Duplicati.Library.Backend.Tardigrade -{ - public class Tardigrade : IStreamingBackend - { - private const string TARDIGRADE_AUTH_METHOD = "tardigrade-auth-method"; - private const string TARDIGRADE_SATELLITE = "tardigrade-satellite"; - private const string TARDIGRADE_API_KEY = "tardigrade-api-key"; - private const string TARDIGRADE_SECRET = "tardigrade-secret"; - private const string TARDIGRADE_SHARED_ACCESS = "tardigrade-shared-access"; - private const string TARDIGRADE_BUCKET = "tardigrade-bucket"; - private const string TARDIGRADE_FOLDER = "tardigrade-folder"; - private const string PROTOCOL_KEY = "tardigrade"; - private const string TARDIGRADE_PARTNER_ID = "duplicati"; - - private readonly string _satellite; - private readonly string _api_key; - private readonly string _secret; - private readonly string _bucket; - private readonly string _folder; - private Access _access; - private IBucketService _bucketService; - private IObjectService _objectService; - - public static readonly Dictionary<string, string> KNOWN_TARDIGRADE_SATELLITES = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase){ - { "US Central", "us1.storj.io:7777" }, - { "Asia East", "ap1.storj.io:7777" }, - { "Europe", "eu1.storj.io:7777" }, - }; - - public static readonly Dictionary<string, string> KNOWN_AUTHENTICATION_METHODS = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase){ - { "API key", "API key" }, - { "Access grant", "Access grant" }, - }; - - [DllImport("kernel32.dll")] - protected static extern IntPtr LoadLibrary(string filename); - - private static bool _libraryLoaded = false; - private static void InitStorjLibrary() - { - if (_libraryLoaded) - return; - - if (Duplicati.Library.Common.Platform.IsClientWindows) //We need to init only on Windows to distinguish between x64 and x86 - { - if (System.Environment.Is64BitProcess) - { - var res = LoadLibrary("win-x64/storj_uplink.dll"); - } - else - { - var res = LoadLibrary("win-x86/storj_uplink.dll"); - } - } - Access.SetTempDirectory(Library.Utility.TempFolder.SystemTempPath); - _libraryLoaded = true; - } - - // ReSharper disable once UnusedMember.Global - // This constructor is needed by the BackendLoader. - public Tardigrade() - { - } - - // ReSharper disable once UnusedMember.Global - // This constructor is needed by the BackendLoader. - public Tardigrade(string url, Dictionary<string, string> options) - { - InitStorjLibrary(); - - var auth_method = options[TARDIGRADE_AUTH_METHOD]; - if (auth_method == "Access grant") - { - //Create an access from the access grant - var shared_access = options[TARDIGRADE_SHARED_ACCESS]; - _access = new Access(shared_access, new Config() { UserAgent = TARDIGRADE_PARTNER_ID }); - } - else - { - //Create an access for a satellite, API key and encryption passphrase - _satellite = options[TARDIGRADE_SATELLITE]; - - if (options.ContainsKey(TARDIGRADE_API_KEY)) - { - _api_key = options[TARDIGRADE_API_KEY]; - } - if (options.ContainsKey(TARDIGRADE_SECRET)) - { - _secret = options[TARDIGRADE_SECRET]; - } - - _access = new Access(_satellite, _api_key, _secret, new Config() { UserAgent = TARDIGRADE_PARTNER_ID }); - } - - _bucketService = new BucketService(_access); - _objectService = new ObjectService(_access); - - //If no bucket was provided use the default "duplicati"-bucket - if (options.ContainsKey(TARDIGRADE_BUCKET)) - { - _bucket = options[TARDIGRADE_BUCKET]; - } - else - { - _bucket = "duplicati"; - } - - if (options.ContainsKey(TARDIGRADE_FOLDER)) - { - _folder = options[TARDIGRADE_FOLDER]; - } - } - - public string DisplayName - { - get { return Strings.Tardigrade.DisplayName; } - } - - public string ProtocolKey => PROTOCOL_KEY; - - public IList<ICommandLineArgument> SupportedCommands - { - get - { - return new List<ICommandLineArgument>(new ICommandLineArgument[] { - new CommandLineArgument(TARDIGRADE_AUTH_METHOD, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeAuthMethodDescriptionShort, Strings.Tardigrade.TardigradeAuthMethodDescriptionLong, "API key"), - new CommandLineArgument(TARDIGRADE_SATELLITE, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeSatelliteDescriptionShort, Strings.Tardigrade.TardigradeSatelliteDescriptionLong, "us1.storj.io:7777"), - new CommandLineArgument(TARDIGRADE_API_KEY, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeAPIKeyDescriptionShort, Strings.Tardigrade.TardigradeAPIKeyDescriptionLong), - new CommandLineArgument(TARDIGRADE_SECRET, CommandLineArgument.ArgumentType.Password, Strings.Tardigrade.TardigradeSecretDescriptionShort, Strings.Tardigrade.TardigradeSecretDescriptionLong), - new CommandLineArgument(TARDIGRADE_SHARED_ACCESS, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeSharedAccessDescriptionShort, Strings.Tardigrade.TardigradeSharedAccessDescriptionLong), - new CommandLineArgument(TARDIGRADE_BUCKET, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeBucketDescriptionShort, Strings.Tardigrade.TardigradeBucketDescriptionLong), - new CommandLineArgument(TARDIGRADE_FOLDER, CommandLineArgument.ArgumentType.String, Strings.Tardigrade.TardigradeFolderDescriptionShort, Strings.Tardigrade.TardigradeFolderDescriptionLong), - }); - } - } - - public string Description - { - get - { - return Strings.Tardigrade.Description; - } - } - - public string[] DNSName - { - get - { - return new string[0]; - } - } - - public void CreateFolder() - { - //Tardigrade has no folders - } - - public void Delete(string remotename) - { - var deleteTask = DeleteAsync(remotename); - deleteTask.Wait(); - } - - public async Task DeleteAsync(string remotename) - { - try - { - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - await _objectService.DeleteObjectAsync(bucket, GetBasePath() + remotename); - } - catch (Exception root) - { - throw new FileMissingException(root); - } - } - - public void Dispose() - { - if (_objectService != null) - { - _objectService = null; - } - if (_bucketService != null) - { - _bucketService = null; - } - if (_access != null) - { - _access.Dispose(); - _access = null; - } - } - - public void Get(string remotename, string filename) - { - var getTask = GetAsync(remotename, filename); - getTask.Wait(); - } - - public async Task GetAsync(string remotename, string filename) - { - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - var download = await _objectService.DownloadObjectAsync(bucket, GetBasePath() + remotename, new DownloadOptions(), false); - await download.StartDownloadAsync(); - - if (download.Completed) - { - using (FileStream file = new FileStream(filename, FileMode.Create)) - { - await file.WriteAsync(download.DownloadedBytes, 0, (int)download.BytesReceived); - await file.FlushAsync().ConfigureAwait(false); - } - } - } - - public void Get(string remotename, Stream stream) - { - var getTask = GetAsync(remotename, stream); - getTask.Wait(); - } - - public async Task GetAsync(string remotename, Stream stream) - { - int index = 0; - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - var download = await _objectService.DownloadObjectAsync(bucket, GetBasePath() + remotename, new DownloadOptions(), false); - download.DownloadOperationProgressChanged += (op) => - { - int newPartLength = (int)op.BytesReceived - index; - byte[] newPart = new byte[newPartLength]; - Array.Copy(op.DownloadedBytes, index, newPart, 0, newPartLength); - stream.Write(newPart, 0, newPartLength); - index = index + newPartLength; - }; - await download.StartDownloadAsync(); - } - - public IEnumerable<IFileEntry> List() - { - var listTask = ListAsync(); - listTask.Wait(); - return listTask.Result; - } - - private async Task<IEnumerable<IFileEntry>> ListAsync() - { - List<TardigradeFile> files = new List<TardigradeFile>(); - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - var prefix = GetBasePath(); - var objects = await _objectService.ListObjectsAsync(bucket, new ListObjectsOptions { Recursive = true, System = true, Custom = true, Prefix = prefix }); - - foreach (var obj in objects.Items) - { - TardigradeFile file = new TardigradeFile(obj); - if (prefix != "") - { - file.Name = file.Name.Replace(prefix, ""); - } - files.Add(file); - } - - return files; - } - - public async Task PutAsync(string remotename, string filename, CancellationToken cancelToken) - { - using (FileStream fs = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read)) - await PutAsync(remotename, fs, cancelToken); - } - - public async Task PutAsync(string remotename, Stream stream, CancellationToken cancelToken) - { - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - CustomMetadata custom = new CustomMetadata(); - custom.Entries.Add(new CustomMetadataEntry { Key = TardigradeFile.TARDIGRADE_LAST_ACCESS, Value = DateTime.Now.ToUniversalTime().ToString("O") }); - custom.Entries.Add(new CustomMetadataEntry { Key = TardigradeFile.TARDIGRADE_LAST_MODIFICATION, Value = DateTime.Now.ToUniversalTime().ToString("O") }); - var upload = await _objectService.UploadObjectAsync(bucket, GetBasePath() + remotename, new UploadOptions(), stream, custom, false); - await upload.StartUploadAsync(); - } - - public void Test() - { - var testTask = TestAsync(); - testTask.Wait(10000); - if (!testTask.Result) - { - throw new Exception(Strings.Tardigrade.TestConnectionFailed); - } - } - - /// <summary> - /// Test the connection by: - /// - creating the bucket (if it not already exists) - /// - uploading 256 random bytes to a test-file - /// - downloading the file back and expecting 256 bytes - /// </summary> - /// <returns>true, if the test was successfull or and exception</returns> - private async Task<bool> TestAsync() - { - string testFileName = GetBasePath() + "duplicati_test.dat"; - - var bucket = await _bucketService.EnsureBucketAsync(_bucket); - var upload = await _objectService.UploadObjectAsync(bucket, testFileName, new UploadOptions(), GetRandomBytes(256), false); - await upload.StartUploadAsync(); - - var download = await _objectService.DownloadObjectAsync(bucket, testFileName, new DownloadOptions(), false); - await download.StartDownloadAsync(); - - await _objectService.DeleteObjectAsync(bucket, testFileName); - - if (download.Failed || download.BytesReceived != 256) - { - throw new Exception(download.ErrorMessage); - } - - return true; - } - - /// <summary> - /// Gets the base path - depending on there is a folder set or not - /// </summary> - /// <returns>The base path within a bucket where the backup shall be placed</returns> - private string GetBasePath() - { - if (!string.IsNullOrEmpty(_folder)) - return _folder + "/"; - else - return ""; - } - - /// <summary> - /// Creates some random bytes with the given length - just for testing the connection - /// </summary> - /// <param name="length">The length of the bytes to create</param> - /// <returns>A byte-array with the given length</returns> - private static byte[] GetRandomBytes(long length) - { - byte[] bytes = new byte[length]; - Random rand = new Random(); - rand.NextBytes(bytes); - - return bytes; - } - } -} diff --git a/Duplicati/Library/Backend/Tardigrade/TardigradeConfig.cs b/Duplicati/Library/Backend/Tardigrade/TardigradeConfig.cs deleted file mode 100644 index 7c99982e2..000000000 --- a/Duplicati/Library/Backend/Tardigrade/TardigradeConfig.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Duplicati.Library.Interface; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Duplicati.Library.Backend.Tardigrade -{ - public class TardigradeConfig : IWebModule - { - private const ConfigType DEFAULT_CONFIG_TYPE = ConfigType.Satellites; - private const string KEY_CONFIGTYPE = "tardigrade-config"; - private static readonly string DEFAULT_CONFIG_TYPE_STR = Enum.GetName(typeof(ConfigType), DEFAULT_CONFIG_TYPE); - - public enum ConfigType - { - Satellites, - AuthenticationMethods - } - - #region IWebModule implementation - - public string Key { get { return "tardigrade-getconfig"; } } - - public string DisplayName { get { return "Storj DCS configuration module"; } } - - public string Description { get { return "Exposes Storj DCS configuration as a web module"; } } - - public IList<ICommandLineArgument> SupportedCommands - { - get - { - return new List<ICommandLineArgument>(new ICommandLineArgument[] { - new CommandLineArgument(KEY_CONFIGTYPE, CommandLineArgument.ArgumentType.Enumeration, "The config to get", "Provides different config values", DEFAULT_CONFIG_TYPE_STR, Enum.GetNames(typeof(ConfigType))) - - }); - } - } - - public IDictionary<string, string> Execute(IDictionary<string, string> options) - { - string k; - options.TryGetValue(KEY_CONFIGTYPE, out k); - if (string.IsNullOrWhiteSpace(k)) - { - k = DEFAULT_CONFIG_TYPE_STR; - } - - ConfigType ct; - if (!Enum.TryParse<ConfigType>(k, true, out ct)) - { - ct = DEFAULT_CONFIG_TYPE; - } - - switch (ct) - { - case ConfigType.Satellites: - return Tardigrade.KNOWN_TARDIGRADE_SATELLITES; - case ConfigType.AuthenticationMethods: - return Tardigrade.KNOWN_AUTHENTICATION_METHODS; - default: - return Tardigrade.KNOWN_TARDIGRADE_SATELLITES; - } - } - #endregion - } -} diff --git a/Duplicati/Library/Backend/Tardigrade/TardigradeFile.cs b/Duplicati/Library/Backend/Tardigrade/TardigradeFile.cs deleted file mode 100644 index 794e427e0..000000000 --- a/Duplicati/Library/Backend/Tardigrade/TardigradeFile.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Duplicati.Library.Interface; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Duplicati.Library.Backend.Tardigrade -{ - public class TardigradeFile : IFileEntry - { - public static readonly string TARDIGRADE_LAST_ACCESS = "DUPLICATI:LAST-ACCESS"; - public static readonly string TARDIGRADE_LAST_MODIFICATION = "DUPLICATI:LAST-MODIFICATION"; - public bool IsFolder { get; set; } - - public DateTime LastAccess { get; set; } - - public DateTime LastModification { get; set; } - - public string Name { get; set; } - - public long Size { get; set; } - - public TardigradeFile() - { - - } - - public TardigradeFile(uplink.NET.Models.Object tardigradeObject) - { - IsFolder = tardigradeObject.IsPrefix; - var lastAccess = tardigradeObject.CustomMetaData.Entries.Where(e => e.Key == TARDIGRADE_LAST_ACCESS).FirstOrDefault(); - if (lastAccess != null && !string.IsNullOrEmpty(lastAccess.Value)) - { - LastAccess = DateTime.Parse(lastAccess.Value); - } - else - { - LastAccess = DateTime.MinValue; - } - - var lastMod = tardigradeObject.CustomMetaData.Entries.Where(e => e.Key == TARDIGRADE_LAST_MODIFICATION).FirstOrDefault(); - if (lastMod != null && !string.IsNullOrEmpty(lastMod.Value)) - { - LastModification = DateTime.Parse(lastMod.Value); - } - else - { - LastModification = DateTime.MinValue; - } - - Name = tardigradeObject.Key; - Size = tardigradeObject.SystemMetaData.ContentLength; - } - } -} diff --git a/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.dylib b/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.dylib Binary files differdeleted file mode 100644 index a3e4de942..000000000 --- a/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.dylib +++ /dev/null diff --git a/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.so b/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.so Binary files differdeleted file mode 100644 index 0ecab8ba8..000000000 --- a/Duplicati/Library/Backend/Tardigrade/libstorj_uplink.so +++ /dev/null diff --git a/Duplicati/Library/Backend/Tardigrade/packages.config b/Duplicati/Library/Backend/Tardigrade/packages.config deleted file mode 100644 index 1592ab1f8..000000000 --- a/Duplicati/Library/Backend/Tardigrade/packages.config +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="sqlite-net-pcl" version="1.7.335" targetFramework="net471" /> - <package id="SQLitePCLRaw.bundle_green" version="2.0.3" targetFramework="net471" /> - <package id="SQLitePCLRaw.core" version="2.0.3" targetFramework="net471" /> - <package id="SQLitePCLRaw.lib.e_sqlite3" version="2.0.3" targetFramework="net471" /> - <package id="SQLitePCLRaw.provider.dynamic_cdecl" version="2.0.3" targetFramework="net471" /> - <package id="System.Buffers" version="4.4.0" targetFramework="net471" /> - <package id="System.Memory" version="4.5.3" targetFramework="net471" /> - <package id="System.Numerics.Vectors" version="4.4.0" targetFramework="net471" /> - <package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net471" /> - <package id="uplink.NET" version="2.6.1451" targetFramework="net471" /> -</packages>
\ No newline at end of file diff --git a/Duplicati/Library/Backend/Tardigrade/win-x64/storj_uplink.dll b/Duplicati/Library/Backend/Tardigrade/win-x64/storj_uplink.dll Binary files differdeleted file mode 100644 index 8b42a9c6b..000000000 --- a/Duplicati/Library/Backend/Tardigrade/win-x64/storj_uplink.dll +++ /dev/null diff --git a/Duplicati/Library/Backend/Tardigrade/win-x86/storj_uplink.dll b/Duplicati/Library/Backend/Tardigrade/win-x86/storj_uplink.dll Binary files differdeleted file mode 100644 index c34a75d19..000000000 --- a/Duplicati/Library/Backend/Tardigrade/win-x86/storj_uplink.dll +++ /dev/null |