Compare commits
54
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
34891251db | ||
|
|
c5fac3354e | ||
|
|
29b3bb4dad | ||
|
|
a7628566b6 | ||
|
|
3f80700fb4 | ||
|
|
244e502121 | ||
|
|
3fc896daa3 | ||
|
|
7a466f937c | ||
|
|
04f1874080 | ||
|
|
8c46d4c0bf | ||
|
|
d07c45dc62 | ||
|
|
9c54afe136 | ||
|
|
9cd14e0e61 | ||
|
|
fce00f1cc9 | ||
|
|
d3d1362d5b | ||
|
|
a0bbedba5a | ||
|
|
d5d27c5800 | ||
|
|
66d855798b | ||
|
|
c66bf181f6 | ||
|
|
b63ec454b2 | ||
|
|
58095c3fab | ||
|
|
75f3f15022 | ||
|
|
f6a7a74214 | ||
|
|
50558f116a | ||
|
|
5cfe801e78 | ||
|
|
38f29f3877 | ||
|
|
5a9492740e | ||
|
|
9e9a80c23b | ||
|
|
a068521c23 | ||
|
|
073b755ef5 | ||
|
|
914e50b1dd | ||
|
|
1ca1cb257c | ||
|
|
893927306c | ||
|
|
f8d99f842d | ||
|
|
3bf5a74a76 | ||
|
|
324f6a85ea | ||
|
|
f0a49bc242 | ||
|
|
5ed8856f01 | ||
|
|
0feb65efbd | ||
|
|
7b314fc182 | ||
|
|
856f45dbf8 | ||
|
|
a466ea1ac0 | ||
|
|
97eaa3295f | ||
|
|
d15ef2dcf9 | ||
|
|
4caa9cc17a | ||
|
|
79e17d6439 | ||
|
|
fc98ffd6c7 | ||
|
|
88a2caae3b | ||
|
|
e8baf7e8b7 | ||
|
|
4a5e66bb1b | ||
|
|
b72721569c | ||
|
|
98ce976c64 | ||
|
|
0a7e0a3e13 | ||
|
|
b0916a8d48 |
@@ -50,17 +50,28 @@ namespace LocalizationTool
|
||||
resgenexe = ExecuteAndRead("which", "resgen");
|
||||
alexe = ExecuteAndRead("which", "al");
|
||||
}
|
||||
else
|
||||
else //Windows
|
||||
{
|
||||
//Order of these paths is also the search order
|
||||
string[] known_sdk_paths =
|
||||
{
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v2.0.50727\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft.NET\\SDK\\v2.0\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v3.0\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v4.0\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v4.0.30319\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v3.5\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v6.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v3.0\\"),
|
||||
Environment.ExpandEnvironmentVariables("%WINDIR%\\Microsoft.Net\\Framework\\v2.0.50727\\"),
|
||||
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v8.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v7.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v8.0A\\bin\\")
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft SDKs\\Windows\\v6.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES%\\Microsoft.NET\\SDK\\v2.0\\bin\\"),
|
||||
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES(X86)%\\Microsoft SDKs\\Windows\\v8.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES(X86)%\\Microsoft SDKs\\Windows\\v7.1\\Bin\\NETFX 4.0 Tools\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES(X86)%\\Microsoft SDKs\\Windows\\v7.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES(X86)%\\Microsoft SDKs\\Windows\\v6.0A\\bin\\"),
|
||||
Environment.ExpandEnvironmentVariables("%PROGRAMFILES(X86)%\\Microsoft.NET\\SDK\\v2.0\\bin\\"),
|
||||
|
||||
};
|
||||
|
||||
|
||||
+6
-108
@@ -55,19 +55,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Backend.S
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Library.Backend.GoogleDocs", "Duplicati\Library\Backend\GoogleDocs\Duplicati.Library.Backend.GoogleDocs.csproj", "{42C91180-11EB-4590-82EA-80FE9D4DEBEC}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Scheduler.Data", "Duplicati\Scheduler\Data\Duplicati.Scheduler.Data.csproj", "{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Scheduler", "Duplicati\Scheduler\Duplicati.Scheduler.csproj", "{D1D503E8-5CF7-413B-81FB-403D65B43AAB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Scheduler.Utility", "Duplicati\Scheduler\Utility\Duplicati.Scheduler.Utility.csproj", "{0E3DF716-5657-4B51-9BF2-3791880930E1}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Scheduler.RunBackup", "Duplicati\Scheduler\RunBackup\Duplicati.Scheduler.RunBackup.csproj", "{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Duplicati.Scheduler.Monitor.SQL", "Duplicati\Scheduler\Monitor.SQL\Duplicati.Scheduler.Monitor.SQL.csproj", "{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ObjectListView2010", "thirdparty\ObjectListView\ObjectListView\ObjectListView2010.csproj", "{18FEDA0C-D147-4286-B39A-01204808106A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SubversionScc) = preSolution
|
||||
Svn-Managed = True
|
||||
Manager = AnkhSVN - Subversion Support for Visual Studio
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
@@ -411,8 +403,8 @@ Global
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Debug|x86.Build.0 = Debug|x86
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|x86.ActiveCfg = Release|x86
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Release|x86.Build.0 = Release|x86
|
||||
{0CA86ECF-5BEC-4909-B4F6-110A03B30B92}.Test|Any CPU.ActiveCfg = Release|x86
|
||||
@@ -535,102 +527,8 @@ Global
|
||||
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{42C91180-11EB-4590-82EA-80FE9D4DEBEC}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C8F0DD19-E242-4E9C-A707-2FFADE8D7970}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{D1D503E8-5CF7-413B-81FB-403D65B43AAB}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{0E3DF716-5657-4B51-9BF2-3791880930E1}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{520FA2BD-1C59-40D9-BCB5-EDA11327B7F0}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{ECA674A3-CC59-4C75-90E3-5AACA591EC5D}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Test|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Test|Any CPU.Build.0 = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Test|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Test|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{18FEDA0C-D147-4286-B39A-01204808106A}.Test|x86.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(SubversionScc) = preSolution
|
||||
Svn-Managed = True
|
||||
Manager = AnkhSVN - Subversion Support for Visual Studio
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -134,7 +134,10 @@ namespace Duplicati.CommandLine.BackendTester
|
||||
|
||||
curlist = backend.List();
|
||||
}
|
||||
catch { }
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Autocreate folder failed with message: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
if (curlist == null)
|
||||
|
||||
@@ -152,14 +152,38 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
<Content Include="..\..\thirdparty\gpg\gpg.exe">
|
||||
<Link>win-tools\gpg.exe</Link>
|
||||
<Content Include="..\..\thirdparty\gpg\gpg2.exe">
|
||||
<Link>win-tools\gpg2.exe</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\gpg\gpg.exe">
|
||||
<Link>win-tools\gpg\gpg.exe</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\iconv.dll">
|
||||
<Link>win-tools\iconv.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\libadns-1.dll">
|
||||
<Link>win-tools\libadns-1.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\libassuan-0.dll">
|
||||
<Link>win-tools\libassuan-0.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\libgcrypt-11.dll">
|
||||
<Link>win-tools\libgcrypt-11.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\libgpg-error-0.dll">
|
||||
<Link>win-tools\libgpg-error-0.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\gpg\zlib1.dll">
|
||||
<Link>win-tools\zlib1.dll</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\..\thirdparty\Putty\pscp.exe">
|
||||
<Link>win-tools\pscp.exe</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
|
||||
@@ -35,13 +35,6 @@ namespace Duplicati.CommandLine
|
||||
string filter = Duplicati.Library.Utility.FilenameFilter.EncodeAsFilter(Duplicati.Library.Utility.FilenameFilter.ParseCommandLine(cargs, true));
|
||||
Dictionary<string, string> options = CommandLineParser.ExtractOptions(cargs);
|
||||
|
||||
foreach (string internaloption in Library.Main.Options.InternalOptions)
|
||||
if (options.ContainsKey(internaloption))
|
||||
{
|
||||
Console.WriteLine(Strings.Program.InternalOptionUsedError, internaloption);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(filter))
|
||||
options["filter"] = filter;
|
||||
|
||||
@@ -49,12 +42,13 @@ namespace Duplicati.CommandLine
|
||||
//We add it last, to allow the user to override with other versions
|
||||
if (!Library.Utility.Utility.IsClientLinux)
|
||||
{
|
||||
string wintools = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "win-tools");
|
||||
Environment.SetEnvironmentVariable("PATH",
|
||||
Environment.GetEnvironmentVariable("PATH") +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
|
||||
"win-tools")
|
||||
wintools +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
System.IO.Path.Combine(wintools, "gpg") //GPG needs to be in a subfolder for wrapping reasons
|
||||
);
|
||||
}
|
||||
|
||||
@@ -92,6 +86,14 @@ namespace Duplicati.CommandLine
|
||||
}
|
||||
}
|
||||
|
||||
//AFTER converting options to commands, we check for internal switches
|
||||
foreach (string internaloption in Library.Main.Options.InternalOptions)
|
||||
if (options.ContainsKey(internaloption))
|
||||
{
|
||||
Console.WriteLine(Strings.Program.InternalOptionUsedError, internaloption);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cargs.Count == 1)
|
||||
{
|
||||
switch (cargs[0].Trim().ToLower())
|
||||
|
||||
@@ -112,16 +112,22 @@ namespace Duplicati.CommandLine
|
||||
options["backup-prefix"] = "duplicati_unittest";
|
||||
|
||||
//This would break the test, because the data is not modified the normal way
|
||||
options["disable-filetime-check"] = null;
|
||||
options["disable-filetime-check"] = "true";
|
||||
//We do not use the same folder, so we need this option
|
||||
options["allow-sourcefolder-change"] = null;
|
||||
options["allow-sourcefolder-change"] = "true";
|
||||
//We want all messages in the log
|
||||
options["log-level"] = LogMessageType.Profiling.ToString();
|
||||
//We cannot rely on USN numbering, but we can use USN enumeration
|
||||
//options["disable-usn-diff-check"] = null;
|
||||
//options["disable-usn-diff-check"] = "true";
|
||||
|
||||
//We use precise times
|
||||
options["disable-time-tolerance"] = "true";
|
||||
|
||||
options["verification-level"] = "full";
|
||||
|
||||
//We need all sets, even if they are unchanged
|
||||
options["upload-unchanged-backups"] = "true";
|
||||
|
||||
using(new Timer("Total unittest"))
|
||||
using(TempFolder tf = new TempFolder())
|
||||
{
|
||||
@@ -343,6 +349,22 @@ namespace Duplicati.CommandLine
|
||||
Log.CurrentLog = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the index of a given string, using the file system case sensitivity
|
||||
/// </summary>
|
||||
/// <returns>The index of the entry or -1 if no entry was found</returns>
|
||||
/// <param name='lst'>The list to search</param>
|
||||
/// <param name='m'>The string to find</param>
|
||||
private static int IndexOf(List<string> lst, string m)
|
||||
{
|
||||
StringComparison sc = Duplicati.Library.Utility.Utility.ClientFilenameStringComparision;
|
||||
for(int i = 0; i < lst.Count; i++)
|
||||
if (lst[i].Equals(m, sc))
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies the existence of all files and folders, and ensures that all
|
||||
/// files are binary equal.
|
||||
@@ -361,13 +383,14 @@ namespace Duplicati.CommandLine
|
||||
{
|
||||
string relpath = s.Substring(f1.Length);
|
||||
string target = System.IO.Path.Combine(f2, relpath);
|
||||
if (!folders2.Contains(target))
|
||||
int ix = IndexOf(folders2, target);
|
||||
if (ix < 0)
|
||||
{
|
||||
Log.WriteMessage("Missing folder: " + relpath, LogMessageType.Error);
|
||||
Console.WriteLine("Missing folder: " + relpath);
|
||||
}
|
||||
else
|
||||
folders2.Remove(target);
|
||||
folders2.RemoveAt(ix);
|
||||
}
|
||||
|
||||
foreach (string s in folders2)
|
||||
@@ -382,14 +405,15 @@ namespace Duplicati.CommandLine
|
||||
{
|
||||
string relpath = s.Substring(f1.Length);
|
||||
string target = System.IO.Path.Combine(f2, relpath);
|
||||
if (!files2.Contains(target))
|
||||
int ix = IndexOf(files2, target);
|
||||
if (ix < 0)
|
||||
{
|
||||
Log.WriteMessage("Missing file: " + relpath, LogMessageType.Error);
|
||||
Console.WriteLine("Missing file: " + relpath);
|
||||
}
|
||||
else
|
||||
{
|
||||
files2.Remove(target);
|
||||
files2.RemoveAt(ix);
|
||||
if (!CompareFiles(s, target, relpath))
|
||||
{
|
||||
Log.WriteMessage("File differs: " + relpath, LogMessageType.Error);
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true"/></configuration>
|
||||
<runtime>
|
||||
<loadFromRemoteSources enabled="true" />
|
||||
</runtime>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
|
||||
+77
-107
@@ -35,11 +35,9 @@ namespace Duplicati.GUI
|
||||
this.BalloonNotificationLevel = new System.Windows.Forms.ComboBox();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.HideDonateButton = new System.Windows.Forms.CheckBox();
|
||||
this.StartupDelayDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.LanguageSelection = new System.Windows.Forms.ComboBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.RecentDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.CacheSizeLabel = new System.Windows.Forms.Label();
|
||||
this.ClearCacheButton = new System.Windows.Forms.Button();
|
||||
@@ -49,42 +47,39 @@ namespace Duplicati.GUI
|
||||
this.TempPathBrowse = new System.Windows.Forms.Button();
|
||||
this.TempPath = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.BrowseTempPath = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.PasswordDefaultsGroup = new System.Windows.Forms.GroupBox();
|
||||
this.PasswordPanel = new System.Windows.Forms.Panel();
|
||||
this.EncryptionModule = new System.Windows.Forms.ComboBox();
|
||||
this.EncryptionMethod = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.CommonPassword = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.EncryptionModule = new System.Windows.Forms.ComboBox();
|
||||
this.UseCommonPassword = new System.Windows.Forms.CheckBox();
|
||||
this.CommonPassword = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.BrowseSignatureCachePath = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.CacheSizeCalculator = new System.ComponentModel.BackgroundWorker();
|
||||
this.TabContainer = new System.Windows.Forms.TabControl();
|
||||
this.BasicTab = new System.Windows.Forms.TabPage();
|
||||
this.AdvancedTab = new System.Windows.Forms.TabPage();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.Bandwidth = new Duplicati.GUI.HelperControls.BandwidthLimit();
|
||||
this.ThreadPriorityPicker = new Duplicati.GUI.HelperControls.ThreadPriorityPicker();
|
||||
this.LicenseTab = new System.Windows.Forms.TabPage();
|
||||
this.LicenseLink = new System.Windows.Forms.LinkLabel();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.LicenseText = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.LicenseSections = new System.Windows.Forms.ListBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.StartupDelayDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.RecentDuration = new Duplicati.GUI.HelperControls.DurationEditor();
|
||||
this.Bandwidth = new Duplicati.GUI.HelperControls.BandwidthLimit();
|
||||
this.ThreadPriorityPicker = new Duplicati.GUI.HelperControls.ThreadPriorityPicker();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.PasswordDefaultsGroup.SuspendLayout();
|
||||
this.PasswordPanel.SuspendLayout();
|
||||
this.TabContainer.SuspendLayout();
|
||||
this.BasicTab.SuspendLayout();
|
||||
this.AdvancedTab.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
this.LicenseTab.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
@@ -107,6 +102,7 @@ namespace Duplicati.GUI
|
||||
resources.ApplyResources(this.groupBox1, "groupBox1");
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter);
|
||||
//
|
||||
// BalloonNotificationLevel
|
||||
//
|
||||
@@ -127,18 +123,9 @@ namespace Duplicati.GUI
|
||||
//
|
||||
resources.ApplyResources(this.HideDonateButton, "HideDonateButton");
|
||||
this.HideDonateButton.Name = "HideDonateButton";
|
||||
this.toolTip.SetToolTip(this.HideDonateButton, resources.GetString("HideDonateButton.ToolTip"));
|
||||
this.HideDonateButton.UseVisualStyleBackColor = true;
|
||||
this.HideDonateButton.CheckedChanged += new System.EventHandler(this.HideDonateButton_CheckedChanged);
|
||||
//
|
||||
// StartupDelayDuration
|
||||
//
|
||||
resources.ApplyResources(this.StartupDelayDuration, "StartupDelayDuration");
|
||||
this.StartupDelayDuration.Name = "StartupDelayDuration";
|
||||
this.toolTip.SetToolTip(this.StartupDelayDuration, resources.GetString("StartupDelayDuration.ToolTip"));
|
||||
this.StartupDelayDuration.Value = "";
|
||||
this.StartupDelayDuration.ValueChanged += new System.EventHandler(this.StartupDelayDuration_ValueChanged);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
resources.ApplyResources(this.label7, "label7");
|
||||
@@ -160,14 +147,6 @@ namespace Duplicati.GUI
|
||||
this.label3.Name = "label3";
|
||||
this.toolTip.SetToolTip(this.label3, resources.GetString("label3.ToolTip"));
|
||||
//
|
||||
// RecentDuration
|
||||
//
|
||||
resources.ApplyResources(this.RecentDuration, "RecentDuration");
|
||||
this.RecentDuration.Name = "RecentDuration";
|
||||
this.toolTip.SetToolTip(this.RecentDuration, resources.GetString("RecentDuration.ToolTip"));
|
||||
this.RecentDuration.Value = "";
|
||||
this.RecentDuration.ValueChanged += new System.EventHandler(this.RecentDuration_ValueChanged);
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.CacheSizeLabel);
|
||||
@@ -186,7 +165,6 @@ namespace Duplicati.GUI
|
||||
//
|
||||
resources.ApplyResources(this.CacheSizeLabel, "CacheSizeLabel");
|
||||
this.CacheSizeLabel.Name = "CacheSizeLabel";
|
||||
this.toolTip.SetToolTip(this.CacheSizeLabel, resources.GetString("CacheSizeLabel.ToolTip"));
|
||||
//
|
||||
// ClearCacheButton
|
||||
//
|
||||
@@ -237,38 +215,22 @@ namespace Duplicati.GUI
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
this.toolTip.SetToolTip(this.label4, resources.GetString("label4.ToolTip"));
|
||||
//
|
||||
// OKBtn
|
||||
//
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// PasswordDefaultsGroup
|
||||
//
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.PasswordPanel);
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.EncryptionMethod);
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.EncryptionModule);
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.UseCommonPassword);
|
||||
this.PasswordDefaultsGroup.Controls.Add(this.CommonPassword);
|
||||
resources.ApplyResources(this.PasswordDefaultsGroup, "PasswordDefaultsGroup");
|
||||
this.PasswordDefaultsGroup.Name = "PasswordDefaultsGroup";
|
||||
this.PasswordDefaultsGroup.TabStop = false;
|
||||
//
|
||||
// PasswordPanel
|
||||
// EncryptionMethod
|
||||
//
|
||||
this.PasswordPanel.Controls.Add(this.EncryptionModule);
|
||||
this.PasswordPanel.Controls.Add(this.EncryptionMethod);
|
||||
this.PasswordPanel.Controls.Add(this.label5);
|
||||
this.PasswordPanel.Controls.Add(this.CommonPassword);
|
||||
resources.ApplyResources(this.PasswordPanel, "PasswordPanel");
|
||||
this.PasswordPanel.Name = "PasswordPanel";
|
||||
resources.ApplyResources(this.EncryptionMethod, "EncryptionMethod");
|
||||
this.EncryptionMethod.Name = "EncryptionMethod";
|
||||
this.toolTip.SetToolTip(this.EncryptionMethod, resources.GetString("EncryptionMethod.ToolTip"));
|
||||
//
|
||||
// EncryptionModule
|
||||
//
|
||||
@@ -280,17 +242,13 @@ namespace Duplicati.GUI
|
||||
this.EncryptionModule.SelectedIndexChanged += new System.EventHandler(this.EncryptionModule_SelectedIndexChanged);
|
||||
this.EncryptionModule.TextChanged += new System.EventHandler(this.EncryptionModule_SelectedIndexChanged);
|
||||
//
|
||||
// EncryptionMethod
|
||||
// UseCommonPassword
|
||||
//
|
||||
resources.ApplyResources(this.EncryptionMethod, "EncryptionMethod");
|
||||
this.EncryptionMethod.Name = "EncryptionMethod";
|
||||
this.toolTip.SetToolTip(this.EncryptionMethod, resources.GetString("EncryptionMethod.ToolTip"));
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
this.toolTip.SetToolTip(this.label5, resources.GetString("label5.ToolTip"));
|
||||
resources.ApplyResources(this.UseCommonPassword, "UseCommonPassword");
|
||||
this.UseCommonPassword.Name = "UseCommonPassword";
|
||||
this.toolTip.SetToolTip(this.UseCommonPassword, resources.GetString("UseCommonPassword.ToolTip"));
|
||||
this.UseCommonPassword.UseVisualStyleBackColor = true;
|
||||
this.UseCommonPassword.CheckedChanged += new System.EventHandler(this.UseCommonPassword_CheckedChanged);
|
||||
//
|
||||
// CommonPassword
|
||||
//
|
||||
@@ -304,14 +262,6 @@ namespace Duplicati.GUI
|
||||
this.toolTip.SetToolTip(this.CommonPassword, resources.GetString("CommonPassword.ToolTip"));
|
||||
this.CommonPassword.TextChanged += new System.EventHandler(this.CommonPassword_TextChanged);
|
||||
//
|
||||
// UseCommonPassword
|
||||
//
|
||||
resources.ApplyResources(this.UseCommonPassword, "UseCommonPassword");
|
||||
this.UseCommonPassword.Name = "UseCommonPassword";
|
||||
this.toolTip.SetToolTip(this.UseCommonPassword, resources.GetString("UseCommonPassword.ToolTip"));
|
||||
this.UseCommonPassword.UseVisualStyleBackColor = true;
|
||||
this.UseCommonPassword.CheckedChanged += new System.EventHandler(this.UseCommonPassword_CheckedChanged);
|
||||
//
|
||||
// CacheSizeCalculator
|
||||
//
|
||||
this.CacheSizeCalculator.WorkerSupportsCancellation = true;
|
||||
@@ -326,6 +276,7 @@ namespace Duplicati.GUI
|
||||
resources.ApplyResources(this.TabContainer, "TabContainer");
|
||||
this.TabContainer.Name = "TabContainer";
|
||||
this.TabContainer.SelectedIndex = 0;
|
||||
this.TabContainer.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
|
||||
//
|
||||
// BasicTab
|
||||
//
|
||||
@@ -351,25 +302,6 @@ namespace Duplicati.GUI
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.TabStop = false;
|
||||
//
|
||||
// Bandwidth
|
||||
//
|
||||
this.Bandwidth.DownloadLimit = null;
|
||||
this.Bandwidth.DownloadLimitInBytes = ((long)(0));
|
||||
resources.ApplyResources(this.Bandwidth, "Bandwidth");
|
||||
this.Bandwidth.Name = "Bandwidth";
|
||||
this.toolTip.SetToolTip(this.Bandwidth, resources.GetString("Bandwidth.ToolTip"));
|
||||
this.Bandwidth.UploadLimit = null;
|
||||
this.Bandwidth.UploadLimitInBytes = ((long)(0));
|
||||
this.Bandwidth.DownloadLimitChanged += new System.EventHandler(this.Bandwidth_DownloadLimitChanged);
|
||||
this.Bandwidth.UploadLimitChanged += new System.EventHandler(this.Bandwidth_UploadLimitChanged);
|
||||
//
|
||||
// ThreadPriorityPicker
|
||||
//
|
||||
resources.ApplyResources(this.ThreadPriorityPicker, "ThreadPriorityPicker");
|
||||
this.ThreadPriorityPicker.Name = "ThreadPriorityPicker";
|
||||
this.toolTip.SetToolTip(this.ThreadPriorityPicker, resources.GetString("ThreadPriorityPicker.ToolTip"));
|
||||
this.ThreadPriorityPicker.SelectedPriorityChanged += new System.EventHandler(this.ThreadPriorityPicker_SelectedPriorityChanged);
|
||||
//
|
||||
// LicenseTab
|
||||
//
|
||||
this.LicenseTab.Controls.Add(this.LicenseLink);
|
||||
@@ -396,6 +328,7 @@ namespace Duplicati.GUI
|
||||
//
|
||||
// LicenseText
|
||||
//
|
||||
this.LicenseText.BackColor = System.Drawing.SystemColors.Window;
|
||||
resources.ApplyResources(this.LicenseText, "LicenseText");
|
||||
this.LicenseText.Name = "LicenseText";
|
||||
this.LicenseText.ReadOnly = true;
|
||||
@@ -413,41 +346,81 @@ namespace Duplicati.GUI
|
||||
this.toolTip.SetToolTip(this.LicenseSections, resources.GetString("LicenseSections.ToolTip"));
|
||||
this.LicenseSections.SelectedIndexChanged += new System.EventHandler(this.LicenseSections_SelectedIndexChanged);
|
||||
//
|
||||
// panel1
|
||||
// OKBtn
|
||||
//
|
||||
this.panel1.Controls.Add(this.OKBtn);
|
||||
this.panel1.Controls.Add(this.CancelBtn);
|
||||
resources.ApplyResources(this.panel1, "panel1");
|
||||
this.panel1.Name = "panel1";
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// StartupDelayDuration
|
||||
//
|
||||
resources.ApplyResources(this.StartupDelayDuration, "StartupDelayDuration");
|
||||
this.StartupDelayDuration.Name = "StartupDelayDuration";
|
||||
this.toolTip.SetToolTip(this.StartupDelayDuration, resources.GetString("StartupDelayDuration.ToolTip"));
|
||||
this.StartupDelayDuration.Value = "";
|
||||
this.StartupDelayDuration.ValueChanged += new System.EventHandler(this.StartupDelayDuration_ValueChanged);
|
||||
//
|
||||
// RecentDuration
|
||||
//
|
||||
resources.ApplyResources(this.RecentDuration, "RecentDuration");
|
||||
this.RecentDuration.Name = "RecentDuration";
|
||||
this.toolTip.SetToolTip(this.RecentDuration, resources.GetString("RecentDuration.ToolTip"));
|
||||
this.RecentDuration.Value = "";
|
||||
this.RecentDuration.ValueChanged += new System.EventHandler(this.RecentDuration_ValueChanged);
|
||||
//
|
||||
// Bandwidth
|
||||
//
|
||||
this.Bandwidth.DownloadLimit = null;
|
||||
this.Bandwidth.DownloadLimitInBytes = ((long)(0));
|
||||
resources.ApplyResources(this.Bandwidth, "Bandwidth");
|
||||
this.Bandwidth.Name = "Bandwidth";
|
||||
this.toolTip.SetToolTip(this.Bandwidth, resources.GetString("Bandwidth.ToolTip"));
|
||||
this.Bandwidth.UploadLimit = null;
|
||||
this.Bandwidth.UploadLimitInBytes = ((long)(0));
|
||||
this.Bandwidth.DownloadLimitChanged += new System.EventHandler(this.Bandwidth_DownloadLimitChanged);
|
||||
this.Bandwidth.UploadLimitChanged += new System.EventHandler(this.Bandwidth_UploadLimitChanged);
|
||||
//
|
||||
// ThreadPriorityPicker
|
||||
//
|
||||
resources.ApplyResources(this.ThreadPriorityPicker, "ThreadPriorityPicker");
|
||||
this.ThreadPriorityPicker.Name = "ThreadPriorityPicker";
|
||||
this.toolTip.SetToolTip(this.ThreadPriorityPicker, resources.GetString("ThreadPriorityPicker.ToolTip"));
|
||||
this.ThreadPriorityPicker.SelectedPriorityChanged += new System.EventHandler(this.ThreadPriorityPicker_SelectedPriorityChanged);
|
||||
//
|
||||
// ApplicationSetup
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.CancelBtn;
|
||||
this.Controls.Add(this.CancelBtn);
|
||||
this.Controls.Add(this.OKBtn);
|
||||
this.Controls.Add(this.TabContainer);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "ApplicationSetup";
|
||||
this.Load += new System.EventHandler(this.ApplicationSetup_Load);
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ApplicationSetup_FormClosing);
|
||||
this.Load += new System.EventHandler(this.ApplicationSetup_Load);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.PasswordDefaultsGroup.ResumeLayout(false);
|
||||
this.PasswordDefaultsGroup.PerformLayout();
|
||||
this.PasswordPanel.ResumeLayout(false);
|
||||
this.PasswordPanel.PerformLayout();
|
||||
this.TabContainer.ResumeLayout(false);
|
||||
this.BasicTab.ResumeLayout(false);
|
||||
this.AdvancedTab.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.LicenseTab.ResumeLayout(false);
|
||||
this.LicenseTab.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
@@ -457,8 +430,6 @@ namespace Duplicati.GUI
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.Button OKBtn;
|
||||
private System.Windows.Forms.Button CancelBtn;
|
||||
private Duplicati.GUI.HelperControls.DurationEditor RecentDuration;
|
||||
private System.Windows.Forms.Button TempPathBrowse;
|
||||
private System.Windows.Forms.TextBox TempPath;
|
||||
@@ -467,8 +438,6 @@ namespace Duplicati.GUI
|
||||
private System.Windows.Forms.GroupBox PasswordDefaultsGroup;
|
||||
private Duplicati.Winforms.Controls.PasswordControl CommonPassword;
|
||||
private System.Windows.Forms.CheckBox UseCommonPassword;
|
||||
private System.Windows.Forms.Panel PasswordPanel;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.CheckBox SignatureCacheEnabled;
|
||||
private System.Windows.Forms.Button SignatureCachePathBrowse;
|
||||
private System.Windows.Forms.TextBox SignatureCachePath;
|
||||
@@ -486,7 +455,6 @@ namespace Duplicati.GUI
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private Duplicati.GUI.HelperControls.BandwidthLimit Bandwidth;
|
||||
private Duplicati.GUI.HelperControls.ThreadPriorityPicker ThreadPriorityPicker;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label EncryptionMethod;
|
||||
private System.Windows.Forms.ComboBox EncryptionModule;
|
||||
private System.Windows.Forms.CheckBox HideDonateButton;
|
||||
@@ -499,5 +467,7 @@ namespace Duplicati.GUI
|
||||
private System.Windows.Forms.TextBox LicenseText;
|
||||
private System.Windows.Forms.ComboBox BalloonNotificationLevel;
|
||||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Button OKBtn;
|
||||
private System.Windows.Forms.Button CancelBtn;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,6 +124,12 @@ namespace Duplicati.GUI
|
||||
|
||||
}
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
Font = SystemFonts.MessageBoxFont;
|
||||
}
|
||||
|
||||
private void RecentDuration_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (m_isUpdating || m_settings == null)
|
||||
@@ -324,7 +330,8 @@ namespace Duplicati.GUI
|
||||
|
||||
private void UseCommonPassword_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
PasswordPanel.Enabled = UseCommonPassword.Checked;
|
||||
CommonPassword.Enabled = UseCommonPassword.Checked;
|
||||
EncryptionModule.Enabled = UseCommonPassword.Checked;
|
||||
|
||||
if (m_isUpdating)
|
||||
return;
|
||||
@@ -561,5 +568,15 @@ namespace Duplicati.GUI
|
||||
if (BalloonNotificationLevel.SelectedItem as ComboBoxItemPair<ApplicationSettings.NotificationLevel> != null)
|
||||
m_settings.BallonNotificationLevel = (BalloonNotificationLevel.SelectedItem as ComboBoxItemPair<ApplicationSettings.NotificationLevel>).Value;
|
||||
}
|
||||
|
||||
private void groupBox1_Enter(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void panel1_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+322
-682
File diff suppressed because it is too large
Load Diff
@@ -229,6 +229,7 @@
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="HelperControls\TestSearchSelection.resx">
|
||||
<DependentUpon>TestSearchSelection.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
@@ -890,6 +891,7 @@
|
||||
<EmbeddedResource Include="HelperControls\Strings\SizeSelector.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>SizeSelector.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="HelperControls\ThreadPriorityPicker.resx">
|
||||
<DependentUpon>ThreadPriorityPicker.cs</DependentUpon>
|
||||
@@ -1068,6 +1070,7 @@
|
||||
<EmbeddedResource Include="Strings\WizardHandler.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>WizardHandler.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="DownloadLimitCheckbox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 32</value>
|
||||
<value>0, 30</value>
|
||||
</data>
|
||||
<data name="DownloadLimitCheckbox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>135, 17</value>
|
||||
@@ -157,7 +157,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
<value>0, 2</value>
|
||||
</data>
|
||||
<data name="UploadLimitCheckbox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>125, 17</value>
|
||||
@@ -214,7 +214,7 @@
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>152, 32</value>
|
||||
<value>152, 28</value>
|
||||
</data>
|
||||
<data name="DownloadLimitPicker.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>170, 21</value>
|
||||
@@ -241,7 +241,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>321, 54</value>
|
||||
<value>321, 50</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>BandwidthLimit</value>
|
||||
|
||||
@@ -53,6 +53,7 @@ namespace Duplicati.GUI.HelperControls
|
||||
// CustomDuration
|
||||
//
|
||||
this.errorProvider.SetError(this.CustomDuration, resources.GetString("CustomDuration.Error"));
|
||||
this.errorProvider.SetIconPadding(this.CustomDuration, ((int)(resources.GetObject("CustomDuration.IconPadding"))));
|
||||
resources.ApplyResources(this.CustomDuration, "CustomDuration");
|
||||
this.CustomDuration.Name = "CustomDuration";
|
||||
this.CustomDuration.TextChanged += new System.EventHandler(this.CustomDuration_TextChanged);
|
||||
|
||||
@@ -182,11 +182,14 @@
|
||||
<data name="CustomDuration.Error" xml:space="preserve">
|
||||
<value>s</value>
|
||||
</data>
|
||||
<data name="CustomDuration.IconPadding" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>136, 0</value>
|
||||
<value>118, 0</value>
|
||||
</data>
|
||||
<data name="CustomDuration.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>84, 20</value>
|
||||
<value>102, 20</value>
|
||||
</data>
|
||||
<data name="CustomDuration.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="Number.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
<value>0, 1</value>
|
||||
</data>
|
||||
<data name="Number.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>88, 20</value>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -79,7 +79,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to gb.
|
||||
/// Looks up a localized string similar to GB.
|
||||
/// </summary>
|
||||
internal static string GBName {
|
||||
get {
|
||||
@@ -88,7 +88,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to gb/s.
|
||||
/// Looks up a localized string similar to GB/s.
|
||||
/// </summary>
|
||||
internal static string GBPerSecond {
|
||||
get {
|
||||
@@ -97,7 +97,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to kb.
|
||||
/// Looks up a localized string similar to kB.
|
||||
/// </summary>
|
||||
internal static string KBName {
|
||||
get {
|
||||
@@ -106,7 +106,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to kb/s.
|
||||
/// Looks up a localized string similar to kB/s.
|
||||
/// </summary>
|
||||
internal static string KBPerSecond {
|
||||
get {
|
||||
@@ -115,7 +115,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to mb.
|
||||
/// Looks up a localized string similar to MB.
|
||||
/// </summary>
|
||||
internal static string MBName {
|
||||
get {
|
||||
@@ -124,7 +124,7 @@ namespace Duplicati.GUI.HelperControls.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to mb/s.
|
||||
/// Looks up a localized string similar to MB/s.
|
||||
/// </summary>
|
||||
internal static string MBPerSecond {
|
||||
get {
|
||||
|
||||
@@ -124,21 +124,21 @@
|
||||
<value>bytes/s</value>
|
||||
</data>
|
||||
<data name="GBName" xml:space="preserve">
|
||||
<value>gb</value>
|
||||
<value>GB</value>
|
||||
</data>
|
||||
<data name="GBPerSecond" xml:space="preserve">
|
||||
<value>gb/s</value>
|
||||
<value>GB/s</value>
|
||||
</data>
|
||||
<data name="KBName" xml:space="preserve">
|
||||
<value>kb</value>
|
||||
<value>kB</value>
|
||||
</data>
|
||||
<data name="KBPerSecond" xml:space="preserve">
|
||||
<value>kb/s</value>
|
||||
<value>kB/s</value>
|
||||
</data>
|
||||
<data name="MBName" xml:space="preserve">
|
||||
<value>mb</value>
|
||||
<value>MB</value>
|
||||
</data>
|
||||
<data name="MBPerSecond" xml:space="preserve">
|
||||
<value>mb/s</value>
|
||||
<value>MB/s</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
+40
-113
@@ -33,10 +33,10 @@ namespace Duplicati.GUI.HelperControls {
|
||||
this.miIncludeFileName = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miIncludeFileExt = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miIncludeFilePath = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExlude = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExclude = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFileName = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFileExt = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExludeFilePath = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.miExcludeFilePath = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
@@ -67,9 +67,9 @@ namespace Duplicati.GUI.HelperControls {
|
||||
//
|
||||
this.ctxSelection.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miInclude,
|
||||
this.miExlude});
|
||||
this.miExclude});
|
||||
this.ctxSelection.Name = "ctxSelection";
|
||||
this.ctxSelection.Size = new System.Drawing.Size(110, 48);
|
||||
resources.ApplyResources(this.ctxSelection, "ctxSelection");
|
||||
this.ctxSelection.Opened += new System.EventHandler(this.ctxSelection_Opened);
|
||||
//
|
||||
// miInclude
|
||||
@@ -79,60 +79,52 @@ namespace Duplicati.GUI.HelperControls {
|
||||
this.miIncludeFileExt,
|
||||
this.miIncludeFilePath});
|
||||
this.miInclude.Name = "miInclude";
|
||||
this.miInclude.Size = new System.Drawing.Size(109, 22);
|
||||
this.miInclude.Text = "Include";
|
||||
resources.ApplyResources(this.miInclude, "miInclude");
|
||||
//
|
||||
// miIncludeFileName
|
||||
//
|
||||
this.miIncludeFileName.Name = "miIncludeFileName";
|
||||
this.miIncludeFileName.Size = new System.Drawing.Size(195, 22);
|
||||
resources.ApplyResources(this.miIncludeFileName, "miIncludeFileName");
|
||||
this.miIncludeFileName.Tag = "1";
|
||||
this.miIncludeFileName.Text = "Add filename filer";
|
||||
this.miIncludeFileName.Click += new System.EventHandler(this.miIncludeFileName_Click);
|
||||
//
|
||||
// miIncludeFileExt
|
||||
//
|
||||
this.miIncludeFileExt.Name = "miIncludeFileExt";
|
||||
this.miIncludeFileExt.Size = new System.Drawing.Size(195, 22);
|
||||
this.miIncludeFileExt.Text = "Add file extension filter";
|
||||
resources.ApplyResources(this.miIncludeFileExt, "miIncludeFileExt");
|
||||
this.miIncludeFileExt.Click += new System.EventHandler(this.miIncludeFileExt_Click);
|
||||
//
|
||||
// miIncludeFilePath
|
||||
//
|
||||
this.miIncludeFilePath.Name = "miIncludeFilePath";
|
||||
this.miIncludeFilePath.Size = new System.Drawing.Size(195, 22);
|
||||
this.miIncludeFilePath.Text = "File path";
|
||||
resources.ApplyResources(this.miIncludeFilePath, "miIncludeFilePath");
|
||||
//
|
||||
// miExlude
|
||||
// miExclude
|
||||
//
|
||||
this.miExlude.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miExclude.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.miExcludeFileName,
|
||||
this.miExcludeFileExt,
|
||||
this.miExludeFilePath});
|
||||
this.miExlude.Name = "miExlude";
|
||||
this.miExlude.Size = new System.Drawing.Size(109, 22);
|
||||
this.miExlude.Text = "Exlude";
|
||||
this.miExcludeFilePath});
|
||||
this.miExclude.Name = "miExclude";
|
||||
resources.ApplyResources(this.miExclude, "miExclude");
|
||||
//
|
||||
// miExcludeFileName
|
||||
//
|
||||
this.miExcludeFileName.Name = "miExcludeFileName";
|
||||
this.miExcludeFileName.Size = new System.Drawing.Size(195, 22);
|
||||
this.miExcludeFileName.Text = "Add filename filter";
|
||||
resources.ApplyResources(this.miExcludeFileName, "miExcludeFileName");
|
||||
this.miExcludeFileName.Click += new System.EventHandler(this.addFilenameFilterToolStripMenuItem_Click);
|
||||
//
|
||||
// miExcludeFileExt
|
||||
//
|
||||
this.miExcludeFileExt.Name = "miExcludeFileExt";
|
||||
this.miExcludeFileExt.Size = new System.Drawing.Size(195, 22);
|
||||
this.miExcludeFileExt.Text = "Add file extension filter";
|
||||
resources.ApplyResources(this.miExcludeFileExt, "miExcludeFileExt");
|
||||
this.miExcludeFileExt.Click += new System.EventHandler(this.addFileExtensionFilterToolStripMenuItem1_Click);
|
||||
//
|
||||
// miExludeFilePath
|
||||
// miExcludeFilePath
|
||||
//
|
||||
this.miExludeFilePath.Name = "miExludeFilePath";
|
||||
this.miExludeFilePath.Size = new System.Drawing.Size(195, 22);
|
||||
this.miExludeFilePath.Text = "File Path";
|
||||
this.miExludeFilePath.Click += new System.EventHandler(this.addFilePathFilerToolStripMenuItem_Click);
|
||||
this.miExcludeFilePath.Name = "miExcludeFilePath";
|
||||
resources.ApplyResources(this.miExcludeFilePath, "miExcludeFilePath");
|
||||
this.miExcludeFilePath.Click += new System.EventHandler(this.addFilePathFilerToolStripMenuItem_Click);
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
@@ -151,48 +143,30 @@ namespace Duplicati.GUI.HelperControls {
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(9, 272);
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(37, 13);
|
||||
this.label1.TabIndex = 2;
|
||||
this.label1.Text = "Filters:";
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.btnCancel, "btnCancel");
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(397, 418);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnCancel.TabIndex = 3;
|
||||
this.btnCancel.Text = "Cancel";
|
||||
this.btnCancel.UseVisualStyleBackColor = true;
|
||||
this.btnCancel.Click += new System.EventHandler(this.btnClose_Click);
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.label2.AutoSize = true;
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.ForeColor = System.Drawing.Color.DimGray;
|
||||
this.label2.Location = new System.Drawing.Point(12, 242);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(212, 13);
|
||||
this.label2.TabIndex = 4;
|
||||
this.label2.Text = "Use context menu to add and remove filters";
|
||||
//
|
||||
// lvFilters
|
||||
//
|
||||
this.lvFilters.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.lvFilters, "lvFilters");
|
||||
this.lvFilters.ContextMenuStrip = this.ctxFilters;
|
||||
this.lvFilters.FullRowSelect = true;
|
||||
this.lvFilters.Location = new System.Drawing.Point(12, 289);
|
||||
this.lvFilters.Name = "lvFilters";
|
||||
this.lvFilters.Size = new System.Drawing.Size(461, 123);
|
||||
this.lvFilters.SmallImageList = this.imageList;
|
||||
this.lvFilters.TabIndex = 5;
|
||||
this.lvFilters.UseCompatibleStateImageBehavior = false;
|
||||
this.lvFilters.View = System.Windows.Forms.View.List;
|
||||
//
|
||||
@@ -201,13 +175,12 @@ namespace Duplicati.GUI.HelperControls {
|
||||
this.ctxFilters.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.removeFilterToolStripMenuItem});
|
||||
this.ctxFilters.Name = "ctxFilters";
|
||||
this.ctxFilters.Size = new System.Drawing.Size(147, 26);
|
||||
resources.ApplyResources(this.ctxFilters, "ctxFilters");
|
||||
//
|
||||
// removeFilterToolStripMenuItem
|
||||
//
|
||||
this.removeFilterToolStripMenuItem.Name = "removeFilterToolStripMenuItem";
|
||||
this.removeFilterToolStripMenuItem.Size = new System.Drawing.Size(146, 22);
|
||||
this.removeFilterToolStripMenuItem.Text = "Remove Filter";
|
||||
resources.ApplyResources(this.removeFilterToolStripMenuItem, "removeFilterToolStripMenuItem");
|
||||
this.removeFilterToolStripMenuItem.Click += new System.EventHandler(this.removeFilterToolStripMenuItem_Click);
|
||||
//
|
||||
// scanWorker
|
||||
@@ -218,60 +191,37 @@ namespace Duplicati.GUI.HelperControls {
|
||||
//
|
||||
// lbTotalSize
|
||||
//
|
||||
this.lbTotalSize.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.lbTotalSize.ImageAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||
this.lbTotalSize.Location = new System.Drawing.Point(324, 242);
|
||||
resources.ApplyResources(this.lbTotalSize, "lbTotalSize");
|
||||
this.lbTotalSize.Name = "lbTotalSize";
|
||||
this.lbTotalSize.Size = new System.Drawing.Size(148, 18);
|
||||
this.lbTotalSize.TabIndex = 11;
|
||||
this.lbTotalSize.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(12, 11);
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(101, 13);
|
||||
this.label3.TabIndex = 12;
|
||||
this.label3.Text = "Files to be included:";
|
||||
//
|
||||
// tbSearch
|
||||
//
|
||||
this.tbSearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tbSearch.Location = new System.Drawing.Point(321, 4);
|
||||
resources.ApplyResources(this.tbSearch, "tbSearch");
|
||||
this.tbSearch.Name = "tbSearch";
|
||||
this.tbSearch.Size = new System.Drawing.Size(156, 20);
|
||||
this.tbSearch.TabIndex = 13;
|
||||
this.tbSearch.TextChanged += new System.EventHandler(this.tbSearch_TextChanged);
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
this.btnSearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSearch.Image = ((System.Drawing.Image)(resources.GetObject("btnSearch.Image")));
|
||||
this.btnSearch.Location = new System.Drawing.Point(291, 1);
|
||||
resources.ApplyResources(this.btnSearch, "btnSearch");
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.Size = new System.Drawing.Size(25, 25);
|
||||
this.btnSearch.TabIndex = 14;
|
||||
this.btnSearch.TabStop = false;
|
||||
//
|
||||
// btnClearSearch
|
||||
//
|
||||
this.btnClearSearch.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.btnClearSearch, "btnClearSearch");
|
||||
this.btnClearSearch.BackColor = System.Drawing.SystemColors.Window;
|
||||
this.btnClearSearch.Image = ((System.Drawing.Image)(resources.GetObject("btnClearSearch.Image")));
|
||||
this.btnClearSearch.Location = new System.Drawing.Point(458, 6);
|
||||
this.btnClearSearch.Name = "btnClearSearch";
|
||||
this.btnClearSearch.Size = new System.Drawing.Size(16, 16);
|
||||
this.btnClearSearch.TabIndex = 15;
|
||||
this.btnClearSearch.TabStop = false;
|
||||
this.btnClearSearch.Visible = false;
|
||||
this.btnClearSearch.Click += new System.EventHandler(this.btnClearSearch_Click);
|
||||
//
|
||||
// lvFiles
|
||||
//
|
||||
this.lvFiles.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.lvFiles, "lvFiles");
|
||||
this.lvFiles.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.chFile,
|
||||
this.chFileExt,
|
||||
@@ -279,11 +229,8 @@ namespace Duplicati.GUI.HelperControls {
|
||||
this.chPath});
|
||||
this.lvFiles.ContextMenuStrip = this.ctxSelection;
|
||||
this.lvFiles.FullRowSelect = true;
|
||||
this.lvFiles.Location = new System.Drawing.Point(15, 32);
|
||||
this.lvFiles.Name = "lvFiles";
|
||||
this.lvFiles.Size = new System.Drawing.Size(462, 205);
|
||||
this.lvFiles.SmallImageList = this.imageList;
|
||||
this.lvFiles.TabIndex = 16;
|
||||
this.lvFiles.UseCompatibleStateImageBehavior = false;
|
||||
this.lvFiles.View = System.Windows.Forms.View.Details;
|
||||
this.lvFiles.VirtualMode = true;
|
||||
@@ -293,55 +240,39 @@ namespace Duplicati.GUI.HelperControls {
|
||||
//
|
||||
// chFile
|
||||
//
|
||||
this.chFile.Text = "Filename";
|
||||
this.chFile.Width = 116;
|
||||
resources.ApplyResources(this.chFile, "chFile");
|
||||
//
|
||||
// chFileExt
|
||||
//
|
||||
this.chFileExt.Text = "Ext";
|
||||
this.chFileExt.Width = 47;
|
||||
resources.ApplyResources(this.chFileExt, "chFileExt");
|
||||
//
|
||||
// chSize
|
||||
//
|
||||
this.chSize.Text = "Size";
|
||||
this.chSize.Width = 76;
|
||||
resources.ApplyResources(this.chSize, "chSize");
|
||||
//
|
||||
// chPath
|
||||
//
|
||||
this.chPath.Text = "Path";
|
||||
this.chPath.Width = 192;
|
||||
resources.ApplyResources(this.chPath, "chPath");
|
||||
//
|
||||
// lbLoading
|
||||
//
|
||||
this.lbLoading.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.lbLoading, "lbLoading");
|
||||
this.lbLoading.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.lbLoading.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lbLoading.Location = new System.Drawing.Point(28, 98);
|
||||
this.lbLoading.Name = "lbLoading";
|
||||
this.lbLoading.Size = new System.Drawing.Size(427, 36);
|
||||
this.lbLoading.TabIndex = 17;
|
||||
this.lbLoading.Text = "Scanning files, please wait....";
|
||||
this.lbLoading.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// btnOK
|
||||
//
|
||||
this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
resources.ApplyResources(this.btnOK, "btnOK");
|
||||
this.btnOK.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnOK.Location = new System.Drawing.Point(312, 418);
|
||||
this.btnOK.Name = "btnOK";
|
||||
this.btnOK.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnOK.TabIndex = 18;
|
||||
this.btnOK.Text = "OK";
|
||||
this.btnOK.UseVisualStyleBackColor = true;
|
||||
this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
|
||||
//
|
||||
// TestSearchSelection
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.ClientSize = new System.Drawing.Size(486, 453);
|
||||
this.Controls.Add(this.btnOK);
|
||||
this.Controls.Add(this.lbLoading);
|
||||
this.Controls.Add(this.label3);
|
||||
@@ -354,14 +285,10 @@ namespace Duplicati.GUI.HelperControls {
|
||||
this.Controls.Add(this.lbTotalSize);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MinimizeBox = false;
|
||||
this.MinimumSize = new System.Drawing.Size(400, 400);
|
||||
this.Name = "TestSearchSelection";
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Test Search Selection";
|
||||
this.Load += new System.EventHandler(this.dlgTestSearchSelection_Load);
|
||||
this.ctxSelection.ResumeLayout(false);
|
||||
this.ctxFilters.ResumeLayout(false);
|
||||
@@ -379,7 +306,7 @@ namespace Duplicati.GUI.HelperControls {
|
||||
private System.Windows.Forms.ToolStripMenuItem miInclude;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFileName;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFileExt;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExlude;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExclude;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFileName;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFileExt;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
@@ -389,7 +316,7 @@ namespace Duplicati.GUI.HelperControls {
|
||||
private System.ComponentModel.BackgroundWorker scanWorker;
|
||||
private System.Windows.Forms.ContextMenuStrip ctxFilters;
|
||||
private System.Windows.Forms.ToolStripMenuItem removeFilterToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExludeFilePath;
|
||||
private System.Windows.Forms.ToolStripMenuItem miExcludeFilePath;
|
||||
private System.Windows.Forms.Label lbTotalSize;
|
||||
private System.Windows.Forms.ToolStripMenuItem miIncludeFilePath;
|
||||
private System.Windows.Forms.Label label3;
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace Duplicati.GUI.HelperControls {
|
||||
long iA = (_ascending ? a : b).Size;
|
||||
long iB = (_ascending ? b : a).Size;
|
||||
|
||||
return Convert.ToInt32(iA - iB);
|
||||
return Math.Sign(iA - iB);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -371,7 +371,7 @@ namespace Duplicati.GUI.HelperControls {
|
||||
miExcludeFileExt.Text = fileExt;
|
||||
|
||||
// Add Path items
|
||||
miExludeFilePath.DropDownItems.Clear();
|
||||
miExcludeFilePath.DropDownItems.Clear();
|
||||
miIncludeFilePath.DropDownItems.Clear();
|
||||
|
||||
string fullpath = Utility.AppendDirSeparator(itm.Path);
|
||||
@@ -395,14 +395,14 @@ namespace Duplicati.GUI.HelperControls {
|
||||
|
||||
string filter = string.Format(@"*\{0}", fullpath.Substring(s.Length));
|
||||
miIncludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = true;
|
||||
miExludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
miExcludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
}
|
||||
|
||||
foreach (string s in folderlist)
|
||||
{
|
||||
string filter = string.Format(@"{0}", s);
|
||||
miIncludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = true;
|
||||
miExludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
miExcludeFilePath.DropDownItems.Add(filter, null, FilterFilePath_Click).Tag = false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -120,6 +120,64 @@
|
||||
<metadata name="ctxSelection.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="miIncludeFileName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miIncludeFileName.Text" xml:space="preserve">
|
||||
<value>Add filename filer</value>
|
||||
</data>
|
||||
<data name="miIncludeFileExt.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miIncludeFileExt.Text" xml:space="preserve">
|
||||
<value>Add file extension filter</value>
|
||||
</data>
|
||||
<data name="miIncludeFilePath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miIncludeFilePath.Text" xml:space="preserve">
|
||||
<value>File path</value>
|
||||
</data>
|
||||
<data name="miInclude.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>109, 22</value>
|
||||
</data>
|
||||
<data name="miInclude.Text" xml:space="preserve">
|
||||
<value>Include</value>
|
||||
</data>
|
||||
<data name="miExcludeFileName.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miExcludeFileName.Text" xml:space="preserve">
|
||||
<value>Add filename filter</value>
|
||||
</data>
|
||||
<data name="miExcludeFileExt.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miExcludeFileExt.Text" xml:space="preserve">
|
||||
<value>Add file extension filter</value>
|
||||
</data>
|
||||
<data name="miExcludeFilePath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>195, 22</value>
|
||||
</data>
|
||||
<data name="miExcludeFilePath.Text" xml:space="preserve">
|
||||
<value>File Path</value>
|
||||
</data>
|
||||
<data name="miExclude.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>109, 22</value>
|
||||
</data>
|
||||
<data name="miExclude.Text" xml:space="preserve">
|
||||
<value>Exclude</value>
|
||||
</data>
|
||||
<data name="ctxSelection.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>110, 48</value>
|
||||
</data>
|
||||
<data name=">>ctxSelection.Name" xml:space="preserve">
|
||||
<value>ctxSelection</value>
|
||||
</data>
|
||||
<data name=">>ctxSelection.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>120, 17</value>
|
||||
</metadata>
|
||||
@@ -127,143 +185,353 @@
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACy
|
||||
HQAAAk1TRnQBSQFMAgEBCgEAAbQBAAG0AQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABMAMAAQEBAAEgBgABMP8A/wD/ABkAASgBpAEoAf8BKAGkASgB/wwAAS0BmgEuAfYBKAGkASgB/wEq
|
||||
AaIBKwH9ASgBpAEoAf8BIgEmASIBMQgAAwgBCwEoAaQBKAH/ASgBpAEoAf8EAAIoAaQB/wIoAaQB/wwA
|
||||
Ai0BnQH2AigBpAH/AioBowH9AigBpAH/AiIBJgExCAACCAEJAQsCKAGkAf8CKAGkAf+EAAFCAcgBZQH/
|
||||
AU0B2AF+Af8IAAEmASsBJgE4AUYB0QFpAf8BPgHFAVcB/wEvAZYBMwHuAU0B3AF4Af8BKgGnAS0B/wgA
|
||||
ASoBogErAf0BWwHrAZ8B/wEoAaQBKAH/BAACSgHIAf8CWwHaAf8IAAImASsBOAJQAdMB/wJFAcYB/wEv
|
||||
ATEBmAHuAlkB3QH/AisBpwH/CAACKgGjAf0CbQHsAf8CKQGiAf6EAAFBAccBYgH/AUwB1gF5Af8IAAEo
|
||||
AaQBKAH/AUoB2QFxAf8BMAGYATMB8QQAAS0BrAE0Af8BSwHaAXMB/wE6AYcBPQHOAUABYQFEAYwBUgHg
|
||||
AYgB/wE8AcABVgH/AQwBDQEMARAEAAJKAcgB/wJaAdgB/wgAAigBpAH/AVUBVAHaAf8BMAExAZoB8QQA
|
||||
Ai8BrQH/AlcB3AH/AToBPQGIAc4BQAFCAWEBjAJiAeMB/wJEAcIB/wIMAQ0BEIQAAUEBxgFhAf8BSwHV
|
||||
AXcB/wEpATEBKQI/AXQBRQGvAUYB0gFoAf8BOgHAAU0B/wEOAQ8BDgETBAABNQFCATcBWgFBAcwBXgH/
|
||||
AT0BxQFWAf8BNQG3AUUB/wFSAeABhwH/AUEBbQFFAaEIAAJKAcgB/wJYAdcB/wIpATECPwFCAXYBrwJP
|
||||
AdQB/wI/AcIB/wIOAQ8BEwQAATUBNgFDAVoCSgHOAf8CRQHHAf8COgG4Af8CYgHjAf8BQQFEAW8BoYgA
|
||||
AUABxgFgAf8BVQHlAY8B/wFRAeABhAH/AU0B3AF4Af8BQwHOAWAB/wE0AZMBNwHmDAABMgGWATUB6wFL
|
||||
AdkBcgH/AU8B3gF9Af8BKAGkASgB/wwAAkoBxwH/AmcB5wH/AmAB4gH/AlkB3gH/AUwBSwHQAf8BNAE2
|
||||
AZQB5gwAATIBNQGXAesCVwHbAf8CXQHgAf8CKAGkAf+MAAFAAcYBYAH/AUoB1QF1Af8BKAGkASgB/wEo
|
||||
AaUBKQH/AUcB1QFpAf8BOAG/AUoB/wMJAQwIAAE/AVwBRAGFAUcB1AFqAf8BTwHeAXwB/wEtAZ4BLwH3
|
||||
DAACSgHHAf8CVwHWAf8CKAGkAf8CKQGlAf8BUgFRAdcB/wI+AcEB/wMJAQwIAAE/AUEBXgGFAlIB1gH/
|
||||
Al0B4AH/AS0BLgGfAfeMAAFBAcYBYAH/AUoB1QF2Af8IAAExAbMBPAH/AUYB1QFmAf8BNgFGATgBXwQA
|
||||
AwQBBgExAbMBPAH/AUoB2AFwAf8BOwHBAVMB/wFOAdsBfQH/AT0BVgFBAXkIAAJKAcgB/wJYAdcB/wgA
|
||||
AjUBtAH/AlAB1wH/ATYBNwFHAV8EAAMEAQYCNQG0Af8CVwHbAf8CQwHDAf8CXQHeAf8BPQFAAVcBeYgA
|
||||
AUEBxwFiAf8BSwHWAXgB/wFBAXEBQQGfAToBhgFAAdABQwHOAWMB/wFGAdMBZwH/ASYBKwEmATgEAAEp
|
||||
AZ0BKwH7AUoB2QFxAf8BKAGkASgB/wE/AXgBRAG0AVQB4wGMAf8BNQG2AUUB/wMDAQQEAAJKAcgB/wJa
|
||||
AdgB/wJBAXEBnwE6AT4BiQHQAk4B0AH/AlEB1QH/AiYBKwE4BAABKQEqAZ4B+wJXAdwB/wIoAaQB/wE/
|
||||
AUIBegG0AmYB5gH/AjoBtwH/AwMBBIQAAUIByAFkAf8BWQHpAZkB/wFVAeUBjwH/AVIB4QGGAf8BTgHc
|
||||
AXsB/wEpAaABKgH+BAABPwFdAUMBhAFIAdYBbgH/ATgBvAFLAf8BDgEPAQ4BEwQAASgBpQEpAf8BWwHq
|
||||
AZ0B/wEqAZ0BKwH5BAACSgHIAf8CbAHrAf8CaAHoAf8CYwHkAf8CXQHgAf8CKQGiAf4EAAE/AUEBXgGE
|
||||
AlUB2QH/Aj8BvgH/Ag4BDwETBAACKQGlAf8CbQHsAf8BKgErAZ4B+YQAAT4BgQE+AbsBPgGEAT4BvwE+
|
||||
AYQBPgG/AT4BfAFDAbsBOAFKAToBZQgAATEBPQEzAVEBPgGCAT4BvwE9AVYBQAF4CAABEQESAREBFwE+
|
||||
AYIBPgG/AUEBdgFCAawEAAI+AYEBuwI+AYQBvwI+AYQBvwE+AUABfwG7ATgBOQFKAWUIAAExATIBPQFR
|
||||
Aj4BggG/AT0BPwFXAXgIAAIRARIBFwI+AYIBvwJBAXgBrP8A/wD/AIoAAQEDIQEwAyMBMwMjATMDIQEw
|
||||
DAADHwEsAyMBMwMjATMDIwEzAyMBMwMjATMDIQEwDAADIwEzAyMBMxAAAx8BLAMjATMDIwEzAyEBMFsA
|
||||
BAEBAgMDAQQDBQQHAQkDBgEIAwQBBgMDAQQDAQECAwABARAAAwIBAwGGAW8BUwHxAbcBgwE7Af8BtwGD
|
||||
ATwB/wGJAW8BTgHyDAABWwFjAVsB4QFBAYUBQwH/AUIBhAFCAf8BQgGEAUIB/wFDAYQBQwH/AUMBhQFF
|
||||
Af8BVwFyAVkB8ggAAyMBMwG3AYMBPAH/AbcBgwE8Af8DIwEzDAABWwFjAVsB4QFBAYUBRAH/AUIBhQFE
|
||||
Af8BVwFyAVkB8lwAAwQBBQMJAQwDDQERAzEBTgMaASQDDwEUAw0BEQMJAQwDBAEFFAABtwGCATsB/wH7
|
||||
Ac4BiAH/AfkBygGAAf8BuQGDATsB/wwAAUABhAFDAf8BngHoAckB/wFIAcgBkgH/AUoByAGTAf8BSwHI
|
||||
AZQB/wFNAcwBmQH/AUIBhQFEAf8EAAMjATMBtQGBATkB/wH0AcQBcgH/AfQBxAFyAf8BtQGBATkB/wMj
|
||||
ATMIAAE/AYQBQwH/AZ4B6QHKAf8BSwHMAZgB/wFCAYUBRAH/ZAADNwFbA5IB9ANaAcUDAQECIAABtgGB
|
||||
ATkB/wH0AcsBigH/AfEBwAFtAf8BuAGCAToB/wwAAT8BhAFCAf8BuwHqAd0B/wG4AeYB2AH/AbkB5gHY
|
||||
Af8BugHnAdkB/wG9AesB3gH/AUABhQFDAf8DIwEzAbUBgQE5Af8B8gHBAW4B/wHuAbwBagH/Ae4BvQFr
|
||||
Af8B8gHBAW4B/wG4AYEBOQH/AyMBMwQAAT0BhAFCAf8BvAHrAd4B/wG9AesB3wH/AUABhQFDAf9gAAMW
|
||||
AR4BagFrAWoB4gG8AcMBwAH/AakBrwGtAfsDTAGQIAABtgGBATkB/wHxAcoBkAH/AesBuAFlAf8BuAGC
|
||||
AToB/wwAA1QBrgE/AYQBQgH/AT0BggE/Af8BPQGCAT8B/wE9AYIBPwH/AT8BhAFCAf8BVwFaAVcBxQG4
|
||||
AYQBPAH/AfcBzgGPAf8B8gHJAYkB/wHtAcIBggH/AesBuQFnAf8B8gHJAYoB/wH5Ac4BjwH/AcIBhAE7
|
||||
Af8EAAFUAVYBVAGrAT8BhAFCAf8BPwGEAUIB/wFWAVgBVgHBXAADAwEEA10BygHDAckBxgH/AbYBvQG6
|
||||
Af8BugHBAb4B/wGLAY4BiwHxAy4BSBwAAbYBgQE4Af8B7wHNAZgB/wHmAbIBXgH/AbgBggE7Af8MAAMZ
|
||||
BCMBMwMjATMDIwEzAxgBIggAAVwBWgFXAcUBtwGCAToB/wGzAXUBNQH/AfAByAGOAf8B6QG4AWQB/wGz
|
||||
AXYBNwH/AbgBggE6Af8CWwFZAcQEAAMZBCMBMwMjATMDIwEzAxkBIxMAAQEDAgEDAwUBBwMIBAsBDwMN
|
||||
ARIDDQESAwoBDgMIAQsDBQEHAwIBAxwAA1ABmwG0AbcBtgH8AbYBvQG6Af8BuwHCAb8B/wHHAc0BywH/
|
||||
AdUB2QHXAf8DcAHkAw8BFBgAAbYBgQE4Af8B7gHPAaEB/wHgAawBVgH/AbkBgwE8Af8MAAFWAVkBVgG+
|
||||
AUEBhQFDAf8BQgGEAUIB/wFDAYUBRQH/AVcBWgFXAb0QAAG2AYABOAH/AfABywGWAf8B5wG0AWEB/wG2
|
||||
AYIBOgH/DAABVwFaAVcBvQFAAYUBQwH/AUIBhAFCAf8BQwGFAUUB/wFXAVkBVwG/HwABAQMEAQUDBgEI
|
||||
AwYBCAMFAQcDAgEDIAADNQFXAYsBjgGLAfEBuQHAAb0B/wG9AcMBwAH/AcMByAHGAf8BxwHNAcsB/wHN
|
||||
AdIB0AH/AdsB3gHdAf8DWwHHAwABARQAAbYBgQE3Af8B7wHTAaoB/wHaAaUBTwH/AbkBgwE8Af8MAAE/
|
||||
AYQBQwH/AZ4B6AHJAf8BSQHJAZMB/wFNAcwBmAH/AUIBhQFEAf8QAAG2AYEBOAH/Ae8BzgGdAf8B5AGx
|
||||
AVwB/wG4AYIBOwH/DAABPgGFAUMB/wGeAegByQH/AUkByQGTAf8BTQHMAZgB/wFCAYUBRAH/DAADSAGD
|
||||
A2MB1QNjAdUDYwHUA18B0wNfAdMDXwHSA2AB0QNgAdEDYAHRA2AB0QNfAdIDXwHRAxIBGQwAAxQBGwFr
|
||||
AmwB4AG+AcQBwQH/AbcBvgG7Af8BuwHCAb8B/wHAAcYBxAH/AcUBywHJAf8BywHQAc0B/wHQAdQB0gH/
|
||||
Ab8BwgHBAfwDSgGNFAABtgGBATcB/wHwAdkBtAH/AdYBnwFIAf8BuAGEATwB/wwAAT0BhAFCAf8BuwHq
|
||||
Ad0B/wG5AecB2QH/Ab0B6wHeAf8BQAGFAUMB/xAAAbYBgQE3Af8B8AHRAaQB/wHgAawBVgH/AbgBgwE7
|
||||
Af8MAAE/AYQBQgH/AbsB6gHdAf8BuQHnAdkB/wG9AesB3gH/AUABhQFDAf8MAAMdASkDhAHuAdsB3gHd
|
||||
Af8B0gHXAdUB/wHOAdMB0QH/AckBzgHMAf8BxQHKAcgB/wHAAcYBwwH/Ab0BwwHBAf8BvQHDAcEB/wG9
|
||||
AcMBwQH/AcwB0QHPAf8DVwG3DAADAgEDA1wByQHFAcoByAH/AbcBvgG7Af8BtwG+AbsB/wG5AcABvQH/
|
||||
Ab4BxQHCAf8BwwHJAcYB/wHJAc4BzAH/Ac0B0gHQAf8B1QHZAdcB/wOVAfMDLAFDCAADIQEwAyMBMwG3
|
||||
AYEBNwH/Ae8B2wG9Af8B0AGaAUEB/wG4AYQBPQH/AyMBMwMhATAEAAFTAVUBUwGtAT4BhAFCAf8BPQGC
|
||||
AUAB/wE/AYQBQgH/AVQBbAFUAe4QAAG2AYEBNwH/Ae8B1AGtAf8B3QGoAVIB/wG5AYMBPAH/DAADVAGu
|
||||
AT8BhAFCAf8BPQGCAUAB/wE/AYQBQgH/AVkBawFZAesQAAM/AWwBsAKzAfoB0gHWAdQB/wHMAdEBzwH/
|
||||
AccBzAHKAf8BwgHIAcUB/wG9AcMBwAH/AbcBvgG7Af8BtwG+AbsB/wHBAccBxQH/A2YB2gMKAQ4MAANM
|
||||
AZMBtQG5AbcB/AHFAcsByAH/AcUBywHIAf8BxQHLAcgB/wHFAcsByAH/AcgBzgHLAf8BzAHRAc4B/wHP
|
||||
AdQB0gH/AdMB1wHVAf8B1gHaAdgB/wHfAeIB4QH/A2oB4gMDAQQEAAGIAW8BTgHyAbkBhAE7Af8BtwGB
|
||||
ATgB/wHaAbcBhwH/AcYBjwE9Af8BuAGDATwB/wG6AYQBOwH/AYsBbwFTAfEEAAMYASIDIwEzAyMBMwMY
|
||||
ASIUAAG2AYEBNwH/AfAB2AG1Af8B2QGjAUwB/wG5AYMBPAH/DAADGQQjATMDIwEzAyMBMwMjATMDIwEz
|
||||
AxkBIwwAA1QBrgHMAdABzgH+Ac4B0wHRAf8ByQHOAcwB/wHEAcoBxwH/Ab8BxQHCAf8BugHAAb4B/wG6
|
||||
AcEBvgH/A38B7QMoATwQAAMgAS4DPwFsAz8BbAM/AWwDPgFrAz4BagM+AWoDPgFqAz0BaQM9AWkDPQFo
|
||||
Az0BaAM7AWQDBAEGBAABuQGEATwB/wHoAdEBrAH/AcYBjwE2Af8BxgGPATgB/wHGAZABOQH/AcYBjwE2
|
||||
Af8B7AHVAbIB/wHDAYQBOgH/BAABVgFYAVYBvAFBAYUBRAH/AUIBhQFEAf8BVwFaAVcBvRQAAbYBgAE2
|
||||
Af8B8QHcAbwB/wHVAZ8BRwH/AbkBhAE8Af8MAAFWAVkBVgG+AUEBhQFDAf8BQgGEAUIB/wFCAYQBQgH/
|
||||
AUMBhAFDAf8BQwGFAUUB/wFYAVoBWAHADAADBQEHA2MC2QHcAdsB/wHLAdABzgH/AcYBywHJAf8BvQHE
|
||||
AcEB/wG4Ab8BvAH/AaYBqQGoAfoDSAGDVAABuAGCATgB/wHoAdABrQH/AcIBiwEwAf8BwgGLATAB/wHo
|
||||
AdABrQH/AbkBggE4Af8IAAE+AYUBQwH/AZ4B6QHKAf8BSwHMAZgB/wFCAYUBRAH/FAABtwGBATYB/wHw
|
||||
AdsBuwH/AdABmQFAAf8BugGDATsB/wwAAUABhAFDAf8BngHoAckB/wFIAcgBkgH/AUoByAGTAf8BSwHI
|
||||
AZQB/wFNAcwBmQH/AUIBhQFEAf8QAAMcAScBfwGAAX8B6wHLAdABzgH/AbkBwAG9Af8BtgG9AboB/wHF
|
||||
AcoByAH/A1kBv1wAAbcBgQE4Af8B6AHRAbAB/wHoAdEBsAH/AbgBgQE4Af8MAAE+AYQBQgH/AbwB6wHe
|
||||
Af8BvQHrAd8B/wFAAYUBQwH/FAABuAGCATgB/wHvAdsBuwH/AeoB0AGpAf8BugGDAToB/wwAAT8BhAFC
|
||||
Af8BuwHqAd0B/wG4AeYB2AH/AbkB5gHYAf8BugHnAdkB/wG9AesB3gH/AUABhQFDAf8UAAM9AWgBkgGX
|
||||
AZQB9QG3Ab4BuwH/Ab4BxQHCAf8DZgHeAw0BEmAAAbgBgwE6Af8BuAGDAToB/xAAAVMBVQFTAbABPwGE
|
||||
AUIB/wE/AYQBQgH/AVYBawFYAe8UAAJVAVMBsAG4AYIBOQH/AbgBgwE5Af8CVQFTAbAMAAFTAVUBUwGw
|
||||
AT8BhAFCAf8BPQGCAT8B/wE9AYIBPwH/AT0BggE/Af8BPwGEAUIB/wFWAWsBWAHvGAADUgGpAbkBvgG8
|
||||
Af4BggGDAYIB7wMtAUbwAAMFAQcDWwHEA0YBfv8AdQADEwEaASwCKwFDASwCKwFDASwCKwFD8AADVQGy
|
||||
AUMB4gGMAf8BQgHhAYkB/wE0AcgBXAH/8AADVQGyATcB1AFXAf8BLgHLAT4B/wE0AckBXAH/sAADDAEQ
|
||||
Az0BaAMqAUA0AANVAbIBPwHaAWEB/wEvAcwBQAH/ATQBygFcAf9cAAMQARYDFwEgAxcBIAMXASADFwEg
|
||||
AxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADCQEMGAADCgEOAygBPANeAdUDTAGQAxMBGgMD
|
||||
AQQsAANVAbIBSwHjAYEB/wE7AdQBTQH/ATUBywFdAf9cAANIAYMDWQG/A1kBvwNZAb8DWQG/A1kBvwNZ
|
||||
Ab8DWQG/A1kBvwNZAb8DWQG/A1kBvwNZAb8DLgFIGAADNAFUA1kBxwNfAfMDXAHfA1ABmwMSARgcAAE+
|
||||
AX8BPAH+AT4B0wFjAf8BPgHUAWUB/wE/AdQBZQH/AT4B0wFkAf8BVwHqAYQB/wFKAd8BXQH/AUgB4wGQ
|
||||
Af8BNQHKAVsB/wEzAcgBWgH/ATIBxgFYAf8BMgHFAVgB/wMwAUwMAANIAYQCOgHTAf8CPAHUAf8CPgHU
|
||||
Af8CPwHTAf8CPgHQAf8COwHMAf8CNwHHAf8CMwHDAf8CMQHCAf8CMQHCAf8CIAGoAf8MAAM/AW0DWwHD
|
||||
A14B/wNeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNeAf8DXgH/A2QB5wNTAaUDKAE8EAADBAEGAy4BSANU
|
||||
AaYDXgH/A14B/wNeAf8DYQHhA0IBdAMdASoYAAFBAYEBQQH+AVMB2gFmAf8BXAHkAYEB/wFiAewBhgH/
|
||||
AWUB8AGKAf8BYgHvAYcB/wFZAeoBgQH/AUwB4QFgAf8BPwHXAVEB/wEzAc4BRAH/AS4BywE+Af8BQQHg
|
||||
AYcB/wMwAUwMAANIAYQCTAHXAf8CUwHWAf8CXwHkAf8CZwHuAf8CZwHwAf8CWwHpAf8CSAHcAf8COAHQ
|
||||
Af8CMwHMAf8CMwHMAf8CKgG3Af8QAAM6AWADXgH/A14B/wNeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNe
|
||||
Af8DWQG/AwwBEBQAAwwBEANZAb8DXgH/A14B/wNeAf8DXgH/A14B/wNeAf8DQAFwGAABQQGCAUEB/gFM
|
||||
AdYBgQH/AVQB3wGFAf8BWwHnAY0B/wFgAe4BkwH/AWUB7wGKAf8BYwHwAYgB/wFbAewBhgH/AVAB5wGC
|
||||
Af8BRQHeAWcB/wE7AdcBXAH/AUIB4QGKAf8DMAFMDAADSAGEAk0B2gH/AlQB3QH/Al4B6AH/AmQB8AH/
|
||||
AmQB8gH/AlsB7AH/AkwB4gH/Aj4B2AH/AjkB1AH/AjkB1AH/AioBtwH/EAADGgEkAz4BagNdAdcDXgH/
|
||||
A14B/wNeAf8DXgH/A14B/wNeAf8DVAGmAy4BSAMEAQYQAAMoATwDUwGlA2QB5wNeAf8DXgH/A14B/wNe
|
||||
Af8DXgH/A14B/wNcAckDQwF3AwcBChAAAVYCVQGxA1UBtQNVAbUDVQG1A1cB6AFgAe0BkwH/AWUB7wGJ
|
||||
Af8BQQHWAYEB/wNVAbUDVQG1A1UBtQNVAbUDGAEhDAADLQFGA1UBtQNVAbUDVQG1A1UBtQNVAbUDVQG1
|
||||
A1UBtQNVAbUDVQG1A1UBtQFWAlUBtBQAAwkBDANMAY8DXwHbA14B/wNeAf8DXgH/A18B8wNZAccDNAFU
|
||||
FAADHwEsA0kBiANeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNcAc8DMAFMAxIBGBwA
|
||||
A1UBsgFZAeUBiwH/AWAB6AGDAf8BQQHWAYEB/2QAAwEBAgMSARgDRwGCA14B/wNeAf8DXgH/A14B1QMo
|
||||
ATwDCgEOFAADTgGZA2AB6wNeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNeAf8DXgH/A14B/wNmAfcDYQHh
|
||||
AzQBVBwAA1UBsgFQAdsBgQH/AVcB3gGAAf8BQAHVAWkB/2wAAyYBOANMAZADZAHnA1oBwAM9AWgDDAEQ
|
||||
GAADNgFYA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAAyEBMBwA
|
||||
A1UBsgFHAdIBaAH/AUwB0wFfAf8BPwHUAWcB/3AAAxQBHANVAbUDQAFwdAADVAGrASIBuQEnAf8BIgG4
|
||||
AScB/wEgAbUBIwH/cAADBgEIAyMBNAMXASD/AP8AXgABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEA
|
||||
AQEFAAGAAQEWAAP/AQAE/wQABP8EAAT/BAABnAEYAZwBGAQAAZgBGAGYARgEAAGYAYABmAGABAABgAGB
|
||||
AYABgQQAAYEBwwGBAcMEAAGAAcMBgAHDBAABmAGBAZgBgQQABIAEAAGBAQgBgQEIBAABgwEYAYMBGAQA
|
||||
BP8EAAT/BAAE/wQAAYMBgAHnAYcC/wHgAQcBgwGAAcMBhwL/AfABBwHDAYABgQGHAv8B/AE/AcMBgAEA
|
||||
AYcC/wH4AT8BwwGAAQABhwL/AfABHwHDAYMBAAGDAcABBwHwAQ8BwwGDAcMBgwH4AR8B4AEHAcMBgwHD
|
||||
AYMBgAEBAcABBwHDAYMBwwGDAYABAwGAAQMBAAGDAcMBgwHAAQMBgAEBAQABhwHDAYAB4AEHAYABAQEA
|
||||
AYcBwwGAAeABDwL/AYEBhwHDAYAB8AEfAv8BwwGHAcMBgAH4AR8C/wHnAYcBwwGAAfwBPwb/AfwBfwr/
|
||||
AfwBPwb/AfwBPwb/AfwBPwT/AfwBfwH8AT8C/wGAAQEB+AEfAfwBPwL/AYABAQH4AR8BwAEBAcABAwGA
|
||||
AQEB4AEPAcABAQHAAQMBwAEDAeABDwHAAQEBwAEDAcABAwHAAQMBwAEBAcABAwHgAQ8BgAEBAfwBPwL/
|
||||
AeABDwGAAQEB/AE/Av8B+AEfAYABAQH8AT8C/wH8AX8C/wH8AT8C/wH8AX8S/ws=
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB4
|
||||
HQAAAk1TRnQBSQFMAgEBCgEAAbwBAAG8AQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABMAMAAQEBAAEgBgABMP8A/wD/ABkAAScBpAEnAf8BJwGkAScB/wwAAS8BlgEwAfYBJwGkAScB/wEr
|
||||
AaIBLAH9AScBpAEnAf8DIgExCAADCAELAScBpAEnAf8BJwGkAScB/wQAAicBpAH/AicBpAH/DAACLwGX
|
||||
AfYCJwGkAf8CKwGjAf0CJwGkAf8DIgExCAADCAELAicBpAH/AicBpAH/hAABQQHIAWQB/wFMAdgBfQH/
|
||||
CAADJgE4AUUB0QFoAf8BPQHFAVYB/wE1AY8BOQHuAUwB3AF3Af8BKQGnASwB/wgAASsBogEsAf0BWgHr
|
||||
AZ8B/wEnAaQBJwH/BAACSQHIAf8CWgHaAf8IAAMmATgCTwHTAf8CRAHGAf8BNQE3AZEB7gJYAd0B/wIq
|
||||
AacB/wgAAisBowH9AmwB7AH/AikBoAH+hAABQAHHAWEB/wFLAdYBeAH/CAABJwGkAScB/wFJAdkBcAH/
|
||||
ATQBkwE3AfEEAAEsAawBMwH/AUoB2gFyAf8BRgF4AUcBzgFHAVEBSAGMAVEB4AGIAf8BOwHAAVUB/wMM
|
||||
ARAEAAJJAcgB/wJZAdgB/wgAAicBpAH/AVQBUwHaAf8BNAE1AZUB8QQAAi4BrQH/AlYB3AH/AUYBRwF6
|
||||
Ac4BRwFIAVEBjAJhAeMB/wJDAcIB/wMMARCEAAFAAcYBYAH/AUoB1QF2Af8BKQEqASkBPwFKAWQBTQGv
|
||||
AUUB0gFnAf8BOQHAAUwB/wMOARMEAAE3ATgBNwFaAUABzAFdAf8BPAHFAVUB/wE0AbcBRAH/AVEB4AGH
|
||||
Af8BSgFdAUwBoQgAAkkByAH/AlcB1wH/AikBKgE/AUoBSwFlAa8CTgHUAf8CPgHCAf8DDgETBAACNwE4
|
||||
AVoCSQHOAf8CRAHHAf8COQG4Af8CYQHjAf8BSgFMAV0BoYgAAT8BxgFfAf8BVAHlAY8B/wFQAeABhAH/
|
||||
AUwB3AF3Af8BQgHOAV8B/wE9AYsBPwHmDAABOAGOATwB6wFKAdkBcQH/AU4B3gF8Af8BJwGkAScB/wwA
|
||||
AkkBxwH/AmYB5wH/Al8B4gH/AlgB3gH/AUsBSgHQAf8BPQE+AYsB5gwAATgBPAGPAesCVgHbAf8CXAHg
|
||||
Af8CJwGkAf+MAAE/AcYBXwH/AUkB1QF0Af8BJwGkAScB/wEnAaUBKAH/AUYB1QFoAf8BNwG/AUkB/wMJ
|
||||
AQwIAAFGAU0BRwGFAUYB1AFpAf8BTgHeAXsB/wExAZoBMwH3DAACSQHHAf8CVgHWAf8CJwGkAf8CKAGl
|
||||
Af8BUQFQAdcB/wI9AcEB/wMJAQwIAAJGAU4BhQJRAdYB/wJcAeAB/wExATIBmwH3jAABQAHGAV8B/wFJ
|
||||
AdUBdQH/CAABMAGzATsB/wFFAdUBZQH/ATgBOwE5AV8EAAMEAQYBMAGzATsB/wFJAdgBbwH/AToBwQFS
|
||||
Af8BTQHbAXwB/wFCAUgBQwF5CAACSQHIAf8CVwHXAf8IAAI0AbQB/wJPAdcB/wI4ATsBXwQAAwQBBgI0
|
||||
AbQB/wJWAdsB/wJCAcMB/wJcAd4B/wFCAUMBSAF5iAABQAHHAWEB/wFKAdYBdwH/AUoBXQFKAZ8BRQF4
|
||||
AUkB0AFCAc4BYgH/AUUB0wFmAf8DJgE4BAABKQGbASsB+wFJAdkBcAH/AScBpAEnAf8BSgFoAUwBtAFT
|
||||
AeMBjAH/ATQBtgFEAf8DAwEEBAACSQHIAf8CWQHYAf8CSgFdAZ8BRQFJAXsB0AJNAdAB/wJQAdUB/wMm
|
||||
ATgEAAEpASoBnAH7AlYB3AH/AicBpAH/AUoBTAFoAbQCZQHmAf8COQG3Af8DAwEEhAABQQHIAWMB/wFY
|
||||
AekBmQH/AVQB5QGPAf8BUQHhAYYB/wFNAdwBegH/ASkBngEqAf4EAAFGAU0BRwGEAUcB1gFtAf8BNwG8
|
||||
AUoB/wMOARMEAAEnAaUBKAH/AVoB6gGdAf8BKwGZAS0B+QQAAkkByAH/AmsB6wH/AmcB6AH/AmIB5AH/
|
||||
AlwB4AH/AikBoAH+BAACRgFOAYQCVAHZAf8CPgG+Af8DDgETBAACKAGlAf8CbAHsAf8BKwEtAZoB+YQA
|
||||
AUkBbwFJAbsBSQFyAUkBvwFJAXIBSQG/AUkBbAFLAbsBOwE9ATsBZQgAATIBMwEyAVEBSQFwAUkBvwFC
|
||||
AUcBQwF4CAADEQEXAUkBcAFJAb8BSwFkAUwBrAQAAkkBbwG7AkkBcgG/AkkBcgG/AUkBSwFsAbsCOwE9
|
||||
AWUIAAIyATMBUQJJAXABvwFCAUMBSAF4CAADEQEXAkkBcAG/AksBZQGs/wD/AP8AigABAQMhATADIwEz
|
||||
AyMBMwMhATAMAAMfASwDIwEzAyMBMwMjATMDIwEzAyMBMwMhATAMAAMjATMDIwEzEAADHwEsAyMBMwMj
|
||||
ATMDIQEwWwAEAQECAwMBBAMFBAcBCQMGAQgDBAEGAwMBBAMBAQIDAAEBEAADAgEDAYMBbgFTAfEBtwGD
|
||||
AToB/wG3AYMBOwH/AYUBbAFPAfIMAAFbAWEBWwHhAUABhQFCAf8BQQGEAUEB/wFBAYQBQQH/AUIBhAFC
|
||||
Af8BQgGFAUQB/wFYAW8BWQHyCAADIwEzAbcBgwE7Af8BtwGDATsB/wMjATMMAAFbAWEBWwHhAUABhQFD
|
||||
Af8BQQGFAUMB/wFYAW8BWQHyXAADBAEFAwkBDAMNAREDMQFOAxoBJAMPARQDDQERAwkBDAMEAQUUAAG3
|
||||
AYIBOgH/AfsBzgGIAf8B+QHKAYAB/wG5AYMBOgH/DAABPwGEAUIB/wGeAegByQH/AUcByAGSAf8BSQHI
|
||||
AZMB/wFKAcgBlAH/AUwBzAGZAf8BQQGFAUMB/wQAAyMBMwG1AYEBOAH/AfQBxAFxAf8B9AHEAXEB/wG1
|
||||
AYEBOAH/AyMBMwgAAT4BhAFCAf8BngHpAcoB/wFKAcwBmAH/AUEBhQFDAf9kAAM3AVsDjgH0A1oBxQMB
|
||||
AQIgAAG2AYEBOAH/AfQBywGKAf8B8QHAAWwB/wG4AYIBOQH/DAABPgGEAUEB/wG7AeoB3QH/AbgB5gHY
|
||||
Af8BuQHmAdgB/wG6AecB2QH/Ab0B6wHeAf8BPwGFAUIB/wMjATMBtQGBATgB/wHyAcEBbQH/Ae4BvAFp
|
||||
Af8B7gG9AWoB/wHyAcEBbQH/AbgBgQE4Af8DIwEzBAABPAGEAUEB/wG8AesB3gH/Ab0B6wHfAf8BPwGF
|
||||
AUIB/2AAAxYBHgFoAWkBaAHiAbwBwwHAAf8BpQGrAakB+wNMAZAgAAG2AYEBOAH/AfEBygGQAf8B6wG4
|
||||
AWQB/wG4AYIBOQH/DAADVAGuAT4BhAFBAf8BPAGCAT4B/wE8AYIBPgH/ATwBggE+Af8BPgGEAUEB/wFX
|
||||
AVoBVwHFAbgBhAE7Af8B9wHOAY8B/wHyAckBiQH/Ae0BwgGCAf8B6wG5AWYB/wHyAckBigH/AfkBzgGP
|
||||
Af8BwgGEAToB/wQAAVQBVgFUAasBPgGEAUEB/wE+AYQBQQH/AVYBWAFWAcFcAAMDAQQDXQHKAcMByQHG
|
||||
Af8BtgG9AboB/wG6AcEBvgH/AYYBiQGGAfEDLgFIHAABtgGBATcB/wHvAc0BmAH/AeYBsgFdAf8BuAGC
|
||||
AToB/wwAAxkEIwEzAyMBMwMjATMDGAEiCAACWgFXAcUBtwGCATkB/wGzAXQBNAH/AfAByAGOAf8B6QG4
|
||||
AWMB/wGzAXUBNgH/AbgBggE5Af8CWwFZAcQEAAMZBCMBMwMjATMDIwEzAxkBIxMAAQEDAgEDAwUBBwMI
|
||||
BAsBDwMNARIDDQESAwoBDgMIAQsDBQEHAwIBAxwAA1ABmwGyAbUBtAH8AbYBvQG6Af8BuwHCAb8B/wHH
|
||||
Ac0BywH/AdUB2QHXAf8DawHkAw8BFBgAAbYBgQE3Af8B7gHPAaEB/wHgAawBVQH/AbkBgwE7Af8MAAFW
|
||||
AVkBVgG+AUABhQFCAf8BQQGEAUEB/wFCAYUBRAH/AVcBWgFXAb0QAAG2AYABNwH/AfABywGWAf8B5wG0
|
||||
AWAB/wG2AYIBOQH/DAABVwFaAVcBvQE/AYUBQgH/AUEBhAFBAf8BQgGFAUQB/wFXAVkBVwG/HwABAQME
|
||||
AQUDBgEIAwYBCAMFAQcDAgEDIAADNQFXAYYBiQGGAfEBuQHAAb0B/wG9AcMBwAH/AcMByAHGAf8BxwHN
|
||||
AcsB/wHNAdIB0AH/AdsB3gHdAf8DWgHHAwABARQAAbYBgQE2Af8B7wHTAaoB/wHaAaUBTgH/AbkBgwE7
|
||||
Af8MAAE+AYQBQgH/AZ4B6AHJAf8BSAHJAZMB/wFMAcwBmAH/AUEBhQFDAf8QAAG2AYEBNwH/Ae8BzgGd
|
||||
Af8B5AGxAVsB/wG4AYIBOgH/DAABPQGFAUIB/wGeAegByQH/AUgByQGTAf8BTAHMAZgB/wFBAYUBQwH/
|
||||
DAADSAGDA2IB1QNiAdUDYAHUA14B0wNeAdMDXQHSA18B0QNfAdEDXwHRA18B0QNdAdIDXgHRAxIBGQwA
|
||||
AxQBGwNpAeABvgHEAcEB/wG3Ab4BuwH/AbsBwgG/Af8BwAHGAcQB/wHFAcsByQH/AcsB0AHNAf8B0AHU
|
||||
AdIB/wG9Ab8BvgH8A0oBjRQAAbYBgQE2Af8B8AHZAbQB/wHWAZ8BRwH/AbgBhAE7Af8MAAE8AYQBQQH/
|
||||
AbsB6gHdAf8BuQHnAdkB/wG9AesB3gH/AT8BhQFCAf8QAAG2AYEBNgH/AfAB0QGkAf8B4AGsAVUB/wG4
|
||||
AYMBOgH/DAABPgGEAUEB/wG7AeoB3QH/AbkB5wHZAf8BvQHrAd4B/wE/AYUBQgH/DAADHQEpA38B7gHb
|
||||
Ad4B3QH/AdIB1wHVAf8BzgHTAdEB/wHJAc4BzAH/AcUBygHIAf8BwAHGAcMB/wG9AcMBwQH/Ab0BwwHB
|
||||
Af8BvQHDAcEB/wHMAdEBzwH/A1cBtwwAAwIBAwNcAckBxQHKAcgB/wG3Ab4BuwH/AbcBvgG7Af8BuQHA
|
||||
Ab0B/wG+AcUBwgH/AcMByQHGAf8ByQHOAcwB/wHNAdIB0AH/AdUB2QHXAf8DkQHzAywBQwgAAyEBMAMj
|
||||
ATMBtwGBATYB/wHvAdsBvQH/AdABmgFAAf8BuAGEATwB/wMjATMDIQEwBAABUwFVAVMBrQE9AYQBQQH/
|
||||
ATwBggE/Af8BPgGEAUEB/wFUAWoBVAHuEAABtgGBATYB/wHvAdQBrQH/Ad0BqAFRAf8BuQGDATsB/wwA
|
||||
A1QBrgE+AYQBQQH/ATwBggE/Af8BPgGEAUEB/wFZAWoBWQHrEAADPwFsAa0CrwH6AdIB1gHUAf8BzAHR
|
||||
Ac8B/wHHAcwBygH/AcIByAHFAf8BvQHDAcAB/wG3Ab4BuwH/AbcBvgG7Af8BwQHHAcUB/wNjAdoDCgEO
|
||||
DAADTAGTAbMBtwG1AfwBxQHLAcgB/wHFAcsByAH/AcUBywHIAf8BxQHLAcgB/wHIAc4BywH/AcwB0QHO
|
||||
Af8BzwHUAdIB/wHTAdcB1QH/AdYB2gHYAf8B3wHiAeEB/wNoAeIDAwEEBAABhAFsAU8B8gG5AYQBOgH/
|
||||
AbcBgQE3Af8B2gG3AYcB/wHGAY8BPAH/AbgBgwE7Af8BugGEAToB/wGGAW4BUwHxBAADGAEiAyMBMwMj
|
||||
ATMDGAEiFAABtgGBATYB/wHwAdgBtQH/AdkBowFLAf8BuQGDATsB/wwAAxkEIwEzAyMBMwMjATMDIwEz
|
||||
AyMBMwMZASMMAANUAa4BygHOAcwB/gHOAdMB0QH/AckBzgHMAf8BxAHKAccB/wG/AcUBwgH/AboBwAG+
|
||||
Af8BugHBAb4B/wN7Ae0DKAE8EAADIAEuAz8BbAM/AWwDPwFsAz4BawM+AWoDPgFqAz4BagM9AWkDPQFp
|
||||
Az0BaAM9AWgDOwFkAwQBBgQAAbkBhAE7Af8B6AHRAawB/wHGAY8BNQH/AcYBjwE3Af8BxgGQATgB/wHG
|
||||
AY8BNQH/AewB1QGyAf8BwwGEATkB/wQAAVYBWAFWAbwBQAGFAUMB/wFBAYUBQwH/AVcBWgFXAb0UAAG2
|
||||
AYABNQH/AfEB3AG8Af8B1QGfAUYB/wG5AYQBOwH/DAABVgFZAVYBvgFAAYUBQgH/AUEBhAFBAf8BQQGE
|
||||
AUEB/wFCAYQBQgH/AUIBhQFEAf8BWAFaAVgBwAwAAwUBBwNgAtkB3AHbAf8BywHQAc4B/wHGAcsByQH/
|
||||
Ab0BxAHBAf8BuAG/AbwB/wGkAqYB+gNIAYNUAAG4AYIBNwH/AegB0AGtAf8BwgGLAS8B/wHCAYsBLwH/
|
||||
AegB0AGtAf8BuQGCATcB/wgAAT0BhQFCAf8BngHpAcoB/wFKAcwBmAH/AUEBhQFDAf8UAAG3AYEBNQH/
|
||||
AfAB2wG7Af8B0AGZAT8B/wG6AYMBOgH/DAABPwGEAUIB/wGeAegByQH/AUcByAGSAf8BSQHIAZMB/wFK
|
||||
AcgBlAH/AUwBzAGZAf8BQQGFAUMB/xAAAxwBJwF7AXwBewHrAcsB0AHOAf8BuQHAAb0B/wG2Ab0BugH/
|
||||
AcUBygHIAf8DWQG/XAABtwGBATcB/wHoAdEBsAH/AegB0QGwAf8BuAGBATcB/wwAAT0BhAFBAf8BvAHr
|
||||
Ad4B/wG9AesB3wH/AT8BhQFCAf8UAAG4AYIBNwH/Ae8B2wG7Af8B6gHQAakB/wG6AYMBOQH/DAABPgGE
|
||||
AUEB/wG7AeoB3QH/AbgB5gHYAf8BuQHmAdgB/wG6AecB2QH/Ab0B6wHeAf8BPwGFAUIB/xQAAz0BaAGN
|
||||
AZIBjwH1AbcBvgG7Af8BvgHFAcIB/wNkAd4DDQESYAABuAGDATkB/wG4AYMBOQH/EAABUwFVAVMBsAE+
|
||||
AYQBQQH/AT4BhAFBAf8BVwFoAVgB7xQAAlUBUwGwAbgBggE4Af8BuAGDATgB/wJVAVMBsAwAAVMBVQFT
|
||||
AbABPgGEAUEB/wE8AYIBPgH/ATwBggE+Af8BPAGCAT4B/wE+AYQBQQH/AVcBaAFYAe8YAANSAakBtwG8
|
||||
AboB/gF+AX8BfgHvAy0BRvAAAwUBBwNbAcQDRgF+/wB1AAMTARoBLAIrAUMBLAIrAUMBLAIrAUPwAANV
|
||||
AbIBQgHiAYwB/wFBAeEBiQH/ATMByAFbAf/wAANVAbIBNgHUAVYB/wEtAcsBPQH/ATMByQFbAf+wAAMM
|
||||
ARADPQFoAyoBQDQAA1UBsgE+AdoBYAH/AS4BzAE/Af8BMwHKAVsB/1wAAxABFgMXASADFwEgAxcBIAMX
|
||||
ASADFwEgAxcBIAMXASADFwEgAxcBIAMXASADFwEgAxcBIAMJAQwYAAMKAQ4DKAE8A14B1QNMAZADEwEa
|
||||
AwMBBCwAA1UBsgFKAeMBgQH/AToB1AFMAf8BNAHLAVwB/1wAA0gBgwNZAb8DWQG/A1kBvwNZAb8DWQG/
|
||||
A1kBvwNZAb8DWQG/A1kBvwNZAb8DWQG/A1kBvwMuAUgYAAM0AVQDWQHHA18B8wNcAd8DUAGbAxIBGBwA
|
||||
AT4BfwE8Af4BPQHTAWIB/wE9AdQBZAH/AT4B1AFkAf8BPQHTAWMB/wFWAeoBhAH/AUkB3wFcAf8BRwHj
|
||||
AZAB/wE0AcoBWgH/ATIByAFZAf8BMQHGAVcB/wExAcUBVwH/AzABTAwAA0gBhAI5AdMB/wI7AdQB/wI9
|
||||
AdQB/wI+AdMB/wI9AdAB/wI6AcwB/wI2AccB/wIyAcMB/wIwAcIB/wIwAcIB/wIfAagB/wwAAz8BbQNb
|
||||
AcMDXQH/A10B/wNdAf8DXQH/A10B/wNdAf8DXQH/A10B/wNdAf8DZAHnA1MBpQMoATwQAAMEAQYDLgFI
|
||||
A1QBpgNdAf8DXQH/A10B/wNhAeEDQgF0Ax0BKhgAAUEBfwFBAf4BUgHaAWUB/wFbAeQBgQH/AWEB7AGG
|
||||
Af8BZAHwAYoB/wFhAe8BhwH/AVgB6gGBAf8BSwHhAV8B/wE+AdcBUAH/ATIBzgFDAf8BLQHLAT0B/wFA
|
||||
AeABhwH/AzABTAwAA0gBhAJLAdcB/wJSAdYB/wJeAeQB/wJmAe4B/wJmAfAB/wJaAekB/wJHAdwB/wI3
|
||||
AdAB/wIyAcwB/wIyAcwB/wIpAbcB/xAAAzoBYANdAf8DXQH/A10B/wNdAf8DXQH/A10B/wNdAf8DXQH/
|
||||
A10B/wNZAb8DDAEQFAADDAEQA1kBvwNdAf8DXQH/A10B/wNdAf8DXQH/A10B/wNAAXAYAAFBAYABQQH+
|
||||
AUsB1gGBAf8BUwHfAYUB/wFaAecBjQH/AV8B7gGTAf8BZAHvAYoB/wFiAfABiAH/AVoB7AGGAf8BTwHn
|
||||
AYIB/wFEAd4BZgH/AToB1wFbAf8BQQHhAYoB/wMwAUwMAANIAYQCTAHaAf8CUwHdAf8CXQHoAf8CYwHw
|
||||
Af8CYwHyAf8CWgHsAf8CSwHiAf8CPQHYAf8COAHUAf8COAHUAf8CKQG3Af8QAAMaASQDPgFqA10B1wNd
|
||||
Af8DXQH/A10B/wNdAf8DXQH/A10B/wNUAaYDLgFIAwQBBhAAAygBPANTAaUDZAHnA10B/wNdAf8DXQH/
|
||||
A10B/wNdAf8DXQH/A1wByQNDAXcDBwEKEAABVgJVAbEDVQG1A1UBtQNVAbUDVwHoAV8B7QGTAf8BZAHv
|
||||
AYkB/wFAAdYBgQH/A1UBtQNVAbUDVQG1A1UBtQMYASEMAAMtAUYDVQG1A1UBtQNVAbUDVQG1A1UBtQNV
|
||||
AbUDVQG1A1UBtQNVAbUDVQG1AVYCVQG0FAADCQEMA0wBjwNfAdsDXQH/A10B/wNdAf8DXwHzA1kBxwM0
|
||||
AVQUAAMfASwDSQGIA10B/wNdAf8DXQH/A10B/wNdAf8DXQH/A10B/wNdAf8DXQH/A1wBzwMwAUwDEgEY
|
||||
HAADVQGyAVgB5QGLAf8BXwHoAYMB/wFAAdYBgQH/ZAADAQECAxIBGANHAYIDXQH/A10B/wNdAf8DXgHV
|
||||
AygBPAMKAQ4UAANOAZkDYAHrA10B/wNdAf8DXQH/A10B/wNdAf8DXQH/A10B/wNdAf8DXQH/A2YB9wNh
|
||||
AeEDNAFUHAADVQGyAU8B2wGBAf8BVgHeAYAB/wE/AdUBaAH/bAADJgE4A0wBkANkAecDWgHAAz0BaAMM
|
||||
ARAYAAM2AVgDRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADIQEw
|
||||
HAADVQGyAUYB0gFnAf8BSwHTAV4B/wE+AdQBZgH/cAADFAEcA1UBtQNAAXB0AANUAasBIQG5ASYB/wEh
|
||||
AbgBJgH/AR8BtQEiAf9wAAMGAQgDIwE0AxcBIP8A/wBeAAFCAU0BPgcAAT4DAAEoAwABQAMAATADAAEB
|
||||
AQABAQUAAYABARYAA/8BAAT/BAAE/wQABP8EAAGcARgBnAEYBAABmAEYAZgBGAQAAZgBgAGYAYAEAAGA
|
||||
AYEBgAGBBAABgQHDAYEBwwQAAYABwwGAAcMEAAGYAYEBmAGBBAAEgAQAAYEBCAGBAQgEAAGDARgBgwEY
|
||||
BAAE/wQABP8EAAT/BAABgwGAAecBhwL/AeABBwGDAYABwwGHAv8B8AEHAcMBgAGBAYcC/wH8AT8BwwGA
|
||||
AQABhwL/AfgBPwHDAYABAAGHAv8B8AEfAcMBgwEAAYMBwAEHAfABDwHDAYMBwwGDAfgBHwHgAQcBwwGD
|
||||
AcMBgwGAAQEBwAEHAcMBgwHDAYMBgAEDAYABAwEAAYMBwwGDAcABAwGAAQEBAAGHAcMBgAHgAQcBgAEB
|
||||
AQABhwHDAYAB4AEPAv8BgQGHAcMBgAHwAR8C/wHDAYcBwwGAAfgBHwL/AecBhwHDAYAB/AE/Bv8B/AF/
|
||||
Cv8B/AE/Bv8B/AE/Bv8B/AE/BP8B/AF/AfwBPwL/AYABAQH4AR8B/AE/Av8BgAEBAfgBHwHAAQEBwAED
|
||||
AYABAQHgAQ8BwAEBAcABAwHAAQMB4AEPAcABAQHAAQMBwAEDAcABAwHAAQEBwAEDAeABDwGAAQEB/AE/
|
||||
Av8B4AEPAYABAQH8AT8C/wH4AR8BgAEBAfwBPwL/AfwBfwL/AfwBPwL/AfwBfxL/Cw==
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>9, 272</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>37, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Filters:</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
</data>
|
||||
<data name=">>label1.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label1.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="btnCancel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>397, 418</value>
|
||||
</data>
|
||||
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="btnCancel.Text" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Name" xml:space="preserve">
|
||||
<value>btnCancel</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnCancel.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left</value>
|
||||
</data>
|
||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 242</value>
|
||||
</data>
|
||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>212, 13</value>
|
||||
</data>
|
||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Use context menu to add and remove filters</value>
|
||||
</data>
|
||||
<data name=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
</data>
|
||||
<data name=">>label2.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label2.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="lvFilters.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<metadata name="ctxFilters.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>332, 17</value>
|
||||
</metadata>
|
||||
<data name="removeFilterToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>146, 22</value>
|
||||
</data>
|
||||
<data name="removeFilterToolStripMenuItem.Text" xml:space="preserve">
|
||||
<value>Remove Filter</value>
|
||||
</data>
|
||||
<data name="ctxFilters.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>147, 26</value>
|
||||
</data>
|
||||
<data name=">>ctxFilters.Name" xml:space="preserve">
|
||||
<value>ctxFilters</value>
|
||||
</data>
|
||||
<data name=">>ctxFilters.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name="lvFilters.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 289</value>
|
||||
</data>
|
||||
<data name="lvFilters.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>461, 123</value>
|
||||
</data>
|
||||
<data name="lvFilters.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>lvFilters.Name" xml:space="preserve">
|
||||
<value>lvFilters</value>
|
||||
</data>
|
||||
<data name=">>lvFilters.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lvFilters.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lvFilters.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<metadata name="scanWorker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>220, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="lbTotalSize.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="lbTotalSize.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>TopLeft</value>
|
||||
</data>
|
||||
<data name="lbTotalSize.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>324, 242</value>
|
||||
</data>
|
||||
<data name="lbTotalSize.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>148, 18</value>
|
||||
</data>
|
||||
<data name="lbTotalSize.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="lbTotalSize.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>TopRight</value>
|
||||
</data>
|
||||
<data name=">>lbTotalSize.Name" xml:space="preserve">
|
||||
<value>lbTotalSize</value>
|
||||
</data>
|
||||
<data name=">>lbTotalSize.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lbTotalSize.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lbTotalSize.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>12, 11</value>
|
||||
</data>
|
||||
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>101, 13</value>
|
||||
</data>
|
||||
<data name="label3.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="label3.Text" xml:space="preserve">
|
||||
<value>Files to be included:</value>
|
||||
</data>
|
||||
<data name=">>label3.Name" xml:space="preserve">
|
||||
<value>label3</value>
|
||||
</data>
|
||||
<data name=">>label3.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label3.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="tbSearch.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="tbSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>321, 4</value>
|
||||
</data>
|
||||
<data name="tbSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>156, 20</value>
|
||||
</data>
|
||||
<data name="tbSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name=">>tbSearch.Name" xml:space="preserve">
|
||||
<value>tbSearch</value>
|
||||
</data>
|
||||
<data name=">>tbSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>tbSearch.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>tbSearch.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="btnSearch.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="btnSearch.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
@@ -299,6 +567,30 @@
|
||||
DjIHM32Q3wAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>291, 1</value>
|
||||
</data>
|
||||
<data name="btnSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>25, 25</value>
|
||||
</data>
|
||||
<data name="btnSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name=">>btnSearch.Name" xml:space="preserve">
|
||||
<value>btnSearch</value>
|
||||
</data>
|
||||
<data name=">>btnSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnSearch.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnSearch.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
R0lGODlhEAAQAIZ1AP75+f3j4/jFxv7k5P/u7v74+OovMfddYPhfYv/6+v7k5f/7+/93evhiZP97fv9b
|
||||
@@ -314,6 +606,147 @@
|
||||
yDFjQMDAMiFIYK1T4E3lgjY2CyxgWazpgQEBADs=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>458, 6</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>16, 16</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="btnClearSearch.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>btnClearSearch.Name" xml:space="preserve">
|
||||
<value>btnClearSearch</value>
|
||||
</data>
|
||||
<data name=">>btnClearSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnClearSearch.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnClearSearch.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="lvFiles.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="chFile.Text" xml:space="preserve">
|
||||
<value>Filename</value>
|
||||
</data>
|
||||
<data name="chFile.Width" type="System.Int32, mscorlib">
|
||||
<value>116</value>
|
||||
</data>
|
||||
<data name="chFileExt.Text" xml:space="preserve">
|
||||
<value>Ext</value>
|
||||
</data>
|
||||
<data name="chFileExt.Width" type="System.Int32, mscorlib">
|
||||
<value>47</value>
|
||||
</data>
|
||||
<data name="chSize.Text" xml:space="preserve">
|
||||
<value>Size</value>
|
||||
</data>
|
||||
<data name="chSize.Width" type="System.Int32, mscorlib">
|
||||
<value>76</value>
|
||||
</data>
|
||||
<data name="chPath.Text" xml:space="preserve">
|
||||
<value>Path</value>
|
||||
</data>
|
||||
<data name="chPath.Width" type="System.Int32, mscorlib">
|
||||
<value>192</value>
|
||||
</data>
|
||||
<data name="lvFiles.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>15, 32</value>
|
||||
</data>
|
||||
<data name="lvFiles.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>462, 205</value>
|
||||
</data>
|
||||
<data name="lvFiles.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>16</value>
|
||||
</data>
|
||||
<data name=">>lvFiles.Name" xml:space="preserve">
|
||||
<value>lvFiles</value>
|
||||
</data>
|
||||
<data name=">>lvFiles.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lvFiles.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lvFiles.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="lbLoading.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="lbLoading.Font" type="System.Drawing.Font, System.Drawing">
|
||||
<value>Microsoft Sans Serif, 15.75pt</value>
|
||||
</data>
|
||||
<data name="lbLoading.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>28, 98</value>
|
||||
</data>
|
||||
<data name="lbLoading.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>427, 36</value>
|
||||
</data>
|
||||
<data name="lbLoading.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>17</value>
|
||||
</data>
|
||||
<data name="lbLoading.Text" xml:space="preserve">
|
||||
<value>Scanning files, please wait....</value>
|
||||
</data>
|
||||
<data name="lbLoading.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
|
||||
<value>MiddleCenter</value>
|
||||
</data>
|
||||
<data name=">>lbLoading.Name" xml:space="preserve">
|
||||
<value>lbLoading</value>
|
||||
</data>
|
||||
<data name=">>lbLoading.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lbLoading.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>lbLoading.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="btnOK.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>312, 418</value>
|
||||
</data>
|
||||
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
</data>
|
||||
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>18</value>
|
||||
</data>
|
||||
<data name="btnOK.Text" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name=">>btnOK.Name" xml:space="preserve">
|
||||
<value>btnOK</value>
|
||||
</data>
|
||||
<data name=">>btnOK.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnOK.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>btnOK.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>486, 453</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAwAMDAQAAEABABoBgAAxgAAACAgEAABAAQA6AIAAC4HAAAYGBAAAQAEAOgBAAAWCgAAEBAQAAEA
|
||||
@@ -817,4 +1250,109 @@
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAEAAA==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
|
||||
<value>400, 400</value>
|
||||
</data>
|
||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||
<value>CenterParent</value>
|
||||
</data>
|
||||
<data name="$this.Text" xml:space="preserve">
|
||||
<value>Test Search Selection</value>
|
||||
</data>
|
||||
<data name=">>miInclude.Name" xml:space="preserve">
|
||||
<value>miInclude</value>
|
||||
</data>
|
||||
<data name=">>miInclude.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFileName.Name" xml:space="preserve">
|
||||
<value>miIncludeFileName</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFileName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFileExt.Name" xml:space="preserve">
|
||||
<value>miIncludeFileExt</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFileExt.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFilePath.Name" xml:space="preserve">
|
||||
<value>miIncludeFilePath</value>
|
||||
</data>
|
||||
<data name=">>miIncludeFilePath.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miExclude.Name" xml:space="preserve">
|
||||
<value>miExclude</value>
|
||||
</data>
|
||||
<data name=">>miExclude.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFileName.Name" xml:space="preserve">
|
||||
<value>miExcludeFileName</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFileName.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFileExt.Name" xml:space="preserve">
|
||||
<value>miExcludeFileExt</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFileExt.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFilePath.Name" xml:space="preserve">
|
||||
<value>miExcludeFilePath</value>
|
||||
</data>
|
||||
<data name=">>miExcludeFilePath.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>imageList.Name" xml:space="preserve">
|
||||
<value>imageList</value>
|
||||
</data>
|
||||
<data name=">>imageList.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>removeFilterToolStripMenuItem.Name" xml:space="preserve">
|
||||
<value>removeFilterToolStripMenuItem</value>
|
||||
</data>
|
||||
<data name=">>removeFilterToolStripMenuItem.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>scanWorker.Name" xml:space="preserve">
|
||||
<value>scanWorker</value>
|
||||
</data>
|
||||
<data name=">>scanWorker.Type" xml:space="preserve">
|
||||
<value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>chFile.Name" xml:space="preserve">
|
||||
<value>chFile</value>
|
||||
</data>
|
||||
<data name=">>chFile.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>chFileExt.Name" xml:space="preserve">
|
||||
<value>chFileExt</value>
|
||||
</data>
|
||||
<data name=">>chFileExt.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>chSize.Name" xml:space="preserve">
|
||||
<value>chSize</value>
|
||||
</data>
|
||||
<data name=">>chSize.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>chPath.Name" xml:space="preserve">
|
||||
<value>chPath</value>
|
||||
</data>
|
||||
<data name=">>chPath.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>TestSearchSelection</value>
|
||||
</data>
|
||||
<data name=">>$this.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -169,7 +169,7 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
<value>0, 2</value>
|
||||
</data>
|
||||
<data name="ThreadPriorityEnabled.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>108, 17</value>
|
||||
|
||||
@@ -117,12 +117,13 @@ namespace Duplicati.GUI
|
||||
//We add it last, to allow the user to override with other versions
|
||||
if (!Library.Utility.Utility.IsClientLinux)
|
||||
{
|
||||
string wintools = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "win-tools");
|
||||
Environment.SetEnvironmentVariable("PATH",
|
||||
Environment.GetEnvironmentVariable("PATH") +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
System.IO.Path.Combine(
|
||||
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location),
|
||||
"win-tools")
|
||||
wintools +
|
||||
System.IO.Path.PathSeparator.ToString() +
|
||||
System.IO.Path.Combine(wintools, "gpg") //GPG needs to be in a subfolder for wrapping reasons
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -48,8 +48,7 @@ namespace Duplicati.GUI
|
||||
//If we run on windows with MS.Net we can use the mixed mode assemblies
|
||||
if (!Duplicati.Library.Utility.Utility.IsClientLinux && !Duplicati.Library.Utility.Utility.IsMono)
|
||||
{
|
||||
//On my x64 system, 32bit appears to work correctly as 32 bit, where loading the 64bit dll fails
|
||||
if (IntPtr.Size == 8 /*|| (IntPtr.Size == 4 && Is32BitProcessOn64BitProcessor())*/)
|
||||
if (Library.Utility.Utility.Is64BitProcess)
|
||||
{
|
||||
if (System.IO.File.Exists(System.IO.Path.Combine(System.IO.Path.Combine(basePath, "win64"), filename)))
|
||||
assemblyPath = System.IO.Path.Combine(basePath, "win64");
|
||||
|
||||
+8
-8
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -61,7 +61,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to While backup is running (and on errors/warnings).
|
||||
/// Looks up a localized string similar to During backup, errors, warnings.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_Continous {
|
||||
get {
|
||||
@@ -70,7 +70,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to On backup errors.
|
||||
/// Looks up a localized string similar to Errors.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_Errors {
|
||||
get {
|
||||
@@ -79,7 +79,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to No balloon notifications.
|
||||
/// Looks up a localized string similar to No notifications.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_Off {
|
||||
get {
|
||||
@@ -88,7 +88,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to On backup start (and errors/warnings).
|
||||
/// Looks up a localized string similar to Start, errors, warnings.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_Start {
|
||||
get {
|
||||
@@ -97,7 +97,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to On backup start and stop (and errors/warnings).
|
||||
/// Looks up a localized string similar to Start, stop, errors, warnings.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_StartAndStop {
|
||||
get {
|
||||
@@ -106,7 +106,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to On backup errors and warnings.
|
||||
/// Looks up a localized string similar to Errors, warnings.
|
||||
/// </summary>
|
||||
internal static string BalloonNotification_Warnings {
|
||||
get {
|
||||
@@ -152,7 +152,7 @@ namespace Duplicati.GUI.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Duplicati Setup, version {0}.
|
||||
/// Looks up a localized string similar to Duplicati Options, version {0}.
|
||||
/// </summary>
|
||||
internal static string DialogTitle {
|
||||
get {
|
||||
|
||||
@@ -118,22 +118,22 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BalloonNotification_Continous" xml:space="preserve">
|
||||
<value>While backup is running (and on errors/warnings)</value>
|
||||
<value>While running, and on errors, warnings</value>
|
||||
</data>
|
||||
<data name="BalloonNotification_Errors" xml:space="preserve">
|
||||
<value>On backup errors</value>
|
||||
<value>On errors</value>
|
||||
</data>
|
||||
<data name="BalloonNotification_Off" xml:space="preserve">
|
||||
<value>No balloon notifications</value>
|
||||
<value>No notifications</value>
|
||||
</data>
|
||||
<data name="BalloonNotification_Start" xml:space="preserve">
|
||||
<value>On backup start (and errors/warnings)</value>
|
||||
<value>On start, errors, warnings</value>
|
||||
</data>
|
||||
<data name="BalloonNotification_StartAndStop" xml:space="preserve">
|
||||
<value>On backup start and stop (and errors/warnings)</value>
|
||||
<value>On start, stop, errors, warnings</value>
|
||||
</data>
|
||||
<data name="BalloonNotification_Warnings" xml:space="preserve">
|
||||
<value>On backup errors and warnings</value>
|
||||
<value>On errors, warnings</value>
|
||||
</data>
|
||||
<data name="CacheSize" xml:space="preserve">
|
||||
<value>Cache size: {0}</value>
|
||||
@@ -153,7 +153,7 @@
|
||||
<comment>A string displayed to denote the current default language</comment>
|
||||
</data>
|
||||
<data name="DialogTitle" xml:space="preserve">
|
||||
<value>Duplicati Setup, version {0}</value>
|
||||
<value>Duplicati Options, version {0}</value>
|
||||
<comment>The dialog title with version number</comment>
|
||||
</data>
|
||||
<data name="EncryptionModuleLoadError" xml:space="preserve">
|
||||
|
||||
@@ -28,11 +28,12 @@ namespace Duplicati.Library.Backend
|
||||
public class FTP : IBackend_v2, IStreamingBackend, IBackendGUI
|
||||
{
|
||||
private System.Net.NetworkCredential m_userInfo;
|
||||
private string m_url;
|
||||
private readonly string m_url;
|
||||
|
||||
private bool m_useSSL = false;
|
||||
private bool m_defaultPassive = true;
|
||||
private bool m_passive = false;
|
||||
private readonly bool m_useSSL = false;
|
||||
private readonly bool m_defaultPassive = true;
|
||||
private readonly bool m_passive = false;
|
||||
private readonly bool m_listVerify = true;
|
||||
|
||||
public FTP()
|
||||
{
|
||||
@@ -85,9 +86,7 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
m_useSSL = Utility.Utility.ParseBoolOption(options, "use-ssl");
|
||||
|
||||
//HACK: We modify the commandline options to alter the setting it the ftp backend is loaded
|
||||
if (!options.ContainsKey("list-verify-uploads"))
|
||||
options.Add("list-verify-uploads", "true");
|
||||
m_listVerify = !Utility.Utility.ParseBoolOption(options, "disable-upload-verify");
|
||||
|
||||
if (Utility.Utility.ParseBoolOption(options, "ftp-passive"))
|
||||
{
|
||||
@@ -171,7 +170,12 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
public List<IFileEntry> List()
|
||||
{
|
||||
System.Net.FtpWebRequest req = CreateRequest("");
|
||||
return List("");
|
||||
}
|
||||
|
||||
public List<IFileEntry> List(string filename)
|
||||
{
|
||||
System.Net.FtpWebRequest req = CreateRequest(filename);
|
||||
req.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails;
|
||||
req.UseBinary = false;
|
||||
|
||||
@@ -209,9 +213,32 @@ namespace Duplicati.Library.Backend
|
||||
req = CreateRequest(remotename);
|
||||
req.Method = System.Net.WebRequestMethods.Ftp.UploadFile;
|
||||
req.UseBinary = true;
|
||||
|
||||
long streamLen = -1;
|
||||
try { streamLen = input.Length; }
|
||||
catch {}
|
||||
|
||||
using (System.IO.Stream rs = req.GetRequestStream())
|
||||
Utility.Utility.CopyStream(input, rs, true);
|
||||
|
||||
if (m_listVerify)
|
||||
{
|
||||
List<IFileEntry> files = List(remotename);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
foreach(IFileEntry fe in files)
|
||||
if (fe.Name.Equals(remotename) || fe.Name.EndsWith("/" + remotename) || fe.Name.EndsWith("\\" + remotename))
|
||||
{
|
||||
if (fe.Size < 0 || streamLen < 0 || fe.Size == streamLen)
|
||||
return;
|
||||
|
||||
throw new Exception(string.Format(Strings.FTPBackend.ListVerifySizeFailure, remotename, fe.Size, streamLen));
|
||||
}
|
||||
else
|
||||
sb.AppendLine(fe.Name);
|
||||
|
||||
throw new Exception(string.Format(Strings.FTPBackend.ListVerifyFailure, remotename, sb.ToString()));
|
||||
}
|
||||
|
||||
}
|
||||
catch (System.Net.WebException wex)
|
||||
{
|
||||
@@ -263,6 +290,7 @@ namespace Duplicati.Library.Backend
|
||||
new CommandLineArgument("ftp-password", CommandLineArgument.ArgumentType.String, Strings.FTPBackend.DescriptionFTPPasswordShort, Strings.FTPBackend.DescriptionFTPPasswordLong),
|
||||
new CommandLineArgument("ftp-username", CommandLineArgument.ArgumentType.String, Strings.FTPBackend.DescriptionFTPUsernameShort, Strings.FTPBackend.DescriptionFTPUsernameLong),
|
||||
new CommandLineArgument("use-ssl", CommandLineArgument.ArgumentType.Boolean, Strings.FTPBackend.DescriptionUseSSLShort, Strings.FTPBackend.DescriptionUseSSLLong),
|
||||
new CommandLineArgument("disable-upload-verify", CommandLineArgument.ArgumentType.Boolean, Strings.FTPBackend.DescriptionDisableUploadVerifyShort, Strings.FTPBackend.DescriptionDisableUploadVerifyLong),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -286,10 +314,19 @@ namespace Duplicati.Library.Backend
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
private System.Net.FtpWebRequest CreateRequest(string remotename)
|
||||
{
|
||||
System.Net.FtpWebRequest req = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(m_url + remotename);
|
||||
return CreateRequest(remotename, false);
|
||||
}
|
||||
|
||||
private System.Net.FtpWebRequest CreateRequest(string remotename, bool createFolder)
|
||||
{
|
||||
string url = m_url;
|
||||
if (createFolder && url.EndsWith("/"))
|
||||
url = url.Substring(0, url.Length - 1);
|
||||
|
||||
System.Net.FtpWebRequest req = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(url + remotename);
|
||||
|
||||
if (m_userInfo != null)
|
||||
req.Credentials = m_userInfo;
|
||||
@@ -317,7 +354,7 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
public void CreateFolder()
|
||||
{
|
||||
System.Net.FtpWebRequest req = CreateRequest("");
|
||||
System.Net.FtpWebRequest req = CreateRequest("", true);
|
||||
req.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory;
|
||||
req.KeepAlive = false;
|
||||
using (req.GetResponse())
|
||||
|
||||
+237
-229
@@ -1,229 +1,237 @@
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class FTPUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FTPUI));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.PassiveConnection = new System.Windows.Forms.CheckBox();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Password
|
||||
//
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65500,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
21,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// PassiveConnection
|
||||
//
|
||||
resources.ApplyResources(this.PassiveConnection, "PassiveConnection");
|
||||
this.PassiveConnection.Name = "PassiveConnection";
|
||||
this.PassiveConnection.UseVisualStyleBackColor = true;
|
||||
this.PassiveConnection.CheckedChanged += new System.EventHandler(this.PassiveConnection_CheckedChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// FTPUI
|
||||
//
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.Username);
|
||||
this.Controls.Add(this.Password);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.PassiveConnection);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "FTPUI";
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.Load += new System.EventHandler(this.FTPUI_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.CheckBox PassiveConnection;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
}
|
||||
}
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class FTPUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FTPUI));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.PassiveConnection = new System.Windows.Forms.CheckBox();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Password
|
||||
//
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65535,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
21,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// PassiveConnection
|
||||
//
|
||||
resources.ApplyResources(this.PassiveConnection, "PassiveConnection");
|
||||
this.PassiveConnection.Name = "PassiveConnection";
|
||||
this.PassiveConnection.UseVisualStyleBackColor = true;
|
||||
this.PassiveConnection.CheckedChanged += new System.EventHandler(this.PassiveConnection_CheckedChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// label6
|
||||
//
|
||||
resources.ApplyResources(this.label6, "label6");
|
||||
this.label6.Name = "label6";
|
||||
//
|
||||
// FTPUI
|
||||
//
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.Username);
|
||||
this.Controls.Add(this.Password);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.PassiveConnection);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "FTPUI";
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.Load += new System.EventHandler(this.FTPUI_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.CheckBox PassiveConnection;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
private System.Windows.Forms.Label label6;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label1.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
<value>15</value>
|
||||
</data>
|
||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -171,7 +171,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="label3.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -198,7 +198,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label3.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name="label4.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -225,7 +225,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label4.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name="label5.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -252,7 +252,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label5.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name="Servername.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 16</value>
|
||||
@@ -273,7 +273,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Servername.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name="Path.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 40</value>
|
||||
@@ -294,7 +294,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Path.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name="Username.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 64</value>
|
||||
@@ -315,14 +315,11 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Username.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="Password.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 88</value>
|
||||
</data>
|
||||
<data name="Password.PasswordChar" type="System.Char, mscorlib" xml:space="preserve">
|
||||
<value>*</value>
|
||||
</data>
|
||||
<data name="Password.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>176, 20</value>
|
||||
</data>
|
||||
@@ -339,7 +336,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Password.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="Port.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>96, 112</value>
|
||||
@@ -360,7 +357,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Port.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name="TestConnection.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>368, 184</value>
|
||||
@@ -384,7 +381,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>TestConnection.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name="PassiveConnection.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -411,7 +408,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>PassiveConnection.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name="CreateFolderButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>392, 40</value>
|
||||
@@ -435,7 +432,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>CreateFolderButton.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name="UseSSL.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -466,7 +463,7 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>UseSSL.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="AcceptSpecifiedHash.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
@@ -574,7 +571,31 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>SSLGroup.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="label6.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 176</value>
|
||||
</data>
|
||||
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>344, 56</value>
|
||||
</data>
|
||||
<data name="label6.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>31</value>
|
||||
</data>
|
||||
<data name="label6.Text" xml:space="preserve">
|
||||
<value>Note: Some FTP servers have trouble dealing with more than 2000 files. For this reason, you are advised to select a large volume size so the number of files is low.</value>
|
||||
</data>
|
||||
<data name=">>label6.Name" xml:space="preserve">
|
||||
<value>label6</value>
|
||||
</data>
|
||||
<data name=">>label6.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>label6.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>label6.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
|
||||
+37
-1
@@ -194,5 +194,41 @@ namespace Duplicati.Library.Backend.Strings {
|
||||
return ResourceManager.GetString("MissingFolderError", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file {0} was uploaded but not found afterwards, the file listing returned {1}.
|
||||
/// </summary>
|
||||
internal static string ListVerifyFailure {
|
||||
get {
|
||||
return ResourceManager.GetString("ListVerifyFailure", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The file {0} was uploaded but the returned size was {1} and it was expected to be {2}.
|
||||
/// </summary>
|
||||
internal static string ListVerifySizeFailure {
|
||||
get {
|
||||
return ResourceManager.GetString("ListVerifySizeFailure", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Disable upload verification.
|
||||
/// </summary>
|
||||
internal static string DescriptionDisableUploadVerifyShort {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionDisableUploadVerifyShort", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to To protect against network failures, every upload will be attempted verified. Use this option to disable this verfication to make the upload faster by more unsafe..
|
||||
/// </summary>
|
||||
internal static string DescriptionDisableUploadVerifyLong {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionDisableUploadVerifyLong", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,4 +162,16 @@
|
||||
<data name="MissingFolderError" xml:space="preserve">
|
||||
<value>The folder {0} was not found, message: {1}</value>
|
||||
</data>
|
||||
<data name="ListVerifyFailure" xml:space="preserve">
|
||||
<value>The file {0} was uploaded but not found afterwards, the file listing returned {1}</value>
|
||||
</data>
|
||||
<data name="ListVerifySizeFailure" xml:space="preserve">
|
||||
<value>The file {0} was uploaded but the returned size was {1} and it was expected to be {2}</value>
|
||||
</data>
|
||||
<data name="DescriptionDisableUploadVerifyShort" xml:space="preserve">
|
||||
<value>Disable upload verification</value>
|
||||
</data>
|
||||
<data name="DescriptionDisableUploadVerifyLong" xml:space="preserve">
|
||||
<value>To protect against network failures, every upload will be attempted verified. Use this option to disable this verfication to make the upload faster by more unsafe.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -47,17 +47,29 @@ namespace Duplicati.Library.Backend
|
||||
if (m_path.IndexOf("@") > 0)
|
||||
{
|
||||
m_username = m_path.Substring(0, m_path.IndexOf("@"));
|
||||
m_path = m_path.Substring(m_path.IndexOf("@") + 1);
|
||||
|
||||
if (m_username.IndexOf(":") > 0)
|
||||
//Bugfix: cannot access paths with @ in the path
|
||||
if (m_username.Contains("/") || m_username.Contains("\\") || m_username.Contains(System.IO.Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
m_password = m_username.Substring(0, m_username.IndexOf(":"));
|
||||
m_username = m_username.Substring(m_username.IndexOf(":") + 1);
|
||||
m_username = null;
|
||||
if (options.ContainsKey("ftp-username"))
|
||||
m_username = options["ftp-username"];
|
||||
if (options.ContainsKey("ftp-password"))
|
||||
m_password = options["ftp-password"];
|
||||
}
|
||||
else
|
||||
{
|
||||
if (options.ContainsKey("ftp-password"))
|
||||
m_password = options["ftp-password"];
|
||||
m_path = m_path.Substring(m_path.IndexOf("@") + 1);
|
||||
|
||||
if (m_username.IndexOf(":") > 0)
|
||||
{
|
||||
m_password = m_username.Substring(0, m_username.IndexOf(":"));
|
||||
m_username = m_username.Substring(m_username.IndexOf(":") + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (options.ContainsKey("ftp-password"))
|
||||
m_password = options["ftp-password"];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
@@ -152,7 +152,13 @@ namespace Duplicati.Library.Backend
|
||||
Dictionary<string, Google.Documents.Document> dict = new Dictionary<string, Google.Documents.Document>();
|
||||
|
||||
foreach (Google.Documents.Document d in data)
|
||||
parentlookup.Add(d.AtomEntry.EditUri.Content, d);
|
||||
{
|
||||
// note: some files have no Edit Uri (for ex. shared by different user)
|
||||
if (d.AtomEntry.EditUri != null && d.AtomEntry.EditUri.Content != null)
|
||||
{
|
||||
parentlookup.Add(d.AtomEntry.EditUri.Content, d);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Google.Documents.Document d in parentlookup.Values)
|
||||
{
|
||||
@@ -433,7 +439,9 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
//This is a blank marker request
|
||||
req.ContentLength = 0;
|
||||
req.ContentType = "text/plain";
|
||||
//Bad... docs say "text/plain" or "text/xml", but really needs to be content type, otherwise overwrite fails
|
||||
//req.ContentType = "text/plain";
|
||||
req.ContentType = "application/octet-stream";
|
||||
|
||||
//Authenticate our request
|
||||
m_cla.ApplyAuthenticationToRequest(req);
|
||||
@@ -503,8 +511,6 @@ namespace Duplicati.Library.Backend
|
||||
using (System.IO.Stream s = resp.GetResponseStream())
|
||||
xml.Load(s);
|
||||
|
||||
string tmp = xml.ToString();
|
||||
|
||||
System.Xml.XmlNamespaceManager mgr = new XmlNamespaceManager(xml.NameTable);
|
||||
mgr.AddNamespace("atom", "http://www.w3.org/2005/Atom");
|
||||
mgr.AddNamespace("gd", "http://schemas.google.com/g/2005");
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
<EmbeddedResource Include="Strings\S3SettingsControl.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>S3SettingsControl.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Strings\S3UI.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
|
||||
+5
-5
@@ -46,10 +46,10 @@
|
||||
//
|
||||
// CredentialGroup
|
||||
//
|
||||
resources.ApplyResources(this.CredentialGroup, "CredentialGroup");
|
||||
this.CredentialGroup.Controls.Add(this.RemoveSelectedButton);
|
||||
this.CredentialGroup.Controls.Add(this.RemoveAllButton);
|
||||
this.CredentialGroup.Controls.Add(this.CredentialList);
|
||||
resources.ApplyResources(this.CredentialGroup, "CredentialGroup");
|
||||
this.CredentialGroup.Name = "CredentialGroup";
|
||||
this.CredentialGroup.TabStop = false;
|
||||
//
|
||||
@@ -69,26 +69,26 @@
|
||||
//
|
||||
// CredentialList
|
||||
//
|
||||
resources.ApplyResources(this.CredentialList, "CredentialList");
|
||||
this.CredentialList.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.CredentialList, "CredentialList");
|
||||
this.CredentialList.Name = "CredentialList";
|
||||
this.CredentialList.SelectedIndexChanged += new System.EventHandler(this.CredentialList_SelectedIndexChanged);
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Controls.Add(this.DefaultServername);
|
||||
this.groupBox2.Controls.Add(this.label2);
|
||||
this.groupBox2.Controls.Add(this.DefaultBucketRegion);
|
||||
this.groupBox2.Controls.Add(this.label1);
|
||||
this.groupBox2.Controls.Add(this.UseRRS);
|
||||
resources.ApplyResources(this.groupBox2, "groupBox2");
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
// DefaultServername
|
||||
//
|
||||
resources.ApplyResources(this.DefaultServername, "DefaultServername");
|
||||
this.DefaultServername.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.DefaultServername, "DefaultServername");
|
||||
this.DefaultServername.Name = "DefaultServername";
|
||||
this.DefaultServername.SelectedIndexChanged += new System.EventHandler(this.DefaultServername_SelectedIndexChanged);
|
||||
//
|
||||
@@ -99,8 +99,8 @@
|
||||
//
|
||||
// DefaultBucketRegion
|
||||
//
|
||||
resources.ApplyResources(this.DefaultBucketRegion, "DefaultBucketRegion");
|
||||
this.DefaultBucketRegion.FormattingEnabled = true;
|
||||
resources.ApplyResources(this.DefaultBucketRegion, "DefaultBucketRegion");
|
||||
this.DefaultBucketRegion.Name = "DefaultBucketRegion";
|
||||
this.DefaultBucketRegion.SelectedIndexChanged += new System.EventHandler(this.DefaultBucketRegion_SelectedIndexChanged);
|
||||
//
|
||||
|
||||
@@ -117,29 +117,22 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="CredentialGroup.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="RemoveSelectedButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="RemoveSelectedButton.Enabled" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="RemoveSelectedButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>54, 107</value>
|
||||
<value>328, 19</value>
|
||||
</data>
|
||||
<data name="RemoveSelectedButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>99, 23</value>
|
||||
<value>96, 23</value>
|
||||
</data>
|
||||
<data name="RemoveSelectedButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="RemoveSelectedButton.Text" xml:space="preserve">
|
||||
<value>Remove selected</value>
|
||||
<value>Remove</value>
|
||||
</data>
|
||||
<data name=">>RemoveSelectedButton.Name" xml:space="preserve">
|
||||
<value>RemoveSelectedButton</value>
|
||||
@@ -153,17 +146,14 @@
|
||||
<data name=">>RemoveSelectedButton.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="RemoveAllButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Right</value>
|
||||
</data>
|
||||
<data name="RemoveAllButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>158, 107</value>
|
||||
<value>328, 48</value>
|
||||
</data>
|
||||
<data name="RemoveAllButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>75, 23</value>
|
||||
<value>96, 23</value>
|
||||
</data>
|
||||
<data name="RemoveAllButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="RemoveAllButton.Text" xml:space="preserve">
|
||||
<value>Remove all</value>
|
||||
@@ -180,17 +170,14 @@
|
||||
<data name=">>RemoveAllButton.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="CredentialList.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="CredentialList.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 24</value>
|
||||
<value>9, 18</value>
|
||||
</data>
|
||||
<data name="CredentialList.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>214, 69</value>
|
||||
<value>313, 108</value>
|
||||
</data>
|
||||
<data name="CredentialList.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>CredentialList.Name" xml:space="preserve">
|
||||
<value>CredentialList</value>
|
||||
@@ -205,13 +192,13 @@
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="CredentialGroup.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 32</value>
|
||||
<value>5, 32</value>
|
||||
</data>
|
||||
<data name="CredentialGroup.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 139</value>
|
||||
<value>434, 138</value>
|
||||
</data>
|
||||
<data name="CredentialGroup.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="CredentialGroup.Text" xml:space="preserve">
|
||||
<value>Stored credentials</value>
|
||||
@@ -228,20 +215,14 @@
|
||||
<data name=">>CredentialGroup.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="groupBox2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Bottom, Left, Right</value>
|
||||
</data>
|
||||
<data name="DefaultServername.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="DefaultServername.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>104, 24</value>
|
||||
<value>103, 18</value>
|
||||
</data>
|
||||
<data name="DefaultServername.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>120, 21</value>
|
||||
<value>321, 21</value>
|
||||
</data>
|
||||
<data name="DefaultServername.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>5</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>DefaultServername.Name" xml:space="preserve">
|
||||
<value>DefaultServername</value>
|
||||
@@ -258,20 +239,21 @@
|
||||
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="label2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 24</value>
|
||||
<value>6, 21</value>
|
||||
</data>
|
||||
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>64, 13</value>
|
||||
<value>70, 13</value>
|
||||
</data>
|
||||
<data name="label2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label2.Text" xml:space="preserve">
|
||||
<value>Servername</value>
|
||||
<value>Server name:</value>
|
||||
</data>
|
||||
<data name=">>label2.Name" xml:space="preserve">
|
||||
<value>label2</value>
|
||||
@@ -285,17 +267,14 @@
|
||||
<data name=">>label2.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="DefaultBucketRegion.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="DefaultBucketRegion.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>104, 48</value>
|
||||
<value>103, 45</value>
|
||||
</data>
|
||||
<data name="DefaultBucketRegion.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>120, 21</value>
|
||||
<value>321, 21</value>
|
||||
</data>
|
||||
<data name="DefaultBucketRegion.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>DefaultBucketRegion.Name" xml:space="preserve">
|
||||
<value>DefaultBucketRegion</value>
|
||||
@@ -313,16 +292,16 @@
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 48</value>
|
||||
<value>6, 48</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>73, 13</value>
|
||||
<value>76, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Bucket region</value>
|
||||
<value>Bucket region:</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
@@ -343,13 +322,13 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="UseRRS.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 72</value>
|
||||
<value>9, 72</value>
|
||||
</data>
|
||||
<data name="UseRRS.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>196, 17</value>
|
||||
</data>
|
||||
<data name="UseRRS.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="UseRRS.Text" xml:space="preserve">
|
||||
<value>Use Reduced Redundancy Storage</value>
|
||||
@@ -367,13 +346,13 @@
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 179</value>
|
||||
<value>5, 181</value>
|
||||
</data>
|
||||
<data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>246, 100</value>
|
||||
<value>434, 100</value>
|
||||
</data>
|
||||
<data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="groupBox2.Text" xml:space="preserve">
|
||||
<value>Default settings</value>
|
||||
@@ -397,13 +376,13 @@
|
||||
<value>NoControl</value>
|
||||
</data>
|
||||
<data name="AllowCredentialStorage.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
<value>5, 10</value>
|
||||
</data>
|
||||
<data name="AllowCredentialStorage.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>186, 17</value>
|
||||
</data>
|
||||
<data name="AllowCredentialStorage.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="AllowCredentialStorage.Text" xml:space="preserve">
|
||||
<value>Store new S3 account information</value>
|
||||
@@ -430,7 +409,7 @@
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>265, 284</value>
|
||||
<value>445, 283</value>
|
||||
</data>
|
||||
<data name=">>$this.Name" xml:space="preserve">
|
||||
<value>S3CommonOptions</value>
|
||||
|
||||
@@ -46,6 +46,7 @@ namespace Duplicati.Library.Backend
|
||||
cfg.ServiceURL = servername;
|
||||
cfg.UserAgent = "Duplicati v" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + " S3 client with AWS SDK v" + cfg.GetType().Assembly.GetName().Version.ToString();
|
||||
cfg.UseSecureStringForAwsSecretKey = false;
|
||||
cfg.BufferSize = (int)Duplicati.Library.Utility.Utility.DEFAULT_BUFFER_SIZE;
|
||||
|
||||
m_client = new Amazon.S3.AmazonS3Client(awsID, awsKey, cfg);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -70,7 +70,7 @@ namespace Duplicati.Library.Backend.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to S3 Options.
|
||||
/// Looks up a localized string similar to S3.
|
||||
/// </summary>
|
||||
internal static string PageTitle {
|
||||
get {
|
||||
|
||||
@@ -121,6 +121,6 @@
|
||||
<value>Displays various options related to the S3 backend</value>
|
||||
</data>
|
||||
<data name="PageTitle" xml:space="preserve">
|
||||
<value>S3 Options</value>
|
||||
<value>S3</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -154,6 +154,7 @@
|
||||
<EmbeddedResource Include="Strings\SSHSettingsControl.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>SSHSettingsControl.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Strings\SSHUI.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
|
||||
@@ -560,38 +560,44 @@ namespace Duplicati.Library.Backend
|
||||
if (changeDir && m_con != null)
|
||||
return m_con;
|
||||
|
||||
SFTPCon con;
|
||||
|
||||
string keyfile;
|
||||
m_options.TryGetValue(SSH_KEYFILE_OPTION, out keyfile);
|
||||
|
||||
if ((keyfile ?? "").Trim().Length > 0)
|
||||
{
|
||||
ValidateKeyFile(m_options[SSH_KEYFILE_OPTION]);
|
||||
|
||||
con = new SFTPCon(m_server, m_username);
|
||||
con.AddIdentityFile(m_options[SSH_KEYFILE_OPTION], m_password);
|
||||
}
|
||||
else
|
||||
con = new SFTPCon(m_server, m_username, m_password);
|
||||
|
||||
con.Connect(m_port);
|
||||
|
||||
try
|
||||
{
|
||||
if (!m_noCdCommand && !string.IsNullOrEmpty(m_path) && changeDir)
|
||||
con.SetCurrenDir(m_path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Interface.FolderMissingException(string.Format(Strings.SSHBackend.FolderNotFoundManagedError, m_path, ex.Message), ex);
|
||||
}
|
||||
SFTPCon con;
|
||||
string keyfile;
|
||||
m_options.TryGetValue(SSH_KEYFILE_OPTION, out keyfile);
|
||||
|
||||
//If the connection is initialized to the right folder, we cache it
|
||||
if (changeDir)
|
||||
m_con = con;
|
||||
if ((keyfile ?? "").Trim().Length > 0)
|
||||
{
|
||||
ValidateKeyFile(m_options[SSH_KEYFILE_OPTION]);
|
||||
|
||||
return con;
|
||||
con = new SFTPCon(m_server, m_username);
|
||||
con.AddIdentityFile(m_options[SSH_KEYFILE_OPTION], m_password);
|
||||
}
|
||||
else
|
||||
con = new SFTPCon(m_server, m_username, m_password);
|
||||
|
||||
con.Connect(m_port);
|
||||
|
||||
try
|
||||
{
|
||||
if (!m_noCdCommand && !string.IsNullOrEmpty(m_path) && changeDir)
|
||||
con.SetCurrenDir(m_path);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new Interface.FolderMissingException(string.Format(Strings.SSHBackend.FolderNotFoundManagedError, m_path, ex.Message), ex);
|
||||
}
|
||||
|
||||
//If the connection is initialized to the right folder, we cache it
|
||||
if (changeDir)
|
||||
m_con = con;
|
||||
|
||||
return con;
|
||||
}
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx)
|
||||
{
|
||||
throw ReshapeSharpSSHException(sx);
|
||||
}
|
||||
}
|
||||
|
||||
private string getFullPath(string path)
|
||||
@@ -610,11 +616,18 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
string path = m_noCdCommand ? m_path : ".";
|
||||
|
||||
foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry ls in CreateManagedConnection(true).ListFiles(path))
|
||||
if (ls.getFilename().ToString() != "." && ls.getFilename().ToString() != "..")
|
||||
files.Add(new FileEntry(ls.getFilename().ToString(), ls.getAttrs().getSize(), epochOffset.Add(new TimeSpan(ls.getAttrs().getATime() * TimeSpan.TicksPerSecond)), epochOffset.Add(new TimeSpan(ls.getAttrs().getMTime() * TimeSpan.TicksPerSecond))));
|
||||
|
||||
return files;
|
||||
try
|
||||
{
|
||||
foreach (Tamir.SharpSsh.jsch.ChannelSftp.LsEntry ls in CreateManagedConnection(true).ListFiles(path))
|
||||
if (ls.getFilename().ToString() != "." && ls.getFilename().ToString() != "..")
|
||||
files.Add(new FileEntry(ls.getFilename().ToString(), ls.getAttrs().getSize(), epochOffset.Add(new TimeSpan(ls.getAttrs().getATime() * TimeSpan.TicksPerSecond)), epochOffset.Add(new TimeSpan(ls.getAttrs().getMTime() * TimeSpan.TicksPerSecond))));
|
||||
return files;
|
||||
}
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx)
|
||||
{
|
||||
throw ReshapeSharpSSHException(sx);
|
||||
}
|
||||
}
|
||||
|
||||
private void PutManaged(string remotename, string filename)
|
||||
@@ -631,43 +644,52 @@ namespace Duplicati.Library.Backend
|
||||
|
||||
private void DeleteManaged(string remotename)
|
||||
{
|
||||
CreateManagedConnection(true).Delete(remotename);
|
||||
try { CreateManagedConnection(true).Delete(remotename); }
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx) { throw ReshapeSharpSSHException(sx); }
|
||||
|
||||
}
|
||||
|
||||
private void CreateFolderManaged()
|
||||
{
|
||||
string p = m_path;
|
||||
|
||||
using (SFTPCon con = CreateManagedConnection(false))
|
||||
{
|
||||
try
|
||||
{
|
||||
//Some SSH implementations fail if the folder name has a trailing slash
|
||||
if (p.EndsWith ("/"))
|
||||
p = p.Substring (0, p.Length - 1);
|
||||
|
||||
con.Mkdir(p);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//For backwards compatibility, we also try to create the folder WITH a trailing slash,
|
||||
// this should never work, but in case there is a SSH implementation that relies
|
||||
// on this we try that too
|
||||
if (p != m_path)
|
||||
{
|
||||
try
|
||||
{
|
||||
//If this succeeds, we continue
|
||||
con.Mkdir(m_path);
|
||||
return;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
//We report the original error
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using (SFTPCon con = CreateManagedConnection(false))
|
||||
{
|
||||
try
|
||||
{
|
||||
//Some SSH implementations fail if the folder name has a trailing slash
|
||||
if (p.EndsWith("/"))
|
||||
p = p.Substring(0, p.Length - 1);
|
||||
|
||||
con.Mkdir(p);
|
||||
}
|
||||
catch
|
||||
{
|
||||
//For backwards compatibility, we also try to create the folder WITH a trailing slash,
|
||||
// this should never work, but in case there is a SSH implementation that relies
|
||||
// on this we try that too
|
||||
if (p != m_path)
|
||||
{
|
||||
try
|
||||
{
|
||||
//If this succeeds, we continue
|
||||
con.Mkdir(m_path);
|
||||
return;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
//We report the original error
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx)
|
||||
{
|
||||
throw ReshapeSharpSSHException(sx);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -712,7 +734,8 @@ namespace Duplicati.Library.Backend
|
||||
if (!m_useManaged)
|
||||
throw new Exception(Strings.SSHBackend.StreamingNotSupportedError);
|
||||
|
||||
CreateManagedConnection(true).Put(getFullPath(remotename), stream);
|
||||
try { CreateManagedConnection(true).Put(getFullPath(remotename), stream); }
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx) { throw ReshapeSharpSSHException(sx); }
|
||||
}
|
||||
|
||||
public void Get(string remotename, System.IO.Stream stream)
|
||||
@@ -720,11 +743,44 @@ namespace Duplicati.Library.Backend
|
||||
if (!m_useManaged)
|
||||
throw new Exception(Strings.SSHBackend.StreamingNotSupportedError);
|
||||
|
||||
CreateManagedConnection(true).Get(getFullPath(remotename), stream);
|
||||
try { CreateManagedConnection(true).Get(getFullPath(remotename), stream); }
|
||||
catch (Tamir.SharpSsh.jsch.SftpException sx) { throw ReshapeSharpSSHException(sx); }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Helper function that extracts error messages from SharpSSH style exceptions and converts them into regular .Net exception messages
|
||||
/// </summary>
|
||||
/// <param name="sx">The exception to convert</param>
|
||||
/// <returns>The converted exception</returns>
|
||||
private static Exception ReshapeSharpSSHException(Tamir.SharpSsh.jsch.SftpException sx)
|
||||
{
|
||||
string idstr;
|
||||
if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_OK)
|
||||
idstr = "OK";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_EOF)
|
||||
idstr = "EOF";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_NO_SUCH_FILE)
|
||||
idstr = "NO_SUCH_FILE";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_PERMISSION_DENIED)
|
||||
idstr = "PERMISSION_DENIED";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_FAILURE)
|
||||
idstr = "FAILURE";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_BAD_MESSAGE)
|
||||
idstr = "BAD_MESSAGE";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_NO_CONNECTION)
|
||||
idstr = "NO_CONNECTION";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_CONNECTION_LOST)
|
||||
idstr = "CONNECTION_LOST";
|
||||
else if (sx.id == Tamir.SharpSsh.jsch.ChannelSftp.SSH_FX_OP_UNSUPPORTED)
|
||||
idstr = "UNSUPPORTED";
|
||||
else
|
||||
idstr = "UNKNOWN";
|
||||
|
||||
return new Exception(string.Format("{0} - {1}: {2}", sx.id, idstr, sx.message), sx);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A helper function for validating SSH key files, as the support for those is limited in the SharpSSH library
|
||||
/// </summary>
|
||||
|
||||
@@ -123,16 +123,16 @@
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
<value>8, 12</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>71, 13</value>
|
||||
<value>61, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>Path to SFTP</value>
|
||||
<value>SFTP path:</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
@@ -150,16 +150,16 @@
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="UseManagedAsDefault.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>16, 40</value>
|
||||
<value>11, 35</value>
|
||||
</data>
|
||||
<data name="UseManagedAsDefault.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>166, 17</value>
|
||||
</data>
|
||||
<data name="UseManagedAsDefault.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name="UseManagedAsDefault.Text" xml:space="preserve">
|
||||
<value>Use managed SSH as default</value>
|
||||
<value>Use managed SSH by default</value>
|
||||
</data>
|
||||
<data name=">>UseManagedAsDefault.Name" xml:space="preserve">
|
||||
<value>UseManagedAsDefault</value>
|
||||
@@ -178,13 +178,13 @@
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BrowseForSFTPButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>184, 8</value>
|
||||
<value>415, 9</value>
|
||||
</data>
|
||||
<data name="BrowseForSFTPButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 20</value>
|
||||
</data>
|
||||
<data name="BrowseForSFTPButton.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="BrowseForSFTPButton.Text" xml:space="preserve">
|
||||
<value>...</value>
|
||||
@@ -201,17 +201,14 @@
|
||||
<data name=">>BrowseForSFTPButton.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name="SFTPPath.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="SFTPPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>80, 8</value>
|
||||
<value>130, 9</value>
|
||||
</data>
|
||||
<data name="SFTPPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>104, 21</value>
|
||||
<value>279, 21</value>
|
||||
</data>
|
||||
<data name="SFTPPath.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>SFTPPath.Name" xml:space="preserve">
|
||||
<value>SFTPPath</value>
|
||||
@@ -241,7 +238,7 @@
|
||||
<value>6, 13</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>212, 67</value>
|
||||
<value>445, 283</value>
|
||||
</data>
|
||||
<data name=">>BrowseForSFTPDialog.Name" xml:space="preserve">
|
||||
<value>BrowseForSFTPDialog</value>
|
||||
|
||||
+230
-230
@@ -1,230 +1,230 @@
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class SSHUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SSHUI));
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.UsePassword = new System.Windows.Forms.CheckBox();
|
||||
this.GenerateDebugOutput = new System.Windows.Forms.CheckBox();
|
||||
this.UseUnmanagedSSH = new System.Windows.Forms.CheckBox();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.Keyfile = new System.Windows.Forms.TextBox();
|
||||
this.Keyfilelabel = new System.Windows.Forms.Label();
|
||||
this.BrowseForKeyFileButton = new System.Windows.Forms.Button();
|
||||
this.OpenSSHKeyFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65500,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
22,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// Password
|
||||
//
|
||||
this.Password.AskToEnterNewPassword = false;
|
||||
this.Password.IsPasswordVisible = false;
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.Password.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// UsePassword
|
||||
//
|
||||
resources.ApplyResources(this.UsePassword, "UsePassword");
|
||||
this.UsePassword.Checked = true;
|
||||
this.UsePassword.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.UsePassword.Name = "UsePassword";
|
||||
this.UsePassword.UseVisualStyleBackColor = true;
|
||||
this.UsePassword.CheckedChanged += new System.EventHandler(this.UsePassword_CheckedChanged);
|
||||
//
|
||||
// GenerateDebugOutput
|
||||
//
|
||||
resources.ApplyResources(this.GenerateDebugOutput, "GenerateDebugOutput");
|
||||
this.GenerateDebugOutput.Name = "GenerateDebugOutput";
|
||||
this.GenerateDebugOutput.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// UseUnmanagedSSH
|
||||
//
|
||||
resources.ApplyResources(this.UseUnmanagedSSH, "UseUnmanagedSSH");
|
||||
this.UseUnmanagedSSH.Name = "UseUnmanagedSSH";
|
||||
this.UseUnmanagedSSH.UseVisualStyleBackColor = true;
|
||||
this.UseUnmanagedSSH.CheckedChanged += new System.EventHandler(this.UseUnmanagedSSH_CheckedChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// Keyfile
|
||||
//
|
||||
resources.ApplyResources(this.Keyfile, "Keyfile");
|
||||
this.Keyfile.Name = "Keyfile";
|
||||
this.Keyfile.TextChanged += new System.EventHandler(this.Keyfile_TextChanged);
|
||||
//
|
||||
// Keyfilelabel
|
||||
//
|
||||
resources.ApplyResources(this.Keyfilelabel, "Keyfilelabel");
|
||||
this.Keyfilelabel.Name = "Keyfilelabel";
|
||||
//
|
||||
// BrowseForKeyFileButton
|
||||
//
|
||||
resources.ApplyResources(this.BrowseForKeyFileButton, "BrowseForKeyFileButton");
|
||||
this.BrowseForKeyFileButton.Name = "BrowseForKeyFileButton";
|
||||
this.BrowseForKeyFileButton.UseVisualStyleBackColor = true;
|
||||
this.BrowseForKeyFileButton.Click += new System.EventHandler(this.BrowseForKeyFileButton_Click);
|
||||
//
|
||||
// OpenSSHKeyFileDialog
|
||||
//
|
||||
resources.ApplyResources(this.OpenSSHKeyFileDialog, "OpenSSHKeyFileDialog");
|
||||
//
|
||||
// SSHUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BrowseForKeyFileButton);
|
||||
this.Controls.Add(this.Keyfile);
|
||||
this.Controls.Add(this.Keyfilelabel);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.UseUnmanagedSSH);
|
||||
this.Controls.Add(this.GenerateDebugOutput);
|
||||
this.Controls.Add(this.UsePassword);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.Password);
|
||||
this.Controls.Add(this.Username);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "SSHUI";
|
||||
this.Load += new System.EventHandler(this.SSHUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox UsePassword;
|
||||
private System.Windows.Forms.CheckBox GenerateDebugOutput;
|
||||
private System.Windows.Forms.CheckBox UseUnmanagedSSH;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.TextBox Keyfile;
|
||||
private System.Windows.Forms.Label Keyfilelabel;
|
||||
private System.Windows.Forms.Button BrowseForKeyFileButton;
|
||||
private System.Windows.Forms.OpenFileDialog OpenSSHKeyFileDialog;
|
||||
}
|
||||
}
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class SSHUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SSHUI));
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.UsePassword = new System.Windows.Forms.CheckBox();
|
||||
this.GenerateDebugOutput = new System.Windows.Forms.CheckBox();
|
||||
this.UseUnmanagedSSH = new System.Windows.Forms.CheckBox();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.Keyfile = new System.Windows.Forms.TextBox();
|
||||
this.Keyfilelabel = new System.Windows.Forms.Label();
|
||||
this.BrowseForKeyFileButton = new System.Windows.Forms.Button();
|
||||
this.OpenSSHKeyFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65535,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
22,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// Password
|
||||
//
|
||||
this.Password.AskToEnterNewPassword = false;
|
||||
this.Password.IsPasswordVisible = false;
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.Password.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// UsePassword
|
||||
//
|
||||
resources.ApplyResources(this.UsePassword, "UsePassword");
|
||||
this.UsePassword.Checked = true;
|
||||
this.UsePassword.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.UsePassword.Name = "UsePassword";
|
||||
this.UsePassword.UseVisualStyleBackColor = true;
|
||||
this.UsePassword.CheckedChanged += new System.EventHandler(this.UsePassword_CheckedChanged);
|
||||
//
|
||||
// GenerateDebugOutput
|
||||
//
|
||||
resources.ApplyResources(this.GenerateDebugOutput, "GenerateDebugOutput");
|
||||
this.GenerateDebugOutput.Name = "GenerateDebugOutput";
|
||||
this.GenerateDebugOutput.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// UseUnmanagedSSH
|
||||
//
|
||||
resources.ApplyResources(this.UseUnmanagedSSH, "UseUnmanagedSSH");
|
||||
this.UseUnmanagedSSH.Name = "UseUnmanagedSSH";
|
||||
this.UseUnmanagedSSH.UseVisualStyleBackColor = true;
|
||||
this.UseUnmanagedSSH.CheckedChanged += new System.EventHandler(this.UseUnmanagedSSH_CheckedChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// Keyfile
|
||||
//
|
||||
resources.ApplyResources(this.Keyfile, "Keyfile");
|
||||
this.Keyfile.Name = "Keyfile";
|
||||
this.Keyfile.TextChanged += new System.EventHandler(this.Keyfile_TextChanged);
|
||||
//
|
||||
// Keyfilelabel
|
||||
//
|
||||
resources.ApplyResources(this.Keyfilelabel, "Keyfilelabel");
|
||||
this.Keyfilelabel.Name = "Keyfilelabel";
|
||||
//
|
||||
// BrowseForKeyFileButton
|
||||
//
|
||||
resources.ApplyResources(this.BrowseForKeyFileButton, "BrowseForKeyFileButton");
|
||||
this.BrowseForKeyFileButton.Name = "BrowseForKeyFileButton";
|
||||
this.BrowseForKeyFileButton.UseVisualStyleBackColor = true;
|
||||
this.BrowseForKeyFileButton.Click += new System.EventHandler(this.BrowseForKeyFileButton_Click);
|
||||
//
|
||||
// OpenSSHKeyFileDialog
|
||||
//
|
||||
resources.ApplyResources(this.OpenSSHKeyFileDialog, "OpenSSHKeyFileDialog");
|
||||
//
|
||||
// SSHUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.BrowseForKeyFileButton);
|
||||
this.Controls.Add(this.Keyfile);
|
||||
this.Controls.Add(this.Keyfilelabel);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.UseUnmanagedSSH);
|
||||
this.Controls.Add(this.GenerateDebugOutput);
|
||||
this.Controls.Add(this.UsePassword);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.Password);
|
||||
this.Controls.Add(this.Username);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Name = "SSHUI";
|
||||
this.Load += new System.EventHandler(this.SSHUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.CheckBox UsePassword;
|
||||
private System.Windows.Forms.CheckBox GenerateDebugOutput;
|
||||
private System.Windows.Forms.CheckBox UseUnmanagedSSH;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.TextBox Keyfile;
|
||||
private System.Windows.Forms.Label Keyfilelabel;
|
||||
private System.Windows.Forms.Button BrowseForKeyFileButton;
|
||||
private System.Windows.Forms.OpenFileDialog OpenSSHKeyFileDialog;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -452,7 +452,7 @@ namespace Duplicati.Library.Backend.Strings {
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Failed to start the SSH application ({0}).
|
||||
///Make sure that "putty" is installed, and you have set the correct path.
|
||||
///Make sure that "PuTTY" is installed, and you have set the correct path.
|
||||
///Error message: {1}.
|
||||
/// </summary>
|
||||
internal static string LaunchErrorWindows {
|
||||
|
||||
@@ -245,7 +245,7 @@ Error message: {1}</value>
|
||||
</data>
|
||||
<data name="LaunchErrorWindows" xml:space="preserve">
|
||||
<value>Failed to start the SSH application ({0}).
|
||||
Make sure that "putty" is installed, and you have set the correct path.
|
||||
Make sure that "PuTTY" is installed, and you have set the correct path.
|
||||
Error message: {1}</value>
|
||||
</data>
|
||||
<data name="PasswordMissingError" xml:space="preserve">
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -70,7 +70,7 @@ namespace Duplicati.Library.Backend.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to SSH Settings.
|
||||
/// Looks up a localized string similar to SSH.
|
||||
/// </summary>
|
||||
internal static string PageTitle {
|
||||
get {
|
||||
|
||||
@@ -121,6 +121,6 @@
|
||||
<value>Settings for the SSH backend</value>
|
||||
</data>
|
||||
<data name="PageTitle" xml:space="preserve">
|
||||
<value>SSH Settings</value>
|
||||
<value>SSH</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
+187
-187
@@ -1,187 +1,187 @@
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class TahoeUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TahoeUI));
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65500,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
3456,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
this.SpecifiedHash.TextChanged += new System.EventHandler(this.SpecifiedHash_TextChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// TahoeUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Name = "TahoeUI";
|
||||
this.Load += new System.EventHandler(this.TahoeUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
}
|
||||
}
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class TahoeUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TahoeUI));
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65535,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
3456,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
this.SpecifiedHash.TextChanged += new System.EventHandler(this.SpecifiedHash_TextChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// TahoeUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Name = "TahoeUI";
|
||||
this.Load += new System.EventHandler(this.TahoeUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
}
|
||||
}
|
||||
|
||||
+257
-257
@@ -1,257 +1,257 @@
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class WebDAVUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WebDAVUI));
|
||||
this.UseIntegratedAuth = new System.Windows.Forms.CheckBox();
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.PasswordSettings = new System.Windows.Forms.GroupBox();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.DigestAuth = new System.Windows.Forms.CheckBox();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.PasswordSettings.SuspendLayout();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// UseIntegratedAuth
|
||||
//
|
||||
resources.ApplyResources(this.UseIntegratedAuth, "UseIntegratedAuth");
|
||||
this.UseIntegratedAuth.Name = "UseIntegratedAuth";
|
||||
this.UseIntegratedAuth.UseVisualStyleBackColor = true;
|
||||
this.UseIntegratedAuth.CheckedChanged += new System.EventHandler(this.UseIntegratedAuth_CheckedChanged);
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65500,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// PasswordSettings
|
||||
//
|
||||
this.PasswordSettings.Controls.Add(this.Username);
|
||||
this.PasswordSettings.Controls.Add(this.Password);
|
||||
this.PasswordSettings.Controls.Add(this.label4);
|
||||
this.PasswordSettings.Controls.Add(this.label3);
|
||||
resources.ApplyResources(this.PasswordSettings, "PasswordSettings");
|
||||
this.PasswordSettings.Name = "PasswordSettings";
|
||||
this.PasswordSettings.TabStop = false;
|
||||
//
|
||||
// Password
|
||||
//
|
||||
this.Password.AskToEnterNewPassword = false;
|
||||
this.Password.IsPasswordVisible = false;
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.Password.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// DigestAuth
|
||||
//
|
||||
resources.ApplyResources(this.DigestAuth, "DigestAuth");
|
||||
this.DigestAuth.Name = "DigestAuth";
|
||||
this.DigestAuth.UseVisualStyleBackColor = true;
|
||||
this.DigestAuth.CheckedChanged += new System.EventHandler(this.DigestAuth_CheckedChanged);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
this.SpecifiedHash.TextChanged += new System.EventHandler(this.SpecifiedHash_TextChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// WebDAVUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.DigestAuth);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.UseIntegratedAuth);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.PasswordSettings);
|
||||
this.Name = "WebDAVUI";
|
||||
this.Load += new System.EventHandler(this.WebDAVUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.PasswordSettings.ResumeLayout(false);
|
||||
this.PasswordSettings.PerformLayout();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.CheckBox UseIntegratedAuth;
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.GroupBox PasswordSettings;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox DigestAuth;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
}
|
||||
}
|
||||
namespace Duplicati.Library.Backend
|
||||
{
|
||||
partial class WebDAVUI
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WebDAVUI));
|
||||
this.UseIntegratedAuth = new System.Windows.Forms.CheckBox();
|
||||
this.TestConnection = new System.Windows.Forms.Button();
|
||||
this.Username = new System.Windows.Forms.TextBox();
|
||||
this.Port = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Path = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.Servername = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.PasswordSettings = new System.Windows.Forms.GroupBox();
|
||||
this.Password = new Duplicati.Winforms.Controls.PasswordControl();
|
||||
this.CreateFolderButton = new System.Windows.Forms.Button();
|
||||
this.DigestAuth = new System.Windows.Forms.CheckBox();
|
||||
this.UseSSL = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptAnyHash = new System.Windows.Forms.CheckBox();
|
||||
this.AcceptSpecifiedHash = new System.Windows.Forms.CheckBox();
|
||||
this.SpecifiedHash = new System.Windows.Forms.TextBox();
|
||||
this.SSLGroup = new System.Windows.Forms.GroupBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).BeginInit();
|
||||
this.PasswordSettings.SuspendLayout();
|
||||
this.SSLGroup.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// UseIntegratedAuth
|
||||
//
|
||||
resources.ApplyResources(this.UseIntegratedAuth, "UseIntegratedAuth");
|
||||
this.UseIntegratedAuth.Name = "UseIntegratedAuth";
|
||||
this.UseIntegratedAuth.UseVisualStyleBackColor = true;
|
||||
this.UseIntegratedAuth.CheckedChanged += new System.EventHandler(this.UseIntegratedAuth_CheckedChanged);
|
||||
//
|
||||
// TestConnection
|
||||
//
|
||||
resources.ApplyResources(this.TestConnection, "TestConnection");
|
||||
this.TestConnection.Name = "TestConnection";
|
||||
this.TestConnection.UseVisualStyleBackColor = true;
|
||||
this.TestConnection.Click += new System.EventHandler(this.TestConnection_Click);
|
||||
//
|
||||
// Username
|
||||
//
|
||||
resources.ApplyResources(this.Username, "Username");
|
||||
this.Username.Name = "Username";
|
||||
this.Username.TextChanged += new System.EventHandler(this.Username_TextChanged);
|
||||
//
|
||||
// Port
|
||||
//
|
||||
resources.ApplyResources(this.Port, "Port");
|
||||
this.Port.Maximum = new decimal(new int[] {
|
||||
65535,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.Name = "Port";
|
||||
this.Port.Value = new decimal(new int[] {
|
||||
80,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.Port.ValueChanged += new System.EventHandler(this.Port_ValueChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
resources.ApplyResources(this.label1, "label1");
|
||||
this.label1.Name = "label1";
|
||||
//
|
||||
// Path
|
||||
//
|
||||
resources.ApplyResources(this.Path, "Path");
|
||||
this.Path.Name = "Path";
|
||||
this.Path.TextChanged += new System.EventHandler(this.Path_TextChanged);
|
||||
//
|
||||
// label4
|
||||
//
|
||||
resources.ApplyResources(this.label4, "label4");
|
||||
this.label4.Name = "label4";
|
||||
//
|
||||
// Servername
|
||||
//
|
||||
resources.ApplyResources(this.Servername, "Servername");
|
||||
this.Servername.Name = "Servername";
|
||||
this.Servername.TextChanged += new System.EventHandler(this.Servername_TextChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
resources.ApplyResources(this.label3, "label3");
|
||||
this.label3.Name = "label3";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
resources.ApplyResources(this.label5, "label5");
|
||||
this.label5.Name = "label5";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
resources.ApplyResources(this.label2, "label2");
|
||||
this.label2.Name = "label2";
|
||||
//
|
||||
// PasswordSettings
|
||||
//
|
||||
this.PasswordSettings.Controls.Add(this.Username);
|
||||
this.PasswordSettings.Controls.Add(this.Password);
|
||||
this.PasswordSettings.Controls.Add(this.label4);
|
||||
this.PasswordSettings.Controls.Add(this.label3);
|
||||
resources.ApplyResources(this.PasswordSettings, "PasswordSettings");
|
||||
this.PasswordSettings.Name = "PasswordSettings";
|
||||
this.PasswordSettings.TabStop = false;
|
||||
//
|
||||
// Password
|
||||
//
|
||||
this.Password.AskToEnterNewPassword = false;
|
||||
this.Password.IsPasswordVisible = false;
|
||||
resources.ApplyResources(this.Password, "Password");
|
||||
this.Password.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.Password.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
this.Password.Name = "Password";
|
||||
this.Password.TextChanged += new System.EventHandler(this.Password_TextChanged);
|
||||
//
|
||||
// CreateFolderButton
|
||||
//
|
||||
resources.ApplyResources(this.CreateFolderButton, "CreateFolderButton");
|
||||
this.CreateFolderButton.Name = "CreateFolderButton";
|
||||
this.CreateFolderButton.UseVisualStyleBackColor = true;
|
||||
this.CreateFolderButton.Click += new System.EventHandler(this.CreateFolderButton_Click);
|
||||
//
|
||||
// DigestAuth
|
||||
//
|
||||
resources.ApplyResources(this.DigestAuth, "DigestAuth");
|
||||
this.DigestAuth.Name = "DigestAuth";
|
||||
this.DigestAuth.UseVisualStyleBackColor = true;
|
||||
this.DigestAuth.CheckedChanged += new System.EventHandler(this.DigestAuth_CheckedChanged);
|
||||
//
|
||||
// UseSSL
|
||||
//
|
||||
resources.ApplyResources(this.UseSSL, "UseSSL");
|
||||
this.UseSSL.Name = "UseSSL";
|
||||
this.UseSSL.UseVisualStyleBackColor = true;
|
||||
this.UseSSL.CheckedChanged += new System.EventHandler(this.UseSSL_CheckedChanged);
|
||||
//
|
||||
// AcceptAnyHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptAnyHash, "AcceptAnyHash");
|
||||
this.AcceptAnyHash.Name = "AcceptAnyHash";
|
||||
this.AcceptAnyHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptAnyHash.CheckedChanged += new System.EventHandler(this.AcceptAnyHash_CheckedChanged);
|
||||
//
|
||||
// AcceptSpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.AcceptSpecifiedHash, "AcceptSpecifiedHash");
|
||||
this.AcceptSpecifiedHash.Name = "AcceptSpecifiedHash";
|
||||
this.AcceptSpecifiedHash.UseVisualStyleBackColor = true;
|
||||
this.AcceptSpecifiedHash.CheckedChanged += new System.EventHandler(this.AcceptSpecifiedHash_CheckedChanged);
|
||||
//
|
||||
// SpecifiedHash
|
||||
//
|
||||
resources.ApplyResources(this.SpecifiedHash, "SpecifiedHash");
|
||||
this.SpecifiedHash.Name = "SpecifiedHash";
|
||||
this.SpecifiedHash.TextChanged += new System.EventHandler(this.SpecifiedHash_TextChanged);
|
||||
//
|
||||
// SSLGroup
|
||||
//
|
||||
this.SSLGroup.Controls.Add(this.AcceptSpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.SpecifiedHash);
|
||||
this.SSLGroup.Controls.Add(this.AcceptAnyHash);
|
||||
resources.ApplyResources(this.SSLGroup, "SSLGroup");
|
||||
this.SSLGroup.Name = "SSLGroup";
|
||||
this.SSLGroup.TabStop = false;
|
||||
//
|
||||
// WebDAVUI
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.UseSSL);
|
||||
this.Controls.Add(this.SSLGroup);
|
||||
this.Controls.Add(this.DigestAuth);
|
||||
this.Controls.Add(this.CreateFolderButton);
|
||||
this.Controls.Add(this.UseIntegratedAuth);
|
||||
this.Controls.Add(this.TestConnection);
|
||||
this.Controls.Add(this.Port);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.Path);
|
||||
this.Controls.Add(this.Servername);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.PasswordSettings);
|
||||
this.Name = "WebDAVUI";
|
||||
this.Load += new System.EventHandler(this.WebDAVUI_PageLoad);
|
||||
((System.ComponentModel.ISupportInitialize)(this.Port)).EndInit();
|
||||
this.PasswordSettings.ResumeLayout(false);
|
||||
this.PasswordSettings.PerformLayout();
|
||||
this.SSLGroup.ResumeLayout(false);
|
||||
this.SSLGroup.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.CheckBox UseIntegratedAuth;
|
||||
private System.Windows.Forms.Button TestConnection;
|
||||
private System.Windows.Forms.TextBox Username;
|
||||
private System.Windows.Forms.NumericUpDown Port;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.TextBox Path;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox Servername;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.GroupBox PasswordSettings;
|
||||
private Duplicati.Winforms.Controls.PasswordControl Password;
|
||||
private System.Windows.Forms.Button CreateFolderButton;
|
||||
private System.Windows.Forms.CheckBox DigestAuth;
|
||||
private System.Windows.Forms.CheckBox UseSSL;
|
||||
private System.Windows.Forms.CheckBox AcceptAnyHash;
|
||||
private System.Windows.Forms.CheckBox AcceptSpecifiedHash;
|
||||
private System.Windows.Forms.TextBox SpecifiedHash;
|
||||
private System.Windows.Forms.GroupBox SSLGroup;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,6 +234,8 @@ namespace Duplicati.Library.Encryption
|
||||
public ProtectedCryptoStream(System.IO.Stream stream, Exception reportException, bool defaultFallback)
|
||||
: base(stream)
|
||||
{
|
||||
m_reportException = reportException;
|
||||
m_defaultFallback = defaultFallback;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="GPGCommonOptions.resx">
|
||||
<DependentUpon>GPGCommonOptions.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Strings\AESEncryption.resx">
|
||||
<SubType>Designer</SubType>
|
||||
@@ -145,6 +146,7 @@
|
||||
<EmbeddedResource Include="Strings\GPGSettingsControl.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>GPGSettingsControl.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Strings\GPGStreamWrapper.resx">
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
@@ -70,7 +70,6 @@
|
||||
this.Controls.Add(this.BrowseForGPGPathButton);
|
||||
this.Controls.Add(this.GPGPath);
|
||||
this.Controls.Add(this.label1);
|
||||
this.MinimumSize = new System.Drawing.Size(283, 32);
|
||||
this.Name = "GPGCommonOptions";
|
||||
this.Load += new System.EventHandler(this.GPGCommonOptions_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
@@ -123,16 +123,16 @@
|
||||
</data>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>8, 8</value>
|
||||
<value>8, 12</value>
|
||||
</data>
|
||||
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>109, 13</value>
|
||||
<value>57, 13</value>
|
||||
</data>
|
||||
<data name="label1.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="label1.Text" xml:space="preserve">
|
||||
<value>GPG executable path</value>
|
||||
<value>GPG path:</value>
|
||||
</data>
|
||||
<data name=">>label1.Name" xml:space="preserve">
|
||||
<value>label1</value>
|
||||
@@ -151,10 +151,10 @@
|
||||
<value>Top, Left, Right</value>
|
||||
</data>
|
||||
<data name="GPGPath.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>120, 8</value>
|
||||
<value>130, 9</value>
|
||||
</data>
|
||||
<data name="GPGPath.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>138, 21</value>
|
||||
<value>279, 21</value>
|
||||
</data>
|
||||
<data name="GPGPath.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>1</value>
|
||||
@@ -175,7 +175,7 @@
|
||||
<value>Top, Right</value>
|
||||
</data>
|
||||
<data name="BrowseForGPGPathButton.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>258, 8</value>
|
||||
<value>415, 9</value>
|
||||
</data>
|
||||
<data name="BrowseForGPGPathButton.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>24, 20</value>
|
||||
@@ -217,7 +217,7 @@
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>283, 32</value>
|
||||
<value>445, 283</value>
|
||||
</data>
|
||||
<data name=">>BrowseForGPGDialog.Name" xml:space="preserve">
|
||||
<value>BrowseForGPGDialog</value>
|
||||
|
||||
@@ -60,12 +60,12 @@ namespace Duplicati.Library.Encryption
|
||||
/// <summary>
|
||||
/// Always present commandline options (--passphrase-fd 0)
|
||||
/// </summary>
|
||||
private const string GPG_COMMANDLINE_STANDARD_OPTIONS = "--passphrase-fd 0";
|
||||
private const string GPG_COMMANDLINE_STANDARD_OPTIONS = "--batch --passphrase-fd 0";
|
||||
|
||||
/// <summary>
|
||||
/// The options that are supplied as default when encrypting (--symmetric --local-user)
|
||||
/// </summary>
|
||||
private const string GPG_ENCRYPTION_DEFAULT_OPTIONS = "--symmetric --local-user";
|
||||
private const string GPG_ENCRYPTION_DEFAULT_OPTIONS = "--batch --symmetric --local-user";
|
||||
|
||||
/// <summary>
|
||||
/// The options that are supplied as default when encrypting (default is empty)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -97,7 +97,7 @@ namespace Duplicati.Library.Encryption.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to AES-256 encryption, built in.
|
||||
/// Looks up a localized string similar to AES-256 encryption, built-in.
|
||||
/// </summary>
|
||||
internal static string DisplayName {
|
||||
get {
|
||||
|
||||
@@ -130,6 +130,6 @@
|
||||
<value>This module encrypts all files in the same way that AESCrypt does, using 256 bit AES encryption.</value>
|
||||
</data>
|
||||
<data name="DisplayName" xml:space="preserve">
|
||||
<value>AES-256 encryption, built in</value>
|
||||
<value>AES-256 encryption, built-in</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.235
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -70,7 +70,7 @@ namespace Duplicati.Library.Encryption.Strings {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to GPG Settings.
|
||||
/// Looks up a localized string similar to GPG.
|
||||
/// </summary>
|
||||
internal static string PageTitle {
|
||||
get {
|
||||
|
||||
@@ -121,6 +121,6 @@
|
||||
<value>Settings for the GPG encryption module</value>
|
||||
</data>
|
||||
<data name="PageTitle" xml:space="preserve">
|
||||
<value>GPG Settings</value>
|
||||
<value>GPG</value>
|
||||
</data>
|
||||
</root>
|
||||
</root>
|
||||
|
||||
@@ -93,6 +93,7 @@
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<Compile Include="IBackendInteraction.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Strings\CommandLineArgument.resx">
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Duplicati.Library.Interface
|
||||
{
|
||||
/// <summary>
|
||||
/// An interface for logging interactions with the backend
|
||||
/// </summary>
|
||||
public interface IBackendInteraction
|
||||
{
|
||||
/// <summary>
|
||||
/// Signals the start of a operation on the backend, such as cleanup or backup
|
||||
/// </summary>
|
||||
/// <param name='name'>The name of the operation</param>
|
||||
void BeginOperation(string name);
|
||||
|
||||
/// <summary>
|
||||
/// Signals the end of the operation
|
||||
/// </summary>
|
||||
void EndOperation();
|
||||
|
||||
/// <summary>
|
||||
/// Registers a get operation
|
||||
/// </summary>
|
||||
/// <param name='entry'>The entry involved</param>
|
||||
/// <param name='success'>True if the operation succeeeded, false otherwise</param>
|
||||
/// <param name='errorMessage'>An error message if the operation did not succeeed</param>
|
||||
void RegisterGet(IFileEntry entry, bool success, String errorMessage);
|
||||
|
||||
/// <summary>
|
||||
/// Registers a put operation
|
||||
/// </summary>
|
||||
/// <param name='entry'>The entry involved</param>
|
||||
/// <param name='success'>True if the operation succeeeded, false otherwise</param>
|
||||
/// <param name='errorMessage'>An error message if the operation did not succeeed</param>
|
||||
void RegisterPut(IFileEntry entry, bool success, String errorMessage);
|
||||
|
||||
/// <summary>
|
||||
/// Registers a delete operation
|
||||
/// </summary>
|
||||
/// <param name='entry'>The entry involved</param>
|
||||
/// <param name='success'>True if the operation succeeeded, false otherwise</param>
|
||||
/// <param name='errorMessage'>An error message if the operation did not succeeed</param>
|
||||
void RegisterDelete(IFileEntry entry, bool success, String errorMessage);
|
||||
|
||||
/// <summary>
|
||||
/// Registers a create folder operation
|
||||
/// </summary>
|
||||
/// <param name='success'>True if the operation succeeeded, false otherwise</param>
|
||||
/// <param name='errorMessage'>An error message if the operation did not succeeed</param>
|
||||
void RegisterCreateFolder(bool success, String errorMessage);
|
||||
|
||||
/// <summary>
|
||||
/// Registers a list operation
|
||||
/// </summary>
|
||||
/// <param name='files'>The entries returned, if the operation suceeded, null otherwise</param>
|
||||
/// <param name='success'>True if the operation succeeeded, false otherwise</param>
|
||||
/// <param name='errorMessage'>An error message if the operation did not succeeed</param>
|
||||
void RegisterList(List<Duplicati.Library.Interface.IFileEntry> files, bool success, String errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,12 @@ namespace Duplicati.Library.Main
|
||||
/// Gets the communication statistics assigned to the wrapper
|
||||
/// </summary>
|
||||
public CommunicationStatistics Statistics { get { return m_statistics; } }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Recorder for remote operations
|
||||
/// </summary>
|
||||
private Duplicati.Library.Interface.IBackendInteraction m_backendInterfaceLogger;
|
||||
|
||||
/// <summary>
|
||||
/// Class to represent hash failures
|
||||
/// </summary>
|
||||
@@ -223,7 +228,13 @@ namespace Duplicati.Library.Main
|
||||
|
||||
if (!string.IsNullOrEmpty(m_options.SignatureCachePath) && !System.IO.Directory.Exists(m_options.SignatureCachePath))
|
||||
System.IO.Directory.CreateDirectory(m_options.SignatureCachePath);
|
||||
|
||||
|
||||
if (!string.IsNullOrEmpty(m_options.Backendlogdatabase))
|
||||
{
|
||||
m_backendInterfaceLogger = new StateVerification.StateDatabase(m_options.Backendlogdatabase, statistics);
|
||||
m_backendInterfaceLogger.BeginOperation(m_options.MainAction.ToString());
|
||||
}
|
||||
|
||||
m_async = m_options.AsynchronousUpload;
|
||||
if (m_async)
|
||||
{
|
||||
@@ -953,16 +964,23 @@ namespace Duplicati.Library.Main
|
||||
{
|
||||
ResetBackend();
|
||||
m_statistics.AddNumberOfRemoteCalls(1);
|
||||
return m_backend.List();
|
||||
List<Duplicati.Library.Interface.IFileEntry> res = m_backend.List();
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterList(res, true, null);
|
||||
return res;
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
catch (System.Threading.ThreadAbortException tex)
|
||||
{
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterList(null, false, tex.ToString());
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
lastEx = ex;
|
||||
m_statistics.LogRetryAttempt(ex.Message, ex);
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterList(null, false, ex.ToString());
|
||||
DisposeBackend();
|
||||
|
||||
if (ex is Library.Interface.FolderMissingException && m_backendSupportsCreateFolder && m_options.AutocreateFolders)
|
||||
@@ -990,15 +1008,21 @@ namespace Duplicati.Library.Main
|
||||
m_statistics.AddNumberOfRemoteCalls(1);
|
||||
m_backend.Delete(remote.Filename);
|
||||
lastEx = null;
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterDelete(remote.Fileentry, true, null);
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
catch (System.Threading.ThreadAbortException tex)
|
||||
{
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterDelete(remote.Fileentry, false, tex.ToString());
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
lastEx = ex;
|
||||
m_statistics.LogRetryAttempt(ex.Message, ex);
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterDelete(remote.Fileentry, false, ex.ToString());
|
||||
DisposeBackend();
|
||||
|
||||
retries--;
|
||||
@@ -1206,6 +1230,15 @@ namespace Duplicati.Library.Main
|
||||
|
||||
lastEx = null;
|
||||
tempfile.Protected = true; //Don't delete it
|
||||
|
||||
if (m_backendInterfaceLogger != null)
|
||||
{
|
||||
|
||||
if (remote is ManifestEntry)
|
||||
m_backendInterfaceLogger.RegisterGet(remote.Fileentry, true, System.IO.File.ReadAllText(tempfile));
|
||||
else
|
||||
m_backendInterfaceLogger.RegisterGet(remote.Fileentry, true, null);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -1219,14 +1252,18 @@ namespace Duplicati.Library.Main
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
catch (System.Threading.ThreadAbortException tex)
|
||||
{
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterGet(remote.Fileentry, false, tex.ToString());
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
lastEx = ex;
|
||||
m_statistics.LogRetryAttempt(ex.Message, ex);
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterGet(remote.Fileentry, false, ex.ToString());
|
||||
DisposeBackend();
|
||||
|
||||
retries--;
|
||||
@@ -1250,6 +1287,8 @@ namespace Duplicati.Library.Main
|
||||
{
|
||||
string remotename = remote.Filename;
|
||||
m_statusmessage = string.Format(Strings.BackendWrapper.StatusMessageUploading, remotename, Utility.Utility.FormatSizeString(new System.IO.FileInfo(filename).Length));
|
||||
Duplicati.Library.Interface.IFileEntry log_fe = new Duplicati.Library.Interface.FileEntry(remote.Filename, remote.Filesize, DateTime.Now, DateTime.Now);
|
||||
long sourceFileSize = new System.IO.FileInfo(filename).Length;
|
||||
|
||||
try
|
||||
{
|
||||
@@ -1329,13 +1368,19 @@ namespace Duplicati.Library.Main
|
||||
|
||||
success = true;
|
||||
lastEx = null;
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterPut(log_fe, true, null);
|
||||
}
|
||||
catch (System.Threading.ThreadAbortException)
|
||||
catch (System.Threading.ThreadAbortException tex)
|
||||
{
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterPut(log_fe, false, tex.ToString());
|
||||
throw;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterPut(log_fe, false, ex.ToString());
|
||||
DisposeBackend();
|
||||
|
||||
//Even if we can create the folder, we still count it as an error to prevent trouble with backends
|
||||
@@ -1364,7 +1409,7 @@ namespace Duplicati.Library.Main
|
||||
if (!success)
|
||||
throw new Exception(string.Format(Strings.BackendWrapper.FileUploadError2, remotename, lastEx == null ? "<null>" : lastEx.Message), lastEx);
|
||||
|
||||
m_statistics.AddBytesUploaded(new System.IO.FileInfo(filename).Length);
|
||||
m_statistics.AddBytesUploaded(sourceFileSize);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -1391,8 +1436,18 @@ namespace Duplicati.Library.Main
|
||||
|
||||
private void CreateFolderInternal()
|
||||
{
|
||||
ResetBackend();
|
||||
(m_backend as Library.Interface.IBackend_v2).CreateFolder();
|
||||
try
|
||||
{
|
||||
ResetBackend();
|
||||
(m_backend as Library.Interface.IBackend_v2).CreateFolder();
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterCreateFolder(true, null);
|
||||
} catch (Exception ex) {
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.RegisterCreateFolder(false, ex.ToString());
|
||||
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateFolder()
|
||||
@@ -1624,6 +1679,9 @@ namespace Duplicati.Library.Main
|
||||
ProtectedInvoke("DisposeInternal");
|
||||
if (m_encryption != null)
|
||||
m_encryption.Dispose();
|
||||
|
||||
if (m_backendInterfaceLogger != null)
|
||||
m_backendInterfaceLogger.EndOperation();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -41,6 +41,7 @@ namespace Duplicati.Library.Main
|
||||
private long m_tooLargeFiles;
|
||||
private long m_filesWithError;
|
||||
private bool m_full = false;
|
||||
private string m_typeReason = null;
|
||||
|
||||
public BackupStatistics(DuplicatiOperationMode operationMode)
|
||||
: base(operationMode)
|
||||
@@ -149,12 +150,18 @@ namespace Duplicati.Library.Main
|
||||
set { m_filesWithError = value; }
|
||||
}
|
||||
|
||||
public void SetTypeReason(string reason)
|
||||
{
|
||||
m_typeReason = reason;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
//TODO: Figure out how to translate this without breaking the output parser
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("BackupType : " + (this.Full ? "Full" : "Incremental") + "\r\n");
|
||||
if (this.m_typeReason != null)
|
||||
sb.Append("TypeReason : " + this.m_typeReason + "\r\n");
|
||||
sb.Append("BeginTime : " + this.BeginTime.ToString(System.Globalization.CultureInfo.InvariantCulture) + "\r\n");
|
||||
sb.Append("EndTime : " + this.EndTime.ToString(System.Globalization.CultureInfo.InvariantCulture) + "\r\n");
|
||||
sb.Append("Duration : " + this.Duration.ToString() + "\r\n");
|
||||
|
||||
@@ -108,6 +108,8 @@
|
||||
<DependentUpon>RSyncDir.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VerificationFile.cs" />
|
||||
<Compile Include="StateVerification\StateDatabase.cs" />
|
||||
<Compile Include="StateVerification\LogEntryClasses.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Compression\Duplicati.Library.Compression.csproj">
|
||||
@@ -190,4 +192,7 @@
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Folder Include="StateVerification\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -183,8 +183,14 @@ namespace Duplicati.Library.Main
|
||||
/// The number of restore patches
|
||||
/// </summary>
|
||||
private int m_restorePatches = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Cache of the last progress message
|
||||
/// </summary>
|
||||
private string m_lastProgressMessage = "";
|
||||
/// <summary>
|
||||
/// A flag indicating if logging has been set, used to dispose the logging
|
||||
/// </summary>
|
||||
private bool m_hasSetLogging = false;
|
||||
|
||||
/// <summary>
|
||||
/// A flag toggling if the upload progress is reported,
|
||||
@@ -335,7 +341,8 @@ namespace Duplicati.Library.Main
|
||||
m_asyncReserved = ASYNC_RESERVED;
|
||||
m_allowUploadProgress = false;
|
||||
}
|
||||
|
||||
|
||||
//Unused, but triggers errors in the encryption setup here
|
||||
Library.Interface.IEncryption encryptionModule = m_options.NoEncryption ? null : DynamicLoader.EncryptionLoader.GetModule(m_options.EncryptionModule, m_options.Passphrase, m_options.RawOptions);
|
||||
|
||||
using (new Logging.Timer("Backup from " + string.Join(";", sources) + " to " + m_backend))
|
||||
@@ -349,6 +356,8 @@ namespace Duplicati.Library.Main
|
||||
CheckLiveControl();
|
||||
|
||||
bool full = m_options.Full;
|
||||
if (full)
|
||||
bs.SetTypeReason(string.Format(Strings.Interface.FullBecauseFlagWasSet, "full"));
|
||||
|
||||
backend = new BackendWrapper(bs, m_backend, m_options);
|
||||
backend.ProgressEvent += new Duplicati.Library.Main.RSync.RSyncDir.ProgressEventDelegate(BackupTransfer_ProgressEvent);
|
||||
@@ -364,6 +373,8 @@ namespace Duplicati.Library.Main
|
||||
|
||||
if (backupsets.Count == 0)
|
||||
{
|
||||
if (!full)
|
||||
bs.SetTypeReason(Strings.Interface.FullBecauseBackendIsEmpty);
|
||||
full = true;
|
||||
}
|
||||
else
|
||||
@@ -400,11 +411,39 @@ namespace Duplicati.Library.Main
|
||||
}
|
||||
}
|
||||
|
||||
string fullCriteria1 = null;
|
||||
string fullCriteria2 = null;
|
||||
if (!full)
|
||||
{
|
||||
full = DateTime.Now > m_options.FullIfOlderThan(backupsets[backupsets.Count - 1].Time);
|
||||
if (!full && m_options.FullIfMoreThanNInvcrementals > 0)
|
||||
full = backupsets[backupsets.Count - 1].Incrementals.Count >= m_options.FullIfMoreThanNInvcrementals;
|
||||
if (full)
|
||||
bs.SetTypeReason(string.Format(Strings.Interface.FullBecauseLastFullIsFrom, backupsets[backupsets.Count - 1].Time, m_options.FullIfOlderThanValue));
|
||||
else if (!string.IsNullOrEmpty(m_options.FullIfOlderThanValue))
|
||||
fullCriteria1 = string.Format(Strings.Interface.IncrementalBecauseLastFullIsFrom, backupsets[backupsets.Count - 1].Time, m_options.FullIfOlderThanValue);
|
||||
}
|
||||
|
||||
if (!full && m_options.FullIfMoreThanNIncrementals > 0)
|
||||
{
|
||||
full = backupsets[backupsets.Count - 1].Incrementals.Count >= m_options.FullIfMoreThanNIncrementals;
|
||||
if (full)
|
||||
bs.SetTypeReason(string.Format(Strings.Interface.FullBecauseThereAreNIncrementals, backupsets[backupsets.Count - 1].Incrementals.Count, m_options.FullIfMoreThanNIncrementals));
|
||||
else
|
||||
fullCriteria2 = string.Format(Strings.Interface.IncrementalBecauseThereAreNIncrementals, backupsets[backupsets.Count - 1].Incrementals.Count, m_options.FullIfMoreThanNIncrementals);
|
||||
|
||||
}
|
||||
bs.Full = full;
|
||||
if (!full)
|
||||
{
|
||||
if (fullCriteria1 == null && fullCriteria2 == null)
|
||||
bs.SetTypeReason(Strings.Interface.IncrementalBecauseNoFlagsWereSet);
|
||||
else if (fullCriteria2 == null)
|
||||
bs.SetTypeReason(fullCriteria1);
|
||||
else if (fullCriteria1 == null)
|
||||
bs.SetTypeReason(fullCriteria2);
|
||||
else
|
||||
bs.SetTypeReason(fullCriteria1 + ". " + fullCriteria2);
|
||||
|
||||
}
|
||||
|
||||
List<string> controlfiles = new List<string>();
|
||||
if (!string.IsNullOrEmpty(m_options.SignatureControlFiles))
|
||||
@@ -448,6 +487,8 @@ namespace Duplicati.Library.Main
|
||||
if (m_options.FullIfSourceFolderChanged)
|
||||
{
|
||||
Logging.Log.WriteMessage("Source folder count changed, issuing full backup", Duplicati.Library.Logging.LogMessageType.Information);
|
||||
if (!full)
|
||||
bs.SetTypeReason(Strings.Interface.FullBecauseSourceFoldersChanged);
|
||||
full = true;
|
||||
}
|
||||
else
|
||||
@@ -473,6 +514,8 @@ namespace Duplicati.Library.Main
|
||||
if (m_options.FullIfSourceFolderChanged)
|
||||
{
|
||||
Logging.Log.WriteMessage("Source folders changed, issuing full backup", Duplicati.Library.Logging.LogMessageType.Information);
|
||||
if (!full)
|
||||
bs.SetTypeReason(Strings.Interface.FullBecauseSourceFoldersChanged);
|
||||
full = true;
|
||||
break; //Exit the folder loop
|
||||
}
|
||||
@@ -1811,7 +1854,10 @@ namespace Duplicati.Library.Main
|
||||
OperationRunning(true);
|
||||
|
||||
if (!string.IsNullOrEmpty(m_options.Logfile))
|
||||
{
|
||||
m_hasSetLogging = true;
|
||||
Library.Logging.Log.CurrentLog = new Library.Logging.StreamLog(m_options.Logfile);
|
||||
}
|
||||
|
||||
if (stats != null)
|
||||
{
|
||||
@@ -2501,6 +2547,14 @@ namespace Duplicati.Library.Main
|
||||
m_options.LoadedModules.Clear();
|
||||
OperationRunning(false);
|
||||
}
|
||||
|
||||
if (m_hasSetLogging && Logging.Log.CurrentLog is Logging.StreamLog)
|
||||
{
|
||||
Logging.StreamLog sl = (Logging.StreamLog)Logging.Log.CurrentLog;
|
||||
Logging.Log.CurrentLog = null;
|
||||
sl.Dispose();
|
||||
m_hasSetLogging = false;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -203,6 +203,7 @@ namespace Duplicati.Library.Main
|
||||
new CommandLineArgument("allow-sleep", CommandLineArgument.ArgumentType.Boolean, Strings.Options.AllowsleepShort, Strings.Options.AllowsleepShort, "false"),
|
||||
new CommandLineArgument("no-connection-reuse", CommandLineArgument.ArgumentType.Boolean, Strings.Options.NoconnectionreuseShort, Strings.Options.NoconnectionreuseLong, "false"),
|
||||
|
||||
new CommandLineArgument("backend-log-database", CommandLineArgument.ArgumentType.Path, Strings.Options.BackendlogdatabaseShort, Strings.Options.BackendlogdatabaseLong),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -288,10 +289,26 @@ namespace Duplicati.Library.Main
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the string describing when a full backup should be performed
|
||||
/// </summary>
|
||||
public string FullIfOlderThanValue
|
||||
{
|
||||
get
|
||||
{
|
||||
string v;
|
||||
if (!m_options.TryGetValue("full-if-older-than", out v))
|
||||
return null;
|
||||
else if (string.IsNullOrEmpty(v))
|
||||
return null;
|
||||
return v;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A value indicating how many incrementals are required to trigger a full backup
|
||||
/// </summary>
|
||||
public int FullIfMoreThanNInvcrementals
|
||||
public int FullIfMoreThanNIncrementals
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -978,6 +995,21 @@ namespace Duplicati.Library.Main
|
||||
/// </summary>
|
||||
public bool NoConnectionReuse { get { return GetBool("no-connection-reuse"); } }
|
||||
|
||||
/// <summary>
|
||||
/// The path to a log database file, or null
|
||||
/// </summary>
|
||||
public string Backendlogdatabase
|
||||
{
|
||||
get
|
||||
{
|
||||
string value;
|
||||
if (!m_options.TryGetValue("backend-log-database", out value))
|
||||
value = null;
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of modules, the key indicates if they are loaded
|
||||
/// </summary>
|
||||
|
||||
@@ -2224,6 +2224,13 @@ namespace Duplicati.Library.Main.RSync
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (m_lastPartialFile != null)
|
||||
{
|
||||
try { m_lastPartialFile.Dispose(); }
|
||||
catch { }
|
||||
m_lastPartialFile = null;
|
||||
}
|
||||
|
||||
if (m_patches != null)
|
||||
{
|
||||
foreach (Library.Interface.ICompression arc in m_patches)
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Duplicati.Library.Main.StateVerification
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a single invocation of Duplicati
|
||||
/// </summary>
|
||||
[XmlType(TypeName="collection")]
|
||||
[XmlRootAttribute(ElementName="duplicati-state-db")]
|
||||
[Serializable()]
|
||||
public class InvocationCollection
|
||||
{
|
||||
[XmlAttribute("begin")]
|
||||
public DateTime BeginTime;
|
||||
[XmlAttribute("end")]
|
||||
public DateTime EndTime;
|
||||
[XmlAttribute("operation")]
|
||||
public string Operation;
|
||||
|
||||
[XmlElement("events")]
|
||||
[XmlElement("list", typeof(ListLogEntry))]
|
||||
[XmlElement("put", typeof(PutLogEntry))]
|
||||
[XmlElement("get", typeof(GetLogEntry))]
|
||||
[XmlElement("delete", typeof(DeleteLogEntry))]
|
||||
[XmlElement("createfolder", typeof(CreateFolderLogEntry))]
|
||||
public List<LogEntryBase> Entries;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The base for all operations performed on a remote folder
|
||||
/// </summary>
|
||||
[Serializable()]
|
||||
public abstract class LogEntryBase
|
||||
{
|
||||
[XmlAttribute("op")]
|
||||
public BackendOperation Operation;
|
||||
[XmlElement("message")]
|
||||
public string LogMessage;
|
||||
[XmlAttribute("success")]
|
||||
public bool Success;
|
||||
[XmlAttribute("timestamp")]
|
||||
public DateTime Timestamp = DateTime.Now;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A single remote file
|
||||
/// </summary>
|
||||
[XmlType(TypeName="file")]
|
||||
public class FileItem
|
||||
{
|
||||
[XmlAttribute("name")]
|
||||
public string Name;
|
||||
[XmlAttribute("size")]
|
||||
public long Size;
|
||||
[XmlAttribute("modified")]
|
||||
public DateTime Modified;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of the LIST operation
|
||||
/// </summary>
|
||||
[XmlType(TypeName="list")]
|
||||
public class ListLogEntry : LogEntryBase
|
||||
{
|
||||
[XmlElement("contents")]
|
||||
public List<FileItem> Files;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of the file based entries
|
||||
/// </summary>
|
||||
public abstract class FileEntryType : LogEntryBase
|
||||
{
|
||||
[XmlElement("file")]
|
||||
public FileItem File;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of a DELETE operation
|
||||
/// </summary>
|
||||
[XmlType(TypeName="delete")]
|
||||
public class DeleteLogEntry : FileEntryType
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of the GET operation
|
||||
/// </summary>
|
||||
[XmlType(TypeName="get")]
|
||||
public class GetLogEntry : FileEntryType
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of the PUT operation
|
||||
/// </summary>
|
||||
[XmlType(TypeName="put")]
|
||||
public class PutLogEntry : FileEntryType
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Representation of the CREATEFOLDER operation
|
||||
/// </summary>
|
||||
[XmlType(TypeName="createfolder")]
|
||||
public class CreateFolderLogEntry : LogEntryBase
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
#region Disclaimer / License
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU Lesser General Public
|
||||
// License as published by the Free Software Foundation; either
|
||||
// version 2.1 of the License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
//
|
||||
#endregion
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace Duplicati.Library.Main.StateVerification
|
||||
{
|
||||
/// <summary>
|
||||
/// Possible backend operations
|
||||
/// </summary>
|
||||
public enum BackendOperation
|
||||
{
|
||||
Get,
|
||||
Put,
|
||||
List,
|
||||
Delete,
|
||||
CreateFolder
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Maintains local state information about the expected remote directory contents
|
||||
/// </summary>
|
||||
public class StateDatabase : Duplicati.Library.Interface.IBackendInteraction, IEnumerable<LogEntryBase>
|
||||
{
|
||||
private string m_filename;
|
||||
private List<InvocationCollection> m_invocations;
|
||||
private InvocationCollection m_current;
|
||||
private CommunicationStatistics m_stats;
|
||||
|
||||
public StateDatabase(string filename, CommunicationStatistics stats)
|
||||
{
|
||||
m_filename = filename;
|
||||
m_stats = stats;
|
||||
|
||||
if (System.IO.File.Exists(filename))
|
||||
{
|
||||
XmlSerializer s = new XmlSerializer(typeof(List<InvocationCollection>), new XmlRootAttribute("duplicati-state-db"));
|
||||
using (System.IO.FileStream fs = System.IO.File.OpenRead(m_filename))
|
||||
m_invocations = (List<InvocationCollection>)s.Deserialize(fs);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_invocations = new List<InvocationCollection>();
|
||||
}
|
||||
|
||||
m_current = new InvocationCollection();
|
||||
m_current.BeginTime = DateTime.Now;
|
||||
m_current.Entries = new List<LogEntryBase>();
|
||||
}
|
||||
|
||||
public void BeginOperation(string name)
|
||||
{
|
||||
m_current.Operation = name;
|
||||
}
|
||||
|
||||
public void EndOperation()
|
||||
{
|
||||
m_current.EndTime = DateTime.Now;
|
||||
Save();
|
||||
}
|
||||
|
||||
|
||||
private class ItemEnumerator : IEnumerator<LogEntryBase>
|
||||
{
|
||||
private List<InvocationCollection> m_invocations;
|
||||
private InvocationCollection m_current;
|
||||
private int m_i;
|
||||
private int m_j;
|
||||
private bool m_isCurrentAdded;
|
||||
|
||||
public ItemEnumerator(List<InvocationCollection> invocations, InvocationCollection current)
|
||||
{
|
||||
m_invocations = invocations;
|
||||
m_current = current;
|
||||
m_isCurrentAdded = invocations.Count > 0 && invocations[invocations.Count - 1] == current;
|
||||
this.Reset();
|
||||
}
|
||||
|
||||
#region IEnumerator[LogEntryBase] implementation
|
||||
public LogEntryBase Current
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_i >= m_invocations.Count + (m_isCurrentAdded ? 0 : 1))
|
||||
return null;
|
||||
|
||||
InvocationCollection ic = (m_i >= m_invocations.Count) ? m_current : m_invocations[m_i];
|
||||
if (m_j >= ic.Entries.Count)
|
||||
return null;
|
||||
|
||||
return ic.Entries[m_j];
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IEnumerator implementation
|
||||
public bool MoveNext ()
|
||||
{
|
||||
if (m_i >= m_invocations.Count + (m_isCurrentAdded ? 0 : 1))
|
||||
return false;
|
||||
|
||||
InvocationCollection ic = (m_i >= m_invocations.Count) ? m_current : m_invocations[m_i];
|
||||
m_j++;
|
||||
|
||||
if (m_j >= ic.Entries.Count)
|
||||
{
|
||||
m_i++;
|
||||
m_j = -1;
|
||||
return MoveNext();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Reset ()
|
||||
{
|
||||
m_i = 0;
|
||||
m_j = -1;
|
||||
}
|
||||
|
||||
object System.Collections.IEnumerator.Current
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.Current;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IDisposable implementation
|
||||
public void Dispose ()
|
||||
{
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
private int FindFileItem(List<FileItem> files, string name)
|
||||
{
|
||||
for(int i = 0; i < files.Count; i++)
|
||||
if (files[i].Name.Equals(name, StringComparison.InvariantCulture))
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public List<FileItem> GetAndVerifyCurrentState()
|
||||
{
|
||||
//First we find the most recent LIST operation
|
||||
List<FileItem> last_list = new List<FileItem>();
|
||||
foreach(LogEntryBase leb in this)
|
||||
{
|
||||
if (leb.Success)
|
||||
{
|
||||
if (leb.Operation == BackendOperation.List)
|
||||
{
|
||||
//If there was a list operation before, check if we have the same contents
|
||||
List<FileItem> new_list = ((ListLogEntry)leb).Files;
|
||||
if (last_list != null && last_list.Count != 0)
|
||||
{
|
||||
StringBuilder changeMessages = new StringBuilder();
|
||||
|
||||
foreach(FileItem fi in new_list)
|
||||
{
|
||||
int ix = FindFileItem(last_list, fi.Name);
|
||||
if (ix == -1)
|
||||
changeMessages.AppendLine("A file was added unexpectedly: " + fi.Name);
|
||||
else
|
||||
last_list.RemoveAt(ix);
|
||||
}
|
||||
|
||||
foreach(FileItem fi in last_list)
|
||||
changeMessages.AppendLine("A file was removed unexpectedly: " + fi.Name);
|
||||
|
||||
if (changeMessages.Length > 0 && m_stats != null)
|
||||
{
|
||||
m_stats.LogWarning("Change found in list @" + leb.Timestamp
|
||||
+ Environment.NewLine +
|
||||
changeMessages.ToString(), null);
|
||||
}
|
||||
}
|
||||
|
||||
last_list = new List<FileItem>(new_list);
|
||||
}
|
||||
|
||||
if (last_list != null)
|
||||
{
|
||||
if (leb.Operation == BackendOperation.Put)
|
||||
{
|
||||
//Check for overwrite
|
||||
int ix = FindFileItem(last_list, ((PutLogEntry)leb).File.Name);
|
||||
if (ix != -1)
|
||||
last_list.RemoveAt(ix);
|
||||
last_list.Add(((PutLogEntry)leb).File);
|
||||
|
||||
}
|
||||
else if (leb.Operation == BackendOperation.Delete)
|
||||
{
|
||||
string name = ((DeleteLogEntry)leb).File.Name;
|
||||
int ix = FindFileItem(last_list, name);
|
||||
|
||||
if (ix == -1)
|
||||
{
|
||||
if (m_stats != null)
|
||||
m_stats.LogWarning("Delete @" + leb.Timestamp + " for file not found: " + name, null);
|
||||
}
|
||||
else
|
||||
last_list.RemoveAt(ix);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return last_list;
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
if (m_invocations.Count == 0 || m_invocations[m_invocations.Count -1] != m_current)
|
||||
m_invocations.Add(m_current);
|
||||
|
||||
XmlSerializer s = new XmlSerializer(typeof(List<InvocationCollection>), new XmlRootAttribute("duplicati-state-db"));
|
||||
using (System.IO.FileStream fs = System.IO.File.OpenWrite(m_filename))
|
||||
s.Serialize(fs, m_invocations);
|
||||
}
|
||||
|
||||
public void RegisterGet(Duplicati.Library.Interface.IFileEntry entry, bool success, String errorMessage)
|
||||
{
|
||||
m_current.Entries.Add(new GetLogEntry() {
|
||||
Operation = BackendOperation.Get,
|
||||
Success = success,
|
||||
LogMessage = errorMessage,
|
||||
File = new FileItem() {
|
||||
Name = entry.Name,
|
||||
Size = entry.Size,
|
||||
Modified = entry.LastModification
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void RegisterDelete(Duplicati.Library.Interface.IFileEntry entry, bool success, String errorMessage)
|
||||
{
|
||||
m_current.Entries.Add(new DeleteLogEntry() {
|
||||
Operation = BackendOperation.Delete,
|
||||
Success = success,
|
||||
LogMessage = errorMessage,
|
||||
File = new FileItem() {
|
||||
Name = entry.Name,
|
||||
Size = entry.Size,
|
||||
Modified = entry.LastModification
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void RegisterPut(Duplicati.Library.Interface.IFileEntry entry, bool success, String errorMessage)
|
||||
{
|
||||
m_current.Entries.Add(new PutLogEntry() {
|
||||
Operation = BackendOperation.Put,
|
||||
Success = success,
|
||||
LogMessage = errorMessage,
|
||||
File = new FileItem() {
|
||||
Name = entry.Name,
|
||||
Size = entry.Size,
|
||||
Modified = entry.LastModification
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void RegisterCreateFolder(bool success, String errorMessage)
|
||||
{
|
||||
m_current.Entries.Add(new CreateFolderLogEntry() {
|
||||
Operation = BackendOperation.CreateFolder,
|
||||
Success = success,
|
||||
LogMessage = errorMessage
|
||||
});
|
||||
}
|
||||
|
||||
public void RegisterList(List<Duplicati.Library.Interface.IFileEntry> files, bool success, String errorMessage)
|
||||
{
|
||||
var ent = new ListLogEntry() {
|
||||
Operation = BackendOperation.List,
|
||||
LogMessage = errorMessage,
|
||||
Success = success,
|
||||
Files = files == null ? null : new List<FileItem>()
|
||||
};
|
||||
|
||||
if (files != null)
|
||||
foreach(var f in files)
|
||||
ent.Files.Add(new FileItem() {
|
||||
Name = f.Name,
|
||||
Size = f.Size,
|
||||
Modified = f.LastModification
|
||||
});
|
||||
|
||||
m_current.Entries.Add(ent);
|
||||
|
||||
//As we have added the entry, we can just run the normal verification process
|
||||
GetAndVerifyCurrentState();
|
||||
}
|
||||
|
||||
#region IEnumerable[LogEntryBase] implementation
|
||||
public IEnumerator<LogEntryBase> GetEnumerator ()
|
||||
{
|
||||
return new ItemEnumerator(m_invocations, m_current);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region IEnumerable implementation
|
||||
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
+73
-1
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.237
|
||||
// Runtime Version:4.0.30319.239
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -204,6 +204,78 @@ namespace Duplicati.Library.Main.Strings {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to A full backup is made because no existing backup chains were found on the destination.
|
||||
/// </summary>
|
||||
internal static string FullBecauseBackendIsEmpty {
|
||||
get {
|
||||
return ResourceManager.GetString("FullBecauseBackendIsEmpty", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to A full backup was forced with the --{0} flag.
|
||||
/// </summary>
|
||||
internal static string FullBecauseFlagWasSet {
|
||||
get {
|
||||
return ResourceManager.GetString("FullBecauseFlagWasSet", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to A full backup is made because the latest full backup is from {0} and the full backup threshold is {1}.
|
||||
/// </summary>
|
||||
internal static string FullBecauseLastFullIsFrom {
|
||||
get {
|
||||
return ResourceManager.GetString("FullBecauseLastFullIsFrom", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to A full backup is made because the source folders have changed.
|
||||
/// </summary>
|
||||
internal static string FullBecauseSourceFoldersChanged {
|
||||
get {
|
||||
return ResourceManager.GetString("FullBecauseSourceFoldersChanged", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to A full backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}.
|
||||
/// </summary>
|
||||
internal static string FullBecauseThereAreNIncrementals {
|
||||
get {
|
||||
return ResourceManager.GetString("FullBecauseThereAreNIncrementals", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An incremental backup is made because the latest full backup is from {0} and the full backup threshold is {1}.
|
||||
/// </summary>
|
||||
internal static string IncrementalBecauseLastFullIsFrom {
|
||||
get {
|
||||
return ResourceManager.GetString("IncrementalBecauseLastFullIsFrom", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An incremental backup is made because no full backup criteria was found.
|
||||
/// </summary>
|
||||
internal static string IncrementalBecauseNoFlagsWereSet {
|
||||
get {
|
||||
return ResourceManager.GetString("IncrementalBecauseNoFlagsWereSet", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An incremental backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}.
|
||||
/// </summary>
|
||||
internal static string IncrementalBecauseThereAreNIncrementals {
|
||||
get {
|
||||
return ResourceManager.GetString("IncrementalBecauseThereAreNIncrementals", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to An internal error occured, and the operation was aborted to protect the backup sets.
|
||||
/// </summary>
|
||||
|
||||
@@ -112,10 +112,10 @@
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="BadSortingDetectedError" xml:space="preserve">
|
||||
<value>Bad sorting of backup times detected</value>
|
||||
@@ -333,4 +333,28 @@
|
||||
<data name="DeleteManifestsSuggestion" xml:space="preserve">
|
||||
<value>If this error cannot be resolved, you can either create a new full backup or delete the offending manifests manually, followed by a cleanup command. The offending manifest files are:</value>
|
||||
</data>
|
||||
<data name="FullBecauseBackendIsEmpty" xml:space="preserve">
|
||||
<value>A full backup is made because no existing backup chains were found on the destination</value>
|
||||
</data>
|
||||
<data name="FullBecauseFlagWasSet" xml:space="preserve">
|
||||
<value>A full backup was forced with the --{0} flag</value>
|
||||
</data>
|
||||
<data name="FullBecauseLastFullIsFrom" xml:space="preserve">
|
||||
<value>A full backup is made because the latest full backup is from {0} and the full backup threshold is {1}</value>
|
||||
</data>
|
||||
<data name="FullBecauseSourceFoldersChanged" xml:space="preserve">
|
||||
<value>A full backup is made because the source folders have changed</value>
|
||||
</data>
|
||||
<data name="FullBecauseThereAreNIncrementals" xml:space="preserve">
|
||||
<value>A full backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}</value>
|
||||
</data>
|
||||
<data name="IncrementalBecauseLastFullIsFrom" xml:space="preserve">
|
||||
<value>An incremental backup is made because the latest full backup is from {0} and the full backup threshold is {1}</value>
|
||||
</data>
|
||||
<data name="IncrementalBecauseNoFlagsWereSet" xml:space="preserve">
|
||||
<value>An incremental backup is made because no full backup criteria was found</value>
|
||||
</data>
|
||||
<data name="IncrementalBecauseThereAreNIncrementals" xml:space="preserve">
|
||||
<value>An incremental backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}</value>
|
||||
</data>
|
||||
</root>
|
||||
+19
-1
@@ -1229,5 +1229,23 @@ namespace Duplicati.Library.Main.Strings {
|
||||
return ResourceManager.GetString("VssexcludewritersShort", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Database log of remote operations.
|
||||
/// </summary>
|
||||
internal static string BackendlogdatabaseShort {
|
||||
get {
|
||||
return ResourceManager.GetString("BackendlogdatabaseShort", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Use this option to specify a path to a file that will store information about backend operations. This option can be used to track down errors by comparing the backend state with the expected backend state..
|
||||
/// </summary>
|
||||
internal static string BackendlogdatabaseLong {
|
||||
get {
|
||||
return ResourceManager.GetString("BackendlogdatabaseLong", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,6 +505,12 @@
|
||||
<value>If no files have changed, Duplicati will not upload a backup set. If the backup data is used to verify that a backup was executed, this option will make Duplicati upload a backupset even if it is empty</value>
|
||||
</data>
|
||||
<data name="UploadUnchangedBackupsShort" xml:space="preserve">
|
||||
<value>Upload empty backup files </value>
|
||||
<value>Upload empty backup files</value>
|
||||
</data>
|
||||
<data name="BackendlogdatabaseShort" xml:space="preserve">
|
||||
<value>Database log of remote operations</value>
|
||||
</data>
|
||||
<data name="BackendlogdatabaseLong" xml:space="preserve">
|
||||
<value>Use this option to specify a path to a file that will store information about backend operations. This option can be used to track down errors by comparing the backend state with the expected backend state.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -80,7 +80,7 @@ namespace Duplicati.Library.SharpRSync
|
||||
/// <param name="input">The stream to read from</param>
|
||||
public ChecksumFileReader(System.IO.Stream input)
|
||||
{
|
||||
m_hashAlgorithm = Mono.Security.Cryptography.MD4.Create("MD4");
|
||||
m_hashAlgorithm = MD4Helper.Create();
|
||||
m_hashAlgorithm.Initialize();
|
||||
|
||||
//Read and verify that the file header is valid
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Duplicati.Library.SharpRSync
|
||||
m_blocklen = blocklength;
|
||||
m_stronglen = stronglength;
|
||||
m_outstream = outputstream;
|
||||
m_hashAlgorithm = Mono.Security.Cryptography.MD4.Create("MD4");
|
||||
m_hashAlgorithm = MD4Helper.Create();
|
||||
|
||||
m_hashAlgorithm.Initialize();
|
||||
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
</Compile>
|
||||
<Compile Include="UnitTest.cs" />
|
||||
<Compile Include="Utility.cs" />
|
||||
<Compile Include="MD4Helper.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
// Copyright (C) 2011, Kenneth Skovhede
|
||||
// http://www.hexad.dk, opensource@hexad.dk
|
||||
//
|
||||
// This library is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as
|
||||
// published by the Free Software Foundation; either version 2.1 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This library is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public
|
||||
// License along with this library; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
using System;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace Duplicati.Library.SharpRSync
|
||||
{
|
||||
/// <summary>
|
||||
/// MD4 instance creation helper, uses system MD4 if found, otherwise uses the bundled managed MD4 implementation from Mono
|
||||
/// </summary>
|
||||
public static class MD4Helper
|
||||
{
|
||||
/// <summary>
|
||||
/// Create a new instance of the MD4 hash algorithm
|
||||
/// </summary>
|
||||
public static HashAlgorithm Create()
|
||||
{
|
||||
HashAlgorithm o = CryptoConfig.CreateFromName("MD4") as System.Security.Cryptography.HashAlgorithm;
|
||||
if (o != null)
|
||||
return o;
|
||||
else
|
||||
return new Mono.Security.Cryptography.MD4Managed();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,6 +25,11 @@ namespace Duplicati.Library.SharpRSync
|
||||
{
|
||||
public static class Utility
|
||||
{
|
||||
/// <summary>
|
||||
/// Size of buffers for copying stream
|
||||
/// </summary>
|
||||
public static long DEFAULT_BUFFER_SIZE = 64 * 1024;
|
||||
|
||||
/// <summary>
|
||||
/// Some streams can return a number that is less than the requested number of bytes.
|
||||
/// This is usually due to fragmentation, and is solved by issuing a new read.
|
||||
@@ -90,7 +95,7 @@ namespace Duplicati.Library.SharpRSync
|
||||
/// <param name="count">The number of bytes to copy</param>
|
||||
public static void StreamCopy(System.IO.Stream input, System.IO.Stream output, long count)
|
||||
{
|
||||
byte[] buf = new byte[4096];
|
||||
byte[] buf = new byte[DEFAULT_BUFFER_SIZE];
|
||||
while (count > 0)
|
||||
{
|
||||
int a = input.Read(buf, 0, (int)Math.Min(count, buf.Length));
|
||||
|
||||
@@ -25,6 +25,16 @@ namespace Duplicati.Library.Utility
|
||||
{
|
||||
public static class Utility
|
||||
{
|
||||
/// <summary>
|
||||
/// Size of buffers for copying stream
|
||||
/// </summary>
|
||||
public static long DEFAULT_BUFFER_SIZE = 64 * 1024;
|
||||
|
||||
/// <summary>
|
||||
/// A value indicating if the current process is running in 64bit mode
|
||||
/// </summary>
|
||||
public static readonly bool Is64BitProcess = IntPtr.Size == 8;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the hash algorithm used for calculating a hash
|
||||
/// </summary>
|
||||
@@ -70,7 +80,7 @@ namespace Duplicati.Library.Utility
|
||||
try { source.Position = 0; }
|
||||
catch { }
|
||||
|
||||
byte[] buf = new byte[4096];
|
||||
byte[] buf = new byte[DEFAULT_BUFFER_SIZE];
|
||||
int read;
|
||||
|
||||
while ((read = source.Read(buf, 0, buf.Length)) != 0)
|
||||
|
||||
@@ -64,6 +64,8 @@ namespace Duplicati.License
|
||||
return "1.3 Beta (r1047)";
|
||||
else if (v == new Version(1, 3, 0, 1066))
|
||||
return "1.3";
|
||||
else if (v == new Version(1, 3, 0, 1205))
|
||||
return "1.3.1";
|
||||
else
|
||||
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
}
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
Duplicati is an Open Source project, originally written and maintained by Kenneth Skovhede. We would like to thank all contributors who made Duplicati what it is today. A special thanks to the many users who let us know how they are using Duplicati, ask for new features, test development builds and thus help us improve Duplicati further.
|
||||
Duplicati is an Open Source project, originally written and maintained by Kenneth Skovhede. We would like to thank all contributors and maintainers of third party modules who made Duplicati what it is today. A special thanks to the many users who let us know how they are using Duplicati, ask for new features, test development builds and thus help us improve Duplicati further.
|
||||
|
||||
Software Development:
|
||||
Kenneth Skovhede - kenneth@duplicati.com
|
||||
René Stach - rene@duplicati.com
|
||||
Livio Bertacco
|
||||
Daniel Halan
|
||||
Birunthan Mohanathas
|
||||
James Colton
|
||||
|
||||
Artwork:
|
||||
Kenneth Skovhede
|
||||
|
||||
Translations:
|
||||
Brazilian, pt-BR: Gabriell Hahmann
|
||||
French, fr-FR: Matthieu Weber
|
||||
Spanish, es-ES: JosepV
|
||||
German, de-DE: Ernst Mair
|
||||
: Mathias Block
|
||||
: DooM ElHado
|
||||
: Leo nowhere
|
||||
Danish, da-DK: Kenneth Skovhede
|
||||
Chinese, zh-CN: Born Kanas
|
||||
Danish, da-DK: Kenneth Skovhede
|
||||
French, fr-FR: Matthieu Weber
|
||||
German, de-DE: Ernst Mair, Mathias Block, DooM ElHado, Leo nowhere
|
||||
Italian, it-IT: Riccardo Stoppani
|
||||
Spanish, es-ES: JosepV
|
||||
|
||||
|
||||
Duplicati.Scheduler:
|
||||
Kenneth Bergeron, IAP Worldwide Services, Inc
|
||||
NOAA :: National Marine Fisheries Service
|
||||
|
||||
The licenses of the third party libraries used by Duplicati can be seen in the list to the left.
|
||||
NOAA :: National Marine Fisheries Service
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<ignore>{0}\t{1}</ignore>
|
||||
<ignore>Password</ignore>
|
||||
<ignore>OK</ignore>
|
||||
<ignore>...</ignore>
|
||||
<ignore>s</ignore>
|
||||
<ignore>(...)</ignore>
|
||||
<ignore>bytes</ignore>
|
||||
<ignore>bytes/s</ignore>
|
||||
<ignore>gb</ignore>
|
||||
<ignore>gb/s</ignore>
|
||||
<ignore>kb</ignore>
|
||||
<ignore>kb/s</ignore>
|
||||
<ignore>mb</ignore>
|
||||
<ignore>mb/s</ignore>
|
||||
<ignore>Stop</ignore>
|
||||
<ignore>backup</ignore>
|
||||
<ignore>{0}</ignore>
|
||||
<ignore>--{0}:{1}</ignore>
|
||||
<ignore>Backup: {0}</ignore>
|
||||
<ignore>CloudFiles (Rackspace)</ignore>
|
||||
<ignore>Server</ignore>
|
||||
<ignore>keyfile</ignore>
|
||||
<ignore>{0} bytes</ignore>
|
||||
<ignore>{0:N} GB</ignore>
|
||||
<ignore>{0:N} KB</ignore>
|
||||
<ignore>{0:N} MB</ignore>
|
||||
</root>
|
||||
+1364
-1330
File diff suppressed because it is too large
Load Diff
+1099
-1090
File diff suppressed because it is too large
Load Diff
@@ -119,38 +119,38 @@ Errors: {3}",""
|
||||
"CommandLine\Strings\Program.es-ES.resx","VerificationErrorHeader","not-updated","Reported error messages:",""
|
||||
"CommandLine\Strings\Program.es-ES.resx","WrongNumberOfCommandsError_v2","not-updated","Found {0} commands but expected {1}, commands:
|
||||
{2}",""
|
||||
"GUI\ApplicationSetup.es-ES.resx","$this.Text","updated","Duplicati setup","Instalación de Duplicati"
|
||||
"GUI\ApplicationSetup.es-ES.resx","$this.Text","updated","Duplicati Options","Instalación de Duplicati"
|
||||
"GUI\ApplicationSetup.es-ES.resx","AdvancedTab.Text","updated","Advanced","Avanzado"
|
||||
"GUI\ApplicationSetup.es-ES.resx","BalloonNotificationLevel.ToolTip","updated","Choose the level of notification given by balloon tips","Elija el nivel de notificaciones dadas por globos de sugerencias"
|
||||
"GUI\ApplicationSetup.es-ES.resx","Bandwidth.ToolTip","updated","Set the initial bandwidth limits to use in Duplicati","Selecciona el límite de ancho de banda usado por Duplicati"
|
||||
"GUI\ApplicationSetup.es-ES.resx","BasicTab.Text","updated","Basic","Básico"
|
||||
"GUI\ApplicationSetup.es-ES.resx","CacheSizeLabel.Text","updated","Calculating cache size ...","Calculando el tamaño de caché ..."
|
||||
"GUI\ApplicationSetup.es-ES.resx","CacheSizeLabel.ToolTip","updated","The size of the current cache folder","El tamaño de la carpeta de caché actual"
|
||||
"GUI\ApplicationSetup.es-ES.resx","CacheSizeLabel.Text","updated","Calculating cache size...","Calculando el tamaño de caché ..."
|
||||
"GUI\ApplicationSetup.es-ES.resx","CacheSizeLabel.ToolTip","unused","","El tamaño de la carpeta de caché actual"
|
||||
"GUI\ApplicationSetup.es-ES.resx","CancelBtn.Text","updated","Cancel","Cancelar"
|
||||
"GUI\ApplicationSetup.es-ES.resx","ClearCacheButton.Text","updated","Clear cache","Limpiar caché"
|
||||
"GUI\ApplicationSetup.es-ES.resx","ClearCacheButton.ToolTip","updated","Clear any signature files stored in cache, they will be re-downloaded the next time the backup is activated","Limpiar cualquier fichero de firmas guardado en la caché, serán vueltos a descargar la próxima vez que la copia de seguridad se active"
|
||||
"GUI\ApplicationSetup.es-ES.resx","ClearCacheButton.ToolTip","updated","Clear any signature files stored in cache. Signatures will be re-downloaded on next backup.","Limpiar cualquier fichero de firmas guardado en la caché, serán vueltos a descargar la próxima vez que la copia de seguridad se active"
|
||||
"GUI\ApplicationSetup.es-ES.resx","CommonPassword.ToolTip","updated","Enter the default password to apply to new backups","Introduzca la contraseña por defecto para aplicar a nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","EncryptionMethod.Text","updated","Encryption method","Método de encriptación"
|
||||
"GUI\ApplicationSetup.es-ES.resx","EncryptionMethod.Text","updated","Encryption method:","Método de encriptación"
|
||||
"GUI\ApplicationSetup.es-ES.resx","EncryptionMethod.ToolTip","updated","Choose the default encryption module to use for new backups","Selecciona el módulo de encriptación por defecto a usarse para las nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","EncryptionModule.ToolTip","updated","Choose the default encryption module to use for new backups","Selecciona el módulo de encriptación por defecto a usarse para las nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox1.Text","updated","User interface settings","Ajustes de interfaz de usuario"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox2.Text","updated","Path settings (Advanced)","Configuración de ruta (Avanzado)"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox4.Text","updated","Backup control settings used at startup","Configuración de control de las copia de seguridad utilizado en el arranque"
|
||||
"GUI\ApplicationSetup.es-ES.resx","HideDonateButton.Text","updated","Hide the donate button on the main wizard page","Esconde el botón de donaciones de la página principal del asistente"
|
||||
"GUI\ApplicationSetup.es-ES.resx","HideDonateButton.ToolTip","updated","Check this box to prevent the display of the donation button in the wizard","Selecciona esta casilla para prevenir que se muestre el boón de donaciones en el asistente"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label1.Text","updated","Time a log is shown in recent backups","Tiempo que un registro se muestra en copias de seguridad recientes"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox1.Text","updated","User interface","Ajustes de interfaz de usuario"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox2.Text","updated","Cache","Configuración de ruta (Avanzado)"
|
||||
"GUI\ApplicationSetup.es-ES.resx","groupBox4.Text","updated","Default throttle settings","Configuración de control de las copia de seguridad utilizado en el arranque"
|
||||
"GUI\ApplicationSetup.es-ES.resx","HideDonateButton.Text","updated","Hide Donate button on the main wizard page","Esconde el botón de donaciones de la página principal del asistente"
|
||||
"GUI\ApplicationSetup.es-ES.resx","HideDonateButton.ToolTip","unused","","Selecciona esta casilla para prevenir que se muestre el boón de donaciones en el asistente"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label1.Text","updated","Time to display past backups in log:","Tiempo que un registro se muestra en copias de seguridad recientes"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label1.ToolTip","updated","Select the time a backup is displayed in the log window after completion","Seleccione el tiempo que una copia de seguridad es mostrada en la ventana de registros después de completarse"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label2.Text","updated","Sections","Secciones"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label3.Text","updated","User interface language","Idioma del interfaz de usuario"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label3.ToolTip","updated","Choose the language for the user interface (requires restart)","Escoje el idioma del interfaz de usuario (requiere reinicio)"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label4.Text","updated","Temporary folder","Carpeta temporal"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label4.ToolTip","updated","Enter the path where Duplicati stores temporary files","Introduce la ruta donde Duplicati almacena los ficheros temporales"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label5.Text","updated","Password","Contraseña"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label5.ToolTip","updated","Enter the default password to apply to new backups","Introduzca la contraseña por defecto para aplicar a nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label6.Text","updated","Content","Contenido"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label7.Text","updated","Period to pause duplicati after startup","Período a pausar Duplicati después de arrancar"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label7.ToolTip","updated","Select the amount of time Duplicat is paused after startup","Selecciona el tiempo total que Duplicati debe estar pausado después de arrancar"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label8.Text","updated","Balloon notifications","Notificaciones"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label2.Text","updated","Sections:","Secciones"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label3.Text","updated","Language:","Idioma del interfaz de usuario"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label3.ToolTip","updated","Select user interface language (requires restart)","Escoje el idioma del interfaz de usuario (requiere reinicio)"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label4.Text","updated","Temporary folder:","Carpeta temporal"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label4.ToolTip","unused","","Introduce la ruta donde Duplicati almacena los ficheros temporales"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label5.Text","unused","","Contraseña"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label5.ToolTip","unused","","Introduzca la contraseña por defecto para aplicar a nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label6.Text","updated","Content:","Contenido"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label7.Text","updated","Time to wait after startup:","Período a pausar Duplicati después de arrancar"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label7.ToolTip","updated","Select the amount of time Duplicati is paused after startup","Selecciona el tiempo total que Duplicati debe estar pausado después de arrancar"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label8.Text","updated","Backup notifications:","Notificaciones"
|
||||
"GUI\ApplicationSetup.es-ES.resx","label8.ToolTip","updated","Choose the level of notification given by balloon tips","Elija el nivel de notificaciones dadas por globos de sugerencias"
|
||||
"GUI\ApplicationSetup.es-ES.resx","LanguageSelection.ToolTip","updated","Choose the language for the user interface (requires restart)","Escoje el idioma del interfaz de usuario (requiere reinicio)"
|
||||
"GUI\ApplicationSetup.es-ES.resx","LicenseLink.Text","updated","Homepage","Página principal"
|
||||
@@ -158,9 +158,9 @@ Errors: {3}",""
|
||||
"GUI\ApplicationSetup.es-ES.resx","LicenseSections.ToolTip","updated","Lists the available license sections","Listado de las secciones disponibles de licencias"
|
||||
"GUI\ApplicationSetup.es-ES.resx","LicenseTab.Text","updated","License","Licencia"
|
||||
"GUI\ApplicationSetup.es-ES.resx","OKBtn.Text","updated","OK","De acuerdo"
|
||||
"GUI\ApplicationSetup.es-ES.resx","PasswordDefaultsGroup.Text","updated","Password settings applied to new backups","Configuración de contraseñas aplicada a nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","PasswordDefaultsGroup.Text","updated","Default password","Configuración de contraseñas aplicada a nuevas copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","RecentDuration.ToolTip","updated","Select the time a backup is displayed in the log window after completion","Selecciona el tiempo que una copia de seguridad es mostrada en la ventana de registro después de completarse"
|
||||
"GUI\ApplicationSetup.es-ES.resx","SignatureCacheEnabled.Text","updated","Signature cache","Caché de firmas"
|
||||
"GUI\ApplicationSetup.es-ES.resx","SignatureCacheEnabled.Text","updated","Signature cache:","Caché de firmas"
|
||||
"GUI\ApplicationSetup.es-ES.resx","SignatureCacheEnabled.ToolTip","updated","A signature cache limits the amount of data Duplicati needs to download by keeping a copy on the machine, enabling this feature makes the backups faster","Un caché de firmas limita el total de datos que Duplicati necesita bajar al disponer de una copia en la máquina, activando esta característica se realizan las copias de seguridad más rápidamente"
|
||||
"GUI\ApplicationSetup.es-ES.resx","SignatureCachePathBrowse.Text","missing","...",""
|
||||
"GUI\ApplicationSetup.es-ES.resx","SignatureCachePathBrowse.ToolTip","updated","Browse for the signature cache folder","Navegar para encontrar la carpeta con la caché de firmas"
|
||||
@@ -169,7 +169,7 @@ Errors: {3}",""
|
||||
"GUI\ApplicationSetup.es-ES.resx","TempPathBrowse.Text","missing","...",""
|
||||
"GUI\ApplicationSetup.es-ES.resx","TempPathBrowse.ToolTip","updated","Browse for the temporary folder","Navegar para encontrar la carpeta temporal"
|
||||
"GUI\ApplicationSetup.es-ES.resx","ThreadPriorityPicker.ToolTip","updated","Set the initial thread priority to be used by Duplicati","Selecciona la prioridad de procesado usado por Duplicati"
|
||||
"GUI\ApplicationSetup.es-ES.resx","UseCommonPassword.Text","updated","Use a password to protect backups","Usar una contraseña para proteger las copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","UseCommonPassword.Text","updated","Use password for new backups:","Usar una contraseña para proteger las copias de seguridad"
|
||||
"GUI\ApplicationSetup.es-ES.resx","UseCommonPassword.ToolTip","updated","Enable this to use the same password for multiple backups","Activa esta opción para utilizar la misma contraseña para varias copias de seguridad"
|
||||
"GUI\HelperControls\BackupFileList.es-ES.resx","changeDestinationToolStripMenuItem.Text","updated","Change destination...","Cambiar destino..."
|
||||
"GUI\HelperControls\BackupFileList.es-ES.resx","folderBrowserDialog.Description","updated","Select the folder to restore to","Selecciona la carpeta donde restaurar"
|
||||
@@ -259,17 +259,37 @@ Una nueva versión de Mono dará soporte a esta página."
|
||||
"GUI\HelperControls\Strings\FilterEditor.es-ES.resx","InvalidCharsInFilenameError","updated","The filename {0} has invalid characters","El archivo {0} tiene caracteres inválidos "
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","BytesName","not-updated","bytes",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","BytesPerSecond","not-updated","bytes/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","GBName","not-updated","gb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","GBPerSecond","not-updated","gb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","KBName","not-updated","kb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","KBPerSecond","not-updated","kb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","MBName","not-updated","mb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","MBPerSecond","not-updated","mb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","GBName","not-updated","GB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","GBPerSecond","not-updated","GB/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","KBName","not-updated","kB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","KBPerSecond","not-updated","kB/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","MBName","not-updated","MB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.es-ES.resx","MBPerSecond","not-updated","MB/s",""
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.es-ES.resx","FileName","not-updated","File Name '{0}'",""
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.es-ES.resx","FileType","not-updated","File Type '{0}'",""
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.es-ES.resx","TotalSizeLabel","not-updated","Total {0} files at {1}",""
|
||||
"GUI\HelperControls\Strings\WaitForOperation.es-ES.resx","ReallyAbortQuestion","updated","Are you sure you want to abort the operation?","¿Está seguro que quiere abortar la operación?"
|
||||
"GUI\HelperControls\Strings\WaitForOperation.es-ES.resx","UserCancelled","updated","The user cancelled the operation","El usuario ha cancelado la operación"
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","$this.Text","missing","Test Search Selection",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","btnCancel.Text","missing","Cancel",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","btnOK.Text","missing","OK",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","chFile.Text","missing","Filename",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","chFileExt.Text","missing","Ext",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","chPath.Text","missing","Path",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","chSize.Text","missing","Size",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","label1.Text","missing","Filters:",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","label2.Text","missing","Use context menu to add and remove filters",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","label3.Text","missing","Files to be included:",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","lbLoading.Text","missing","Scanning files, please wait....",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miExclude.Text","missing","Exclude",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miExcludeFileExt.Text","missing","Add file extension filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miExcludeFileName.Text","missing","Add filename filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miExcludeFilePath.Text","missing","File Path",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miInclude.Text","missing","Include",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miIncludeFileExt.Text","missing","Add file extension filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miIncludeFileName.Text","missing","Add filename filer",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","miIncludeFilePath.Text","missing","File path",""
|
||||
"GUI\HelperControls\TestSearchSelection.es-ES.resx","removeFilterToolStripMenuItem.Text","missing","Remove Filter",""
|
||||
"GUI\HelperControls\ThreadPriorityPicker.es-ES.resx","ThreadPriority.Items","updated","High (Not recommended)","Alto (no recomendado)"
|
||||
"GUI\HelperControls\ThreadPriorityPicker.es-ES.resx","ThreadPriority.Items1","updated","Above normal","Por encima del normal"
|
||||
"GUI\HelperControls\ThreadPriorityPicker.es-ES.resx","ThreadPriority.Items2","missing","Normal",""
|
||||
@@ -296,55 +316,6 @@ Una nueva versión de Mono dará soporte a esta página."
|
||||
"GUI\MainForm.es-ES.resx","stopToolStripMenuItem.Text","missing","Stop",""
|
||||
"GUI\MainForm.es-ES.resx","throttleOptionsToolStripMenuItem.Text","updated","Throttle options...","Opciones del acelerador..."
|
||||
"GUI\MainForm.es-ES.resx","wizardToolStripMenuItem.Text","updated","Wizard...","Asistente..."
|
||||
"GUI\Properties\Resources.es-ES.resx","AddedFile","unused","","../Resources/AddedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","AddedFolder","unused","","../Resources/AddedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","AddedOrModifiedFile","unused","","../Resources/AddedOrModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Clock05","unused","","../Resources/Clock05.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Clock15","unused","","../Resources/Clock15.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Clock30","unused","","../Resources/Clock30.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Clock60","unused","","../Resources/Clock60.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","CloseMenuIcon","unused","","../Resources/CloseMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","ControlFile","unused","","../Resources/ControlFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Delay","unused","","../Resources/Delay.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","DeletedFile","unused","","../Resources/DeletedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","DeletedFolder","unused","","../Resources/DeletedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","donate_button","unused","","../Resources/donate_button.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Duplicati","unused","","../Resources/Duplicati.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","EmptyBackupStatusIcon","unused","","../Resources/EmptyBackupStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","ErrorStatusIcon","unused","","../Resources/ErrorStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","ExamineMenuIcon","unused","","../Resources/ExamineMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","FolderOpen","unused","","../Resources/FolderOpen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","FullBackup","unused","","../Resources/FullBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","help","unused","","../Resources/help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","IncompleteFile","unused","","../Resources/IncompleteFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","InterruptedStatusIcon","unused","","../Resources/InterruptedStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","LogMenuIcon","unused","","../Resources/LogMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","LogViewer","unused","","../Resources/LogViewer.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","ModifiedFile","unused","","../Resources/ModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","OKStatusIcon","unused","","../Resources/OKStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","PartialBackup","unused","","../Resources/PartialBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","PartialStatusIcon","unused","","../Resources/PartialStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Pause","unused","","../Resources/Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Play","unused","","../Resources/Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","SettingsMenuIcon","unused","","../Resources/SettingsMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","SmallLogo","unused","","../Resources/SmallLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Status_OK","unused","","../Resources/Status OK.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Status_pause","unused","","../Resources/Status pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Status_Working","unused","","../Resources/Status Working.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","StatusMenuIcon","unused","","../Resources/StatusMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Stop","unused","","../Resources/Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Throttle","unused","","../Resources/Throttle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","ThrottleIcon","unused","","../Resources/Throttle.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Trash","unused","","../Resources/Trash.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayNormal","unused","","../Resources/TrayNormal.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayNormalError","unused","","../Resources/TrayNormalError.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayNormalPause","unused","","../Resources/TrayNormalPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayNormalWarning","unused","","../Resources/TrayNormalWarning.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayWorking","unused","","../Resources/TrayWorking.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","TrayWorkingPause","unused","","../Resources/TrayWorkingPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","WarningStatusIcon","unused","","../Resources/WarningStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","Wizard","unused","","../Resources/Wizard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.es-ES.resx","WizardMenuIcon","unused","","../Resources/WizardMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\RestoreBackup.es-ES.resx","$this.Text","updated","RestoreBackup","RestaurarCopiaSeguridad"
|
||||
"GUI\RestoreBackup.es-ES.resx","CancelBtn.Text","updated","Cancel","Cancelar"
|
||||
"GUI\RestoreBackup.es-ES.resx","folderBrowserDialog.Description","updated","Select the folder where the data will be restored to","Selecciona la carpeta donde los datos serán restaurados"
|
||||
@@ -377,18 +348,18 @@ Una nueva versión de Mono dará soporte a esta página."
|
||||
"GUI\ServiceStatus.es-ES.resx","viewLogToolStripMenuItem.Text","updated","View log ...","Ver registro..."
|
||||
"GUI\ServiceStatus.es-ES.resx","wizardHelpLabel.Text","missing","(Create, edit, delete, run, restore backups)",""
|
||||
"GUI\ServiceStatus.es-ES.resx","wizardLink.Text","updated","Duplicati Wizard","Asistente de Duplicati"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Continous","updated","While backup is running (and on errors/warnings)","Mientras una copia de seguridad está en marcha (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Errors","updated","On backup errors","En errores de copia de seguridad"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Off","updated","No balloon notifications","Sin notificaciones de globo"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Start","updated","On backup start (and errors/warnings)","Al inicio de copia de seguridad (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_StartAndStop","updated","On backup start and stop (and errors/warnings)","Al inicio y fin de copia de seguridad (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Warnings","updated","On backup errors and warnings","En errores y avisos de copia de seguridad"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Continous","updated","While running, and on errors, warnings","Mientras una copia de seguridad está en marcha (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Errors","updated","On errors","En errores de copia de seguridad"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Off","updated","No notifications","Sin notificaciones de globo"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Start","updated","On start, errors, warnings","Al inicio de copia de seguridad (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_StartAndStop","updated","On start, stop, errors, warnings","Al inicio y fin de copia de seguridad (y en los errores/avisos)"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","BalloonNotification_Warnings","updated","On errors, warnings","En errores y avisos de copia de seguridad"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","CacheSize","updated","Cache size: {0}","Tamaño de caché: {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","CalculatingCacheSize","updated","Calculating cache size ...","Calculando el tamaño de caché ..."
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","ConfirmCacheDelete","updated","Delete signature files in the folder:
|
||||
{0}","Borrar ficheros de firmas en la carpeta: {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","DefaultLanguage","updated","System language, {0}","Lenguaje del sistema, {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","DialogTitle","updated","Duplicati Setup, version {0}","Instalación de Duplicati, versión {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","DialogTitle","updated","Duplicati Options, version {0}","Instalación de Duplicati, versión {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","EncryptionModuleLoadError","updated","An error occured while loading encryption modules: {0}","Ha ocurrido un error mientras se cargaban los módulos de encriptación: {0}"
|
||||
"GUI\Strings\ApplicationSetup.es-ES.resx","ErrorWhileExaminingFolder","updated","An exception occured while examining the folder: {0}.
|
||||
Do you want to use that folder anyway?","Ha ocurrido una excepción mientras se examinaba la carpeta: {0}. ¿Quieres usar esta carpeta igualmente?"
|
||||
@@ -420,7 +391,7 @@ Do you want to use that folder anyway?","La carpeta seleccionada no contiene el
|
||||
"GUI\Strings\Common.es-ES.resx","TwoWeeks","updated","Two weeks","Dos semanas"
|
||||
"GUI\Strings\DatabaseUpgrader.es-ES.resx","BackupFilenamePrefix","updated","backup","copia de seguridad"
|
||||
"GUI\Strings\DatabaseUpgrader.es-ES.resx","DatabaseFormatError","updated","Unable to determine database format: {0}","Imposible determinar el formato de la base de datos: {0}"
|
||||
"GUI\Strings\DatabaseUpgrader.es-ES.resx","InvalidVersionError","updated","
|
||||
"GUI\Strings\DatabaseUpgrader.es-ES.resx","InvalidVersionError","updated","
|
||||
The database has version {0} but the largest supported version is {1}.
|
||||
|
||||
This is likely caused by upgrading to a newer version and then downgrading.
|
||||
@@ -928,10 +899,13 @@ Error message: {0}",""
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","label3.Text","updated","Username","Nombre de usuario"
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","label4.Text","updated","Password","Contraseña"
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","label5.Text","updated","Port (optional)","Puerto (opcional)"
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","label6.Text","missing","Note: Some FTP servers have trouble dealing with more than 2000 files. For this reason, you are advised to select a large volume size so the number of files is low.",""
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","PassiveConnection.Text","updated","Use passive connection","Usar conexión pasiva"
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","TestConnection.Text","updated","Test connection","Probar conexión"
|
||||
"Library\Backend\FTP\FTPUI.es-ES.resx","UseSSL.Text","updated","Use SSL","Usar SSL"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","Description","not-updated","This backend can read and write data to an FTP based backend. Allowed formats are ""ftp://hostname/folder"" or ""ftp://username:password@hostname/folder""",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionDisableUploadVerifyLong","not-updated","To protect against network failures, every upload will be attempted verified. Use this option to disable this verfication to make the upload faster by more unsafe.",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionDisableUploadVerifyShort","not-updated","Disable upload verification",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionFTPActiveLong","not-updated","If this flag is set, the FTP connection is made in active mode. Even if the ""ftp-passive"" flag is also set, the connection will be made in active mode",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionFTPActiveShort","not-updated","Toggles the FTP connections method",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionFTPPassiveLong","not-updated","If this flag is set, the FTP connection is made in passive mode, which works better with some firewalls. If the ""ftp-regular"" flag is also set, this flag is ignored",""
|
||||
@@ -945,6 +919,8 @@ Error message: {0}",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionUseSSLLong","not-updated","Use this flag to communicate using Secure Socket Layer (SSL) over ftp (ftps).",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DescriptionUseSSLShort","not-updated","Instructs Duplicati to use an SSL (ftps) connection",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","DisplayName","updated","FTP based","Basado en FTP"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","ListVerifyFailure","not-updated","The file {0} was uploaded but not found afterwards, the file listing returned {1}",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","ListVerifySizeFailure","not-updated","The file {0} was uploaded but the returned size was {1} and it was expected to be {2}",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.es-ES.resx","MissingFolderError","updated","The folder {0} was not found, message: {1}","La carpeta {0} no se ha encontrado, mensaje: {1}"
|
||||
"Library\Backend\FTP\Strings\FTPUI.es-ES.resx","ApproveCertificateHashQuestion","updated","The certificate was not valid ({0}). Do you want to approve the certificate anyway and retry?","El certificado no es válido ({0}). ¿Quieres aprobar el certificado igualmente y volver a probar?"
|
||||
"Library\Backend\FTP\Strings\FTPUI.es-ES.resx","CreateMissingFolderQuestion","updated","The folder does not exist, do you want to create it?","La carpeta no existe, no quieres volver a crearla?"
|
||||
@@ -955,10 +931,10 @@ Error message: {0}",""
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","AllowCredentialStorage.Text","updated","Store new S3 account information","Guardar nueva información de cuenta S3"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","CredentialGroup.Text","updated","Stored credentials","Guardar credenciales"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","groupBox2.Text","updated","Default settings","Ajustes por defecto"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","label1.Text","missing","Bucket region",""
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","label2.Text","missing","Servername",""
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","label1.Text","missing","Bucket region:",""
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","label2.Text","missing","Server name:",""
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","RemoveAllButton.Text","updated","Remove all","Borrar todos"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","RemoveSelectedButton.Text","updated","Remove selected","Borrar seleccionados"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","RemoveSelectedButton.Text","updated","Remove","Borrar seleccionados"
|
||||
"Library\Backend\S3\S3CommonOptions.es-ES.resx","UseRRS.Text","updated","Use Reduced Redundancy Storage","Usar Reduced Redundancy Storage"
|
||||
"Library\Backend\S3\S3UI.es-ES.resx","CreateBucket.Text","updated","Create bucket","Crear bucket"
|
||||
"Library\Backend\S3\S3UI.es-ES.resx","label1.Text","updated","AWS Access ID","ID de acceso a AWS"
|
||||
@@ -1004,7 +980,7 @@ Error message: {0}",""
|
||||
"Library\Backend\S3\Strings\S3Backend.es-ES.resx","UnableToDecodeBucketnameError","not-updated","Unable to determine the bucket name for host: {0}",""
|
||||
"Library\Backend\S3\Strings\S3Backend.es-ES.resx","UnableToParseURLError","not-updated","Could not parse the url: {0}",""
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.es-ES.resx","PageDescription","not-updated","Displays various options related to the S3 backend",""
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.es-ES.resx","PageTitle","not-updated","S3 Options",""
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.es-ES.resx","PageTitle","not-updated","S3",""
|
||||
"Library\Backend\S3\Strings\S3UI.es-ES.resx","BucketnameCaseWarning","not-updated","The bucket name is not in all lower case.
|
||||
{0}
|
||||
Do you want to convert the bucket name to lower case?",""
|
||||
@@ -1037,8 +1013,8 @@ Do you want to create the bucket now?",""
|
||||
"Library\Backend\S3\Strings\S3UI.es-ES.resx","PageTitle","not-updated","Backup storage options",""
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","BrowseForSFTPButton.Text","missing","...",""
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","BrowseForSFTPDialog.Filter","missing","Executables (*.exe)|*.exe|All files (*.*)|*.*",""
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","label1.Text","updated","Path to SFTP","Ruta al SFTP"
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","UseManagedAsDefault.Text","missing","Use managed SSH as default",""
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","label1.Text","updated","SFTP path:","Ruta al SFTP"
|
||||
"Library\Backend\SSH\SSHCommonOptions.es-ES.resx","UseManagedAsDefault.Text","missing","Use managed SSH by default",""
|
||||
"Library\Backend\SSH\SSHUI.es-ES.resx","BrowseForKeyFileButton.Text","missing","...",""
|
||||
"Library\Backend\SSH\SSHUI.es-ES.resx","CreateFolderButton.Text","updated","Create folder","Crear carpeta"
|
||||
"Library\Backend\SSH\SSHUI.es-ES.resx","GenerateDebugOutput.Text","updated","Generate debug output","Generar salida de debug"
|
||||
@@ -1102,7 +1078,7 @@ Do you want to create the bucket now?",""
|
||||
Make sure that ""expect"" is installed.
|
||||
Error message: {1}",""
|
||||
"Library\Backend\SSH\Strings\SSHBackend.es-ES.resx","LaunchErrorWindows","not-updated","Failed to start the SSH application ({0}).
|
||||
Make sure that ""putty"" is installed, and you have set the correct path.
|
||||
Make sure that ""PuTTY"" is installed, and you have set the correct path.
|
||||
Error message: {1}",""
|
||||
"Library\Backend\SSH\Strings\SSHBackend.es-ES.resx","PasswordMissingError","not-updated","A password was expected, but passwordless login was specified",""
|
||||
"Library\Backend\SSH\Strings\SSHBackend.es-ES.resx","StreamingNotSupportedError","not-updated","The SSH backend does not support streaming when using the unmanaged SSH backend, if you supply --use-sftp-application, you must also specify --disable-streaming-transfers",""
|
||||
@@ -1134,7 +1110,7 @@ Utilizará la ruta predeterminada a la aplicación SFTP.
|
||||
La aplicación SFTP no se pudo encontrar cuando se buscaba en el sistema
|
||||
¿Estás seguro de que esto es lo que quieres? "
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.es-ES.resx","PageDescription","updated","Settings for the SSH backend","Opciones del back-end SSH"
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.es-ES.resx","PageTitle","updated","SSH Settings","Opciones SSH"
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.es-ES.resx","PageTitle","updated","SSH","Opciones SSH"
|
||||
"Library\Backend\SSH\Strings\SSHUI.es-ES.resx","CreateMissingFolderQuestion","updated","The folder does not exist, do you want to create it?","La carpeta no existe, quieres crearla?"
|
||||
"Library\Backend\SSH\Strings\SSHUI.es-ES.resx","MissingSCPWarning","updated","Duplicati was unable to verify the existence of the sftp program.
|
||||
sftp may work regardless, if it is located in the system search path.
|
||||
@@ -1228,12 +1204,12 @@ Do you want the leading slash to be removed?",""
|
||||
"Library\DynamicLoader\Strings\DynamicLoader.es-ES.resx","DynamicTypeLoadError","updated","Failed to load process type {0} assembly {1}, error message: {2}","No se pudo cargar el proceso de tipo {0} ensamblado {1}, mensaje de error: {2}"
|
||||
"Library\Encryption\GPGCommonOptions.es-ES.resx","BrowseForGPGDialog.Filter","updated","Executables (*.exe)|*.exe|All files (*.*)|*.*","Ejecutables (*.exe)|*.exe|Todos los ficheros (*.*)|*.*"
|
||||
"Library\Encryption\GPGCommonOptions.es-ES.resx","BrowseForGPGPathButton.Text","missing","...",""
|
||||
"Library\Encryption\GPGCommonOptions.es-ES.resx","label1.Text","updated","GPG executable path","Ruta del ejecutable GPG"
|
||||
"Library\Encryption\GPGCommonOptions.es-ES.resx","label1.Text","updated","GPG path:","Ruta del ejecutable GPG"
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","AesencryptiondontallowfallbackLong_v2","updated","If the decryption fails using AES Crypt, dont attempt to use the previous encryption file format. ","Si la desencriptación con AES Crypt falla, no intentar usar el método previo de encriptación."
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","AesencryptiondontallowfallbackShort","updated","Do not attempt to decrypt using previous method","No intentar desencriptar usando los métodos previos"
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","BadKeyStretchError","not-updated","Bad key stretch",""
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","Description_v2","not-updated","This module encrypts all files in the same way that AESCrypt does, using 256 bit AES encryption.",""
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","DisplayName","updated","AES-256 encryption, built in","Encriptación AES-256, incorporada"
|
||||
"Library\Encryption\Strings\AESEncryption.es-ES.resx","DisplayName","updated","AES-256 encryption, built-in","Encriptación AES-256, incorporada"
|
||||
"Library\Encryption\Strings\EncryptionBase.es-ES.resx","DecryptionError","updated","Failed to decrypt data (invalid passphrase?): {0}","No se ha podido desencriptar los datos (frase de acceso inválida?): {0}"
|
||||
"Library\Encryption\Strings\GPGCommonOptions.es-ES.resx","GpgAutodetectedInfo","not-updated","Leave empty to use the gpg application found: {0}",""
|
||||
"Library\Encryption\Strings\GPGCommonOptions.es-ES.resx","GpgNotAutodetectedWarning","not-updated","The gpg application could not be located, please enter the path manually",""
|
||||
@@ -1269,7 +1245,7 @@ Do you want to continue anyway?",""
|
||||
"Library\Encryption\Strings\GPGEncryption.es-ES.resx","SignkeyLong","not-updated","The GNU Privacy Guard can optionally sign volumes with a special key. This feature is not currently active in Duplicati.",""
|
||||
"Library\Encryption\Strings\GPGEncryption.es-ES.resx","SignkeyShort","not-updated","Sign key for GnuPG",""
|
||||
"Library\Encryption\Strings\GPGSettingsControl.es-ES.resx","PageDescription","not-updated","Settings for the GPG encryption module",""
|
||||
"Library\Encryption\Strings\GPGSettingsControl.es-ES.resx","PageTitle","updated","GPG Settings","Configuración GPG"
|
||||
"Library\Encryption\Strings\GPGSettingsControl.es-ES.resx","PageTitle","updated","GPG","Configuración GPG"
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.es-ES.resx","DecryptionError","updated","Decryption failed: {0}","Fallo en la desencriptación: {0}"
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.es-ES.resx","GPGFlushError","not-updated","Failure while invoking GnuPG, program won't flush output",""
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.es-ES.resx","GPGTerminateError","not-updated","Failure while invoking GnuPG, program won't terminate",""
|
||||
@@ -1366,6 +1342,14 @@ If this problem happens more than once, it is possible that the delete transacti
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FilenameMismatchError","not-updated","The manifest report that the file should be named {0} but it was named {1}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FilesAreNotForceDeletedMessage","not-updated","Files are not deleted, use the --force command to actually remove files",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FileSizeMismatchError","not-updated","The file {0} has size {1} but should have size {2}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FullBecauseBackendIsEmpty","not-updated","A full backup is made because no existing backup chains were found on the destination",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FullBecauseFlagWasSet","not-updated","A full backup was forced with the --{0} flag",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FullBecauseLastFullIsFrom","not-updated","A full backup is made because the latest full backup is from {0} and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FullBecauseSourceFoldersChanged","not-updated","A full backup is made because the source folders have changed",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","FullBecauseThereAreNIncrementals","not-updated","A full backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","IncrementalBecauseLastFullIsFrom","not-updated","An incremental backup is made because the latest full backup is from {0} and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","IncrementalBecauseNoFlagsWereSet","not-updated","An incremental backup is made because no full backup criteria was found",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","IncrementalBecauseThereAreNIncrementals","not-updated","An incremental backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","InternalDeleteCountError","not-updated","An internal error occured, and the operation was aborted to protect the backup sets",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","ManifestAndFileCountMismatchError","not-updated","The manifest file {0} indicates that there should be {1} volumes, but the file list indicates {2}",""
|
||||
"Library\Main\Strings\Interface.es-ES.resx","ManifestsMustBeRead","not-updated","Disabling manifests is only possible on restores, and it should only be used as a last resort.",""
|
||||
@@ -1451,6 +1435,8 @@ If this problem happens more than once, it is possible that the delete transacti
|
||||
"Library\Main\Strings\Options.es-ES.resx","AsynchronousuploadShort","updated","Transmit files on a separate thread","Transmitir ficheros en un thread separado"
|
||||
"Library\Main\Strings\Options.es-ES.resx","AutocleanupLong","not-updated","If a backup is interrupted there will likely be partial files present on the backend. Using this flag, Duplicati will automatically remove such files when encountered.",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","AutocleanupShort","not-updated","A flag indicating that Duplicati should remove unused files",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","BackendlogdatabaseLong","not-updated","Use this option to specify a path to a file that will store information about backend operations. This option can be used to track down errors by comparing the backend state with the expected backend state.",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","BackendlogdatabaseShort","not-updated","Database log of remote operations",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","BackupprefixLong","not-updated","Any string used to prefix the filenames generated by Duplicati.",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","BackupprefixShort","not-updated","Backup volume filename prefix",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","CompressionmoduleLong","not-updated","Duplicati supports plugable compression modules. Use this option to select a module to use for compression. This is only applied when creating new volumes, when reading an existing file, the filename is used to select the compression module.",""
|
||||
@@ -1558,7 +1544,7 @@ If this problem happens more than once, it is possible that the delete transacti
|
||||
"Library\Main\Strings\Options.es-ES.resx","TotalsizeLong","not-updated","This option can place an upper limit on the total size of each backup. Note that if this flag is specified the backup may not contain all files, even for a full backup.",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","TotalsizeShort","not-updated","The number of bytes generated by each backup run",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","UploadUnchangedBackupsLong","not-updated","If no files have changed, Duplicati will not upload a backup set. If the backup data is used to verify that a backup was executed, this option will make Duplicati upload a backupset even if it is empty",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","UploadUnchangedBackupsShort","not-updated","Upload empty backup files ",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","UploadUnchangedBackupsShort","not-updated","Upload empty backup files",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","UsnpolicyLong","not-updated","This settings controls the usage of NTFS USN numbers, which allows Duplicati to obtain a list of files and folders much faster. If this is set to ""off"", Duplicati will not attempt to use USN. Setting this to ""auto"" makes Duplicati attempt to use USN, and fail silently if that was not allowed or supported. A setting of ""on"" will also make Duplicati attempt to use USN, but will produce a warning message in the log if it fails. Setting it to ""required"" will make Duplicati abort the backup if the USN usage fails. This feature is only supported on Windows and requires administrative privileges.",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","UsnpolicyShort","not-updated","Controls the use of NTFS Update Sequence Numbers",""
|
||||
"Library\Main\Strings\Options.es-ES.resx","VerificationLevelLong","not-updated","Use this option to change the level of verifiation done by the verify command. The setting ""manifest"" will only verify the manifest chain. The settings ""signature"" will also download and verify all signature files. The setting ""full"", will download all files, including content files, and verify that they are unchanged.",""
|
||||
@@ -1695,7 +1681,6 @@ Use the commandline option --accept-specified-ssl-hash={1} to accept the server
|
||||
"Winforms\Controls\PasswordConfirmationDialog.es-ES.resx","OKBtn.Text","updated","OK","De acuerdo"
|
||||
"Winforms\Controls\PasswordControl.es-ES.resx","ShowPassword.ToolTip","updated","Show or hide the password","Mostrar o esconder la contraseña"
|
||||
"Winforms\Controls\PasswordControl.es-ES.resx","TextBox.Text","updated","password","contraseña"
|
||||
"Winforms\Controls\Properties\Resources.es-ES.resx","ldots","unused","","../Resources/ldots.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"Winforms\Controls\Strings\PasswordConfirmationDialog.es-ES.resx","PasswordDoNotMatchError","not-updated","The password that you have entered does not match the previously entered password",""
|
||||
"Winforms\Controls\Strings\PasswordControl.es-ES.resx","ConfirmClearingPassword","not-updated","You cannot read this password, but you may reset the password and enter a new one.
|
||||
|
||||
|
||||
|
+1458
-1405
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -152,38 +152,38 @@ Erros: {3}"
|
||||
"CommandLine\Strings\Program.pt-BR.resx","WrongNumberOfCommandsError_v2","updated","Found {0} commands but expected {1}, commands:
|
||||
{2}","Esperado {1} mas encontrados {0}, comandos:
|
||||
{2}"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","$this.Text","updated","Duplicati setup","Configuração do Duplicati"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","$this.Text","updated","Duplicati Options","Configuração do Duplicati"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","AdvancedTab.Text","updated","Advanced","Avançado"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","BalloonNotificationLevel.ToolTip","updated","Choose the level of notification given by balloon tips","Escolha o nível de notificação das dicas"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","Bandwidth.ToolTip","updated","Set the initial bandwidth limits to use in Duplicati","Defina os valores iniciais de banda para o Duplicati"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","BasicTab.Text","updated","Basic","Básico"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CacheSizeLabel.Text","updated","Calculating cache size ...","Calculando tamanho do cache ..."
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CacheSizeLabel.ToolTip","updated","The size of the current cache folder","Tamanho da pasta de cache atual"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CacheSizeLabel.Text","updated","Calculating cache size...","Calculando tamanho do cache ..."
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CacheSizeLabel.ToolTip","unused","","Tamanho da pasta de cache atual"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CancelBtn.Text","updated","Cancel","Cancelar"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","ClearCacheButton.Text","updated","Clear cache","Eliminar cache"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","ClearCacheButton.ToolTip","updated","Clear any signature files stored in cache, they will be re-downloaded the next time the backup is activated","Limpar quaisquer arquivos de assinatura armazenados em cache, eles serão descarregados novamente a próxima vez que o backup for ativado"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","ClearCacheButton.ToolTip","updated","Clear any signature files stored in cache. Signatures will be re-downloaded on next backup.","Limpar quaisquer arquivos de assinatura armazenados em cache, eles serão descarregados novamente a próxima vez que o backup for ativado"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","CommonPassword.ToolTip","updated","Enter the default password to apply to new backups","Digite a senha padrão para os novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","EncryptionMethod.Text","updated","Encryption method","Tipo de Criptografia"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","EncryptionMethod.Text","updated","Encryption method:","Tipo de Criptografia"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","EncryptionMethod.ToolTip","updated","Choose the default encryption module to use for new backups","Selecione a criptografia padrão para os novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","EncryptionModule.ToolTip","updated","Choose the default encryption module to use for new backups","Selecione a criptografia padrão para os novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox1.Text","updated","User interface settings","Configurações da interface de usuário"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox2.Text","updated","Path settings (Advanced)","Configurações adicionais (Avançado)"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox4.Text","updated","Backup control settings used at startup","Configurações de backup utilizadas na inicialização"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","HideDonateButton.Text","updated","Hide the donate button on the main wizard page","Ocultar botão de doação na página principal do assistente"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","HideDonateButton.ToolTip","updated","Check this box to prevent the display of the donation button in the wizard","Marque esta caixa para não exibir o botão de doação no assistente"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label1.Text","updated","Time a log is shown in recent backups","Tempo que um backup será exibido"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox1.Text","updated","User interface","Configurações da interface de usuário"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox2.Text","updated","Cache","Configurações adicionais (Avançado)"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","groupBox4.Text","updated","Default throttle settings","Configurações de backup utilizadas na inicialização"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","HideDonateButton.Text","updated","Hide Donate button on the main wizard page","Ocultar botão de doação na página principal do assistente"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","HideDonateButton.ToolTip","unused","","Marque esta caixa para não exibir o botão de doação no assistente"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label1.Text","updated","Time to display past backups in log:","Tempo que um backup será exibido"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label1.ToolTip","updated","Select the time a backup is displayed in the log window after completion","Selecione o tempo em que o relatório de backup será exibido após sua finalização"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label2.Text","updated","Sections","Sessões"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label3.Text","updated","User interface language","Idioma da interface"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label3.ToolTip","updated","Choose the language for the user interface (requires restart)","Selecione o idioma que será utilizado na interface (requer reiniciar)"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label4.Text","updated","Temporary folder","Pasta temporária"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label4.ToolTip","updated","Enter the path where Duplicati stores temporary files","Digite o caminho onde o Duplicati irá armazenar os arquivos temporários"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label5.Text","updated","Password","Senha"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label5.ToolTip","updated","Enter the default password to apply to new backups","Digite a senha padrão que será utilizada para os novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label6.Text","updated","Content","Conteúdo"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label7.Text","updated","Period to pause duplicati after startup","Período para pausar após o inicio"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label7.ToolTip","updated","Select the amount of time Duplicat is paused after startup","Selecione o período de tempo que o Duplicati é parado após inicializar"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label8.Text","updated","Balloon notifications","Notificações por balões"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label2.Text","updated","Sections:","Sessões"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label3.Text","updated","Language:","Idioma da interface"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label3.ToolTip","updated","Select user interface language (requires restart)","Selecione o idioma que será utilizado na interface (requer reiniciar)"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label4.Text","updated","Temporary folder:","Pasta temporária"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label4.ToolTip","unused","","Digite o caminho onde o Duplicati irá armazenar os arquivos temporários"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label5.Text","unused","","Senha"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label5.ToolTip","unused","","Digite a senha padrão que será utilizada para os novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label6.Text","updated","Content:","Conteúdo"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label7.Text","updated","Time to wait after startup:","Período para pausar após o inicio"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label7.ToolTip","updated","Select the amount of time Duplicati is paused after startup","Selecione o período de tempo que o Duplicati é parado após inicializar"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label8.Text","updated","Backup notifications:","Notificações por balões"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","label8.ToolTip","updated","Choose the level of notification given by balloon tips","Escolha o nível de detalhe das notificações"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","LanguageSelection.ToolTip","updated","Choose the language for the user interface (requires restart)","Escolha o idioma para a interface de usuário (requer reiniciar)"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","LicenseLink.Text","updated","Homepage","Página inicial"
|
||||
@@ -191,9 +191,9 @@ Erros: {3}"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","LicenseSections.ToolTip","updated","Lists the available license sections","Listar as seções de licensa disponíveis"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","LicenseTab.Text","updated","License","Licença"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","OKBtn.Text","missing","OK",""
|
||||
"GUI\ApplicationSetup.pt-BR.resx","PasswordDefaultsGroup.Text","updated","Password settings applied to new backups","Configurações de senha para novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","PasswordDefaultsGroup.Text","updated","Default password","Configurações de senha para novos backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","RecentDuration.ToolTip","updated","Select the time a backup is displayed in the log window after completion","Selecione o tempo que um backup é exibido na tela de log depois de finalizado"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","SignatureCacheEnabled.Text","updated","Signature cache","Cache assinaturas"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","SignatureCacheEnabled.Text","updated","Signature cache:","Cache assinaturas"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","SignatureCacheEnabled.ToolTip","updated","A signature cache limits the amount of data Duplicati needs to download by keeping a copy on the machine, enabling this feature makes the backups faster","O cache de assinaturas limita a quantidade de dados que o Duplicati precisa fazer download, mantendo uma cópia local, ativando esta opção acelera o backup"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","SignatureCachePathBrowse.Text","missing","...",""
|
||||
"GUI\ApplicationSetup.pt-BR.resx","SignatureCachePathBrowse.ToolTip","updated","Browse for the signature cache folder","Exibir a pasta de cache de assinaturas"
|
||||
@@ -202,7 +202,7 @@ Erros: {3}"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","TempPathBrowse.Text","missing","...",""
|
||||
"GUI\ApplicationSetup.pt-BR.resx","TempPathBrowse.ToolTip","updated","Browse for the temporary folder","Exibir a pasta temporária"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","ThreadPriorityPicker.ToolTip","updated","Set the initial thread priority to be used by Duplicati","Definir a prioridade de processo inicial a ser utilizado pelo Duplicati"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","UseCommonPassword.Text","updated","Use a password to protect backups","Usar uma senha para proteger os backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","UseCommonPassword.Text","updated","Use password for new backups:","Usar uma senha para proteger os backups"
|
||||
"GUI\ApplicationSetup.pt-BR.resx","UseCommonPassword.ToolTip","updated","Enable this to use the same password for multiple backups","Ative esta opção para utilizar a mesma senha em multiplos backups"
|
||||
"GUI\HelperControls\BackupFileList.pt-BR.resx","changeDestinationToolStripMenuItem.Text","updated","Change destination...","Alterar destino..."
|
||||
"GUI\HelperControls\BackupFileList.pt-BR.resx","folderBrowserDialog.Description","updated","Select the folder to restore to","Selecione a pasta de destino"
|
||||
@@ -290,17 +290,37 @@ Uma nova versão do Mono irá ativar esta página."
|
||||
"GUI\HelperControls\Strings\FilterEditor.pt-BR.resx","InvalidCharsInFilenameError","updated","The filename {0} has invalid characters","O arquivo {0} contém caracteres invalidos"
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","BytesName","not-updated","bytes",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","BytesPerSecond","not-updated","bytes/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","GBName","not-updated","gb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","GBPerSecond","not-updated","gb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","KBName","not-updated","kb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","KBPerSecond","not-updated","kb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","MBName","not-updated","mb",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","MBPerSecond","not-updated","mb/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","GBName","not-updated","GB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","GBPerSecond","not-updated","GB/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","KBName","not-updated","kB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","KBPerSecond","not-updated","kB/s",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","MBName","not-updated","MB",""
|
||||
"GUI\HelperControls\Strings\SizeSelector.pt-BR.resx","MBPerSecond","not-updated","MB/s",""
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.pt-BR.resx","FileName","updated","File Name '{0}'","Arquivo '{0}'"
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.pt-BR.resx","FileType","updated","File Type '{0}'","Arquivo Tipo '{0}'"
|
||||
"GUI\HelperControls\Strings\TestSearchSelection.pt-BR.resx","TotalSizeLabel","updated","Total {0} files at {1}","Total de {0} arquivos em {1}"
|
||||
"GUI\HelperControls\Strings\WaitForOperation.pt-BR.resx","ReallyAbortQuestion","updated","Are you sure you want to abort the operation?","Tem certeza que deseja abortar a operação?"
|
||||
"GUI\HelperControls\Strings\WaitForOperation.pt-BR.resx","UserCancelled","updated","The user cancelled the operation","O usuário cancelou a operação"
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","$this.Text","missing","Test Search Selection",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","btnCancel.Text","missing","Cancel",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","btnOK.Text","missing","OK",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","chFile.Text","missing","Filename",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","chFileExt.Text","missing","Ext",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","chPath.Text","missing","Path",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","chSize.Text","missing","Size",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","label1.Text","missing","Filters:",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","label2.Text","missing","Use context menu to add and remove filters",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","label3.Text","missing","Files to be included:",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","lbLoading.Text","missing","Scanning files, please wait....",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miExclude.Text","missing","Exclude",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miExcludeFileExt.Text","missing","Add file extension filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miExcludeFileName.Text","missing","Add filename filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miExcludeFilePath.Text","missing","File Path",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miInclude.Text","missing","Include",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miIncludeFileExt.Text","missing","Add file extension filter",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miIncludeFileName.Text","missing","Add filename filer",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","miIncludeFilePath.Text","missing","File path",""
|
||||
"GUI\HelperControls\TestSearchSelection.pt-BR.resx","removeFilterToolStripMenuItem.Text","missing","Remove Filter",""
|
||||
"GUI\HelperControls\ThreadPriorityPicker.pt-BR.resx","ThreadPriority.Items","updated","High (Not recommended)","Alto (Não recomendado)"
|
||||
"GUI\HelperControls\ThreadPriorityPicker.pt-BR.resx","ThreadPriority.Items1","updated","Above normal","Acima do normal"
|
||||
"GUI\HelperControls\ThreadPriorityPicker.pt-BR.resx","ThreadPriority.Items2","missing","Normal",""
|
||||
@@ -327,55 +347,6 @@ Uma nova versão do Mono irá ativar esta página."
|
||||
"GUI\MainForm.pt-BR.resx","stopToolStripMenuItem.Text","updated","Stop","Parar"
|
||||
"GUI\MainForm.pt-BR.resx","throttleOptionsToolStripMenuItem.Text","updated","Throttle options...","Opções de banda..."
|
||||
"GUI\MainForm.pt-BR.resx","wizardToolStripMenuItem.Text","updated","Wizard...","Assistente..."
|
||||
"GUI\Properties\Resources.pt-BR.resx","AddedFile","unused","","../Resources/AddedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","AddedFolder","unused","","../Resources/AddedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","AddedOrModifiedFile","unused","","../Resources/AddedOrModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Clock05","unused","","../Resources/Clock05.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Clock15","unused","","../Resources/Clock15.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Clock30","unused","","../Resources/Clock30.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Clock60","unused","","../Resources/Clock60.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","CloseMenuIcon","unused","","../Resources/CloseMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","ControlFile","unused","","../Resources/ControlFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Delay","unused","","../Resources/Delay.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","DeletedFile","unused","","../Resources/DeletedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","DeletedFolder","unused","","../Resources/DeletedFolder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","donate_button","unused","","../Resources/donate_button.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Duplicati","unused","","../Resources/Duplicati.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","EmptyBackupStatusIcon","unused","","../Resources/EmptyBackupStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","ErrorStatusIcon","unused","","../Resources/ErrorStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","ExamineMenuIcon","unused","","../Resources/ExamineMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","FolderOpen","unused","","../Resources/FolderOpen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","FullBackup","unused","","../Resources/FullBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","help","unused","","../Resources/help.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","IncompleteFile","unused","","../Resources/IncompleteFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","InterruptedStatusIcon","unused","","../Resources/InterruptedStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","LogMenuIcon","unused","","../Resources/LogMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","LogViewer","unused","","../Resources/LogViewer.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","ModifiedFile","unused","","../Resources/ModifiedFile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","OKStatusIcon","unused","","../Resources/OKStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","PartialBackup","unused","","../Resources/PartialBackup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","PartialStatusIcon","unused","","../Resources/PartialStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Pause","unused","","../Resources/Pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Play","unused","","../Resources/Play.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","SettingsMenuIcon","unused","","../Resources/SettingsMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","SmallLogo","unused","","../Resources/SmallLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Status_OK","unused","","../Resources/Status OK.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Status_pause","unused","","../Resources/Status pause.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Status_Working","unused","","../Resources/Status Working.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","StatusMenuIcon","unused","","../Resources/StatusMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Stop","unused","","../Resources/Stop.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Throttle","unused","","../Resources/Throttle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","ThrottleIcon","unused","","../Resources/Throttle.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Trash","unused","","../Resources/Trash.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayNormal","unused","","../Resources/TrayNormal.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayNormalError","unused","","../Resources/TrayNormalError.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayNormalPause","unused","","../Resources/TrayNormalPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayNormalWarning","unused","","../Resources/TrayNormalWarning.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayWorking","unused","","../Resources/TrayWorking.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","TrayWorkingPause","unused","","../Resources/TrayWorkingPause.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","WarningStatusIcon","unused","","../Resources/WarningStatusIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","Wizard","unused","","../Resources/Wizard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\Properties\Resources.pt-BR.resx","WizardMenuIcon","unused","","../Resources/WizardMenuIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"GUI\RestoreBackup.pt-BR.resx","$this.Text","updated","RestoreBackup","Restaurar backup"
|
||||
"GUI\RestoreBackup.pt-BR.resx","CancelBtn.Text","updated","Cancel","Cancelar"
|
||||
"GUI\RestoreBackup.pt-BR.resx","folderBrowserDialog.Description","updated","Select the folder where the data will be restored to","Selecione a pasta de destino para restaurar seus arquivos"
|
||||
@@ -408,19 +379,19 @@ Uma nova versão do Mono irá ativar esta página."
|
||||
"GUI\ServiceStatus.pt-BR.resx","viewLogToolStripMenuItem.Text","updated","View log ...","Ver log ..."
|
||||
"GUI\ServiceStatus.pt-BR.resx","wizardHelpLabel.Text","updated","(Create, edit, delete, run, restore backups)","(Criar, editar, apagar, executar, restaurar backups)"
|
||||
"GUI\ServiceStatus.pt-BR.resx","wizardLink.Text","updated","Duplicati Wizard","Assistente Duplicati"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Continous","updated","While backup is running (and on errors/warnings)","Enquanto o backup estiver rodando (e em erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Errors","updated","On backup errors","Em erros de backup"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Off","updated","No balloon notifications","Desativar notificações"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Start","updated","On backup start (and errors/warnings)","No inicio do backup (e erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_StartAndStop","updated","On backup start and stop (and errors/warnings)","No inicio e final do backup (e erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Warnings","updated","On backup errors and warnings","Em erros e alertas"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Continous","updated","While running, and on errors, warnings","Enquanto o backup estiver rodando (e em erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Errors","updated","On errors","Em erros de backup"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Off","updated","No notifications","Desativar notificações"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Start","updated","On start, errors, warnings","No inicio do backup (e erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_StartAndStop","updated","On start, stop, errors, warnings","No inicio e final do backup (e erros/alertas)"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","BalloonNotification_Warnings","updated","On errors, warnings","Em erros e alertas"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","CacheSize","updated","Cache size: {0}","Tamanho do cache: {0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","CalculatingCacheSize","updated","Calculating cache size ...","Calculando tamanho do cache ..."
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","ConfirmCacheDelete","updated","Delete signature files in the folder:
|
||||
{0}","Remover arquivos de assinatura na pasta:
|
||||
{0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","DefaultLanguage","updated","System language, {0}","Idioma do sistema, {0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","DialogTitle","updated","Duplicati Setup, version {0}","Duplicati Setup, versão {0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","DialogTitle","updated","Duplicati Options, version {0}","Duplicati Setup, versão {0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","EncryptionModuleLoadError","updated","An error occured while loading encryption modules: {0}","Ocorreu um erro ao carregar os módulos de criptografia: {0}"
|
||||
"GUI\Strings\ApplicationSetup.pt-BR.resx","ErrorWhileExaminingFolder","updated","An exception occured while examining the folder: {0}.
|
||||
Do you want to use that folder anyway?","Ocorreu um erro examinando a pasta: {0}.
|
||||
@@ -454,7 +425,7 @@ Gostaria de usar esta pasta mesmo assim?"
|
||||
"GUI\Strings\Common.pt-BR.resx","TwoWeeks","updated","Two weeks","Duas semanas"
|
||||
"GUI\Strings\DatabaseUpgrader.pt-BR.resx","BackupFilenamePrefix","not-updated","backup",""
|
||||
"GUI\Strings\DatabaseUpgrader.pt-BR.resx","DatabaseFormatError","updated","Unable to determine database format: {0}","Não foi possível determinar o formato do banco de dados: {0}"
|
||||
"GUI\Strings\DatabaseUpgrader.pt-BR.resx","InvalidVersionError","updated","
|
||||
"GUI\Strings\DatabaseUpgrader.pt-BR.resx","InvalidVersionError","updated","
|
||||
The database has version {0} but the largest supported version is {1}.
|
||||
|
||||
This is likely caused by upgrading to a newer version and then downgrading.
|
||||
@@ -968,10 +939,13 @@ Mensagem de erro: {0}"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","label3.Text","updated","Username","Usuário"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","label4.Text","updated","Password","Senha"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","label5.Text","updated","Port (optional)","Porta (opcional)"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","label6.Text","missing","Note: Some FTP servers have trouble dealing with more than 2000 files. For this reason, you are advised to select a large volume size so the number of files is low.",""
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","PassiveConnection.Text","updated","Use passive connection","Utilizar conexão passiva"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","TestConnection.Text","updated","Test connection","Testar conexão"
|
||||
"Library\Backend\FTP\FTPUI.pt-BR.resx","UseSSL.Text","updated","Use SSL","Utilizar SSL"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","Description","updated","This backend can read and write data to an FTP based backend. Allowed formats are ""ftp://hostname/folder"" or ""ftp://username:password@hostname/folder""","Este protocolo pode ler e escrever arquivos baseado em FTP. Os formatos permitidos são ""ftp://nomedohost/pasta"" ou ""ftp://usuario:senha@nomedohost/pasta"""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionDisableUploadVerifyLong","not-updated","To protect against network failures, every upload will be attempted verified. Use this option to disable this verfication to make the upload faster by more unsafe.",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionDisableUploadVerifyShort","not-updated","Disable upload verification",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionFTPActiveLong","updated","If this flag is set, the FTP connection is made in active mode. Even if the ""ftp-passive"" flag is also set, the connection will be made in active mode","Se esta opção for ativada, a conexão FTP será feita no modo ativo. Mesmo se a opção ""ftp-passive"" for ativada também, a conexão será feita no modo ativo"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionFTPActiveShort","updated","Toggles the FTP connections method","Altera entre os métodos de conexão FTP"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionFTPPassiveLong","updated","If this flag is set, the FTP connection is made in passive mode, which works better with some firewalls. If the ""ftp-regular"" flag is also set, this flag is ignored","Se esta opção for ativada, a conexão FTP será feita no modo passivo, que funciona melhor com determinados firewalls. Se a opção ""ftp-regular"" também for ativada, esta opção será ignorada"
|
||||
@@ -985,6 +959,8 @@ Mensagem de erro: {0}"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionUseSSLLong","updated","Use this flag to communicate using Secure Socket Layer (SSL) over ftp (ftps).","Utilize esta opção para se comunicar utilizando SSL sobre ftp (ftps)."
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DescriptionUseSSLShort","updated","Instructs Duplicati to use an SSL (ftps) connection","Instrui o Duplicati a utilizar uma conexão SSL (ftps)"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","DisplayName","updated","FTP based","Baseado em FTP"
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","ListVerifyFailure","not-updated","The file {0} was uploaded but not found afterwards, the file listing returned {1}",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","ListVerifySizeFailure","not-updated","The file {0} was uploaded but the returned size was {1} and it was expected to be {2}",""
|
||||
"Library\Backend\FTP\Strings\FTPBackend.pt-BR.resx","MissingFolderError","updated","The folder {0} was not found, message: {1}","A pasta {0} não foi encontrada, mensagem: {1}"
|
||||
"Library\Backend\FTP\Strings\FTPUI.pt-BR.resx","ApproveCertificateHashQuestion","updated","The certificate was not valid ({0}). Do you want to approve the certificate anyway and retry?","O certificado não é valido ({0}). Você quer aprová-lo mesmo assim e repetir a operação?"
|
||||
"Library\Backend\FTP\Strings\FTPUI.pt-BR.resx","CreateMissingFolderQuestion","updated","The folder does not exist, do you want to create it?","A pasta não existe, gostaria de criá-la?"
|
||||
@@ -995,10 +971,10 @@ Mensagem de erro: {0}"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","AllowCredentialStorage.Text","updated","Store new S3 account information","Armazenar novas informações de conta S3"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","CredentialGroup.Text","updated","Stored credentials","Credenciais armazenadas"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","groupBox2.Text","updated","Default settings","Configuração padrão"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","label1.Text","updated","Bucket region","Região do container"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","label2.Text","updated","Servername","Nome do servidor"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","label1.Text","updated","Bucket region:","Região do container"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","label2.Text","updated","Server name:","Nome do servidor"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","RemoveAllButton.Text","updated","Remove all","Remover todos"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","RemoveSelectedButton.Text","updated","Remove selected","Remover selecionados"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","RemoveSelectedButton.Text","updated","Remove","Remover selecionados"
|
||||
"Library\Backend\S3\S3CommonOptions.pt-BR.resx","UseRRS.Text","updated","Use Reduced Redundancy Storage","Utilizar armazenamento de redundância reduzido"
|
||||
"Library\Backend\S3\S3UI.pt-BR.resx","CreateBucket.Text","updated","Create bucket","Criar container"
|
||||
"Library\Backend\S3\S3UI.pt-BR.resx","label1.Text","updated","AWS Access ID","ID de acesso AWS"
|
||||
@@ -1046,7 +1022,7 @@ Mensagem de erro: {0}"
|
||||
"Library\Backend\S3\Strings\S3Backend.pt-BR.resx","UnableToDecodeBucketnameError","updated","Unable to determine the bucket name for host: {0}","Não foi possível determinar o nome de armazenamento para o host: {0}"
|
||||
"Library\Backend\S3\Strings\S3Backend.pt-BR.resx","UnableToParseURLError","updated","Could not parse the url: {0}","Não foi possível tratar a URL: {0}"
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.pt-BR.resx","PageDescription","updated","Displays various options related to the S3 backend","Exibe diversas opções do armazenamento S3"
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.pt-BR.resx","PageTitle","updated","S3 Options","Opções S3"
|
||||
"Library\Backend\S3\Strings\S3SettingsControl.pt-BR.resx","PageTitle","updated","S3","Opções S3"
|
||||
"Library\Backend\S3\Strings\S3UI.pt-BR.resx","BucketnameCaseWarning","updated","The bucket name is not in all lower case.
|
||||
{0}
|
||||
Do you want to convert the bucket name to lower case?","O nome do container não está em letras minúsculas.
|
||||
@@ -1095,8 +1071,8 @@ Do you want to create the bucket now?"
|
||||
"Library\Backend\S3\Strings\S3UI.pt-BR.resx","PageTitle","updated","Backup storage options","Opções de armazenamento de backup"
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","BrowseForSFTPButton.Text","missing","...",""
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","BrowseForSFTPDialog.Filter","updated","Executables (*.exe)|*.exe|All files (*.*)|*.*","Executáveis (*.exe)|*.exe|Todos arquivos (*.*)|*.*"
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","label1.Text","updated","Path to SFTP","Caminho para o SFTP"
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","UseManagedAsDefault.Text","updated","Use managed SSH as default","Utilizar SSH gerenciado por padrão"
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","label1.Text","updated","SFTP path:","Caminho para o SFTP"
|
||||
"Library\Backend\SSH\SSHCommonOptions.pt-BR.resx","UseManagedAsDefault.Text","updated","Use managed SSH by default","Utilizar SSH gerenciado por padrão"
|
||||
"Library\Backend\SSH\SSHUI.pt-BR.resx","BrowseForKeyFileButton.Text","missing","...",""
|
||||
"Library\Backend\SSH\SSHUI.pt-BR.resx","CreateFolderButton.Text","updated","Create folder","Criar pasta"
|
||||
"Library\Backend\SSH\SSHUI.pt-BR.resx","GenerateDebugOutput.Text","updated","Generate debug output","Gerar saida de debug"
|
||||
@@ -1163,7 +1139,7 @@ Error message: {1}","Falha ao iniciar a aplicação SSH ({0}).
|
||||
Tenha certeza que o ""putty"" está instalado, e que você tenha definido o caminho correto.
|
||||
Mensagem de erro: {1}"
|
||||
"Library\Backend\SSH\Strings\SSHBackend.pt-BR.resx","LaunchErrorWindows","updated","Failed to start the SSH application ({0}).
|
||||
Make sure that ""putty"" is installed, and you have set the correct path.
|
||||
Make sure that ""PuTTY"" is installed, and you have set the correct path.
|
||||
Error message: {1}","Falha ao iniciar a aplicação SSH ({0}).
|
||||
Tenha certeza de o aplicativo ""expect"" está instalado.
|
||||
Mensagem de erro: {1}"
|
||||
@@ -1200,7 +1176,7 @@ Será utilizado o caminho padrão para a aplicação SFTP.
|
||||
A aplicação SFTP não foi encontrada durante as verificações.
|
||||
Tem certeza que deseja continuar?"
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.pt-BR.resx","PageDescription","updated","Settings for the SSH backend","Configurações para o armazenamento SSH"
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.pt-BR.resx","PageTitle","updated","SSH Settings","Configurações SSH"
|
||||
"Library\Backend\SSH\Strings\SSHSettingsControl.pt-BR.resx","PageTitle","updated","SSH","Configurações SSH"
|
||||
"Library\Backend\SSH\Strings\SSHUI.pt-BR.resx","CreateMissingFolderQuestion","updated","The folder does not exist, do you want to create it?","A pasta não existe, você deseja criá-la?"
|
||||
"Library\Backend\SSH\Strings\SSHUI.pt-BR.resx","MissingSCPWarning","updated","Duplicati was unable to verify the existence of the sftp program.
|
||||
sftp may work regardless, if it is located in the system search path.
|
||||
@@ -1298,12 +1274,12 @@ Arquivos criados com este módulo podem ser lidos por qualquer aplicação adere
|
||||
"Library\DynamicLoader\Strings\DynamicLoader.pt-BR.resx","DynamicTypeLoadError","updated","Failed to load process type {0} assembly {1}, error message: {2}","Falha ao carregar processo tipo {0} montagem {1}, mensagem de erro: {2}"
|
||||
"Library\Encryption\GPGCommonOptions.pt-BR.resx","BrowseForGPGDialog.Filter","updated","Executables (*.exe)|*.exe|All files (*.*)|*.*","Executáveis (*.exe)|*.exe|Todos arquivos (*.*)|*.*"
|
||||
"Library\Encryption\GPGCommonOptions.pt-BR.resx","BrowseForGPGPathButton.Text","missing","...",""
|
||||
"Library\Encryption\GPGCommonOptions.pt-BR.resx","label1.Text","updated","GPG executable path","Caminho do executável GPG"
|
||||
"Library\Encryption\GPGCommonOptions.pt-BR.resx","label1.Text","updated","GPG path:","Caminho do executável GPG"
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","AesencryptiondontallowfallbackLong_v2","updated","If the decryption fails using AES Crypt, dont attempt to use the previous encryption file format. ","Se a decriptografia utilizando AES Crypt falhar, não tente utilizar o formato de criptografia anterior."
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","AesencryptiondontallowfallbackShort","updated","Do not attempt to decrypt using previous method","Não tentar decriptografar usando o método anterior"
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","BadKeyStretchError","updated","Bad key stretch","Comprimento da chave ruim"
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","Description_v2","updated","This module encrypts all files in the same way that AESCrypt does, using 256 bit AES encryption.","Este módulo criptografa todos os arquivos da mesma maneira que o AESCrypt faz, utilizando criptografia AES de 256 bits."
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","DisplayName","updated","AES-256 encryption, built in","Criptografia AES-256, incorporada"
|
||||
"Library\Encryption\Strings\AESEncryption.pt-BR.resx","DisplayName","updated","AES-256 encryption, built-in","Criptografia AES-256, incorporada"
|
||||
"Library\Encryption\Strings\EncryptionBase.pt-BR.resx","DecryptionError","updated","Failed to decrypt data (invalid passphrase?): {0}","Não foi possível descriptografar os dados (chave incorreta?): {0}"
|
||||
"Library\Encryption\Strings\GPGCommonOptions.pt-BR.resx","GpgAutodetectedInfo","updated","Leave empty to use the gpg application found: {0}","Deixe em branco para utilizar a aplicação gpg encontrada: {0}"
|
||||
"Library\Encryption\Strings\GPGCommonOptions.pt-BR.resx","GpgNotAutodetectedWarning","updated","The gpg application could not be located, please enter the path manually","A aplicação gpg não pode ser localizada, por favor insira o caminho manualmente"
|
||||
@@ -1349,7 +1325,7 @@ Deseja continuar mesmo assim?"
|
||||
"Library\Encryption\Strings\GPGEncryption.pt-BR.resx","SignkeyLong","updated","The GNU Privacy Guard can optionally sign volumes with a special key. This feature is not currently active in Duplicati.","O GNU Privacy Guard pode assinar os volume com uma chave especial. Está função ainda não está disponível no Duplicati."
|
||||
"Library\Encryption\Strings\GPGEncryption.pt-BR.resx","SignkeyShort","updated","Sign key for GnuPG","Chave de assinatura para o GnuPG"
|
||||
"Library\Encryption\Strings\GPGSettingsControl.pt-BR.resx","PageDescription","updated","Settings for the GPG encryption module","Configurações para o módulo de criptografia GPG"
|
||||
"Library\Encryption\Strings\GPGSettingsControl.pt-BR.resx","PageTitle","updated","GPG Settings","Configurações GPG"
|
||||
"Library\Encryption\Strings\GPGSettingsControl.pt-BR.resx","PageTitle","updated","GPG","Configurações GPG"
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.pt-BR.resx","DecryptionError","updated","Decryption failed: {0}","Falha ao descriptografar: {0}"
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.pt-BR.resx","GPGFlushError","updated","Failure while invoking GnuPG, program won't flush output","Falha ao chamar o GnuPG, o programa não envia dados"
|
||||
"Library\Encryption\Strings\GPGStreamWrapper.pt-BR.resx","GPGTerminateError","updated","Failure while invoking GnuPG, program won't terminate","Falha ao chamar o GnuPG, o programa não quer terminar"
|
||||
@@ -1451,6 +1427,14 @@ Se este problema voltar a ocorrer, é possível que o arquivo de transação est
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FilenameMismatchError","updated","The manifest report that the file should be named {0} but it was named {1}","O manifesto relatou que o nome do arquivo deveria ser {0} mas foi nomeado {1}"
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FilesAreNotForceDeletedMessage","updated","Files are not deleted, use the --force command to actually remove files","Os arquivos não são apagados, utilize o comando --force para apagar os arquivos"
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FileSizeMismatchError","updated","The file {0} has size {1} but should have size {2}","O arquivo {0} tem o tamanho de {1} mas deveria ter {2}"
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FullBecauseBackendIsEmpty","not-updated","A full backup is made because no existing backup chains were found on the destination",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FullBecauseFlagWasSet","not-updated","A full backup was forced with the --{0} flag",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FullBecauseLastFullIsFrom","not-updated","A full backup is made because the latest full backup is from {0} and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FullBecauseSourceFoldersChanged","not-updated","A full backup is made because the source folders have changed",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","FullBecauseThereAreNIncrementals","not-updated","A full backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","IncrementalBecauseLastFullIsFrom","not-updated","An incremental backup is made because the latest full backup is from {0} and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","IncrementalBecauseNoFlagsWereSet","not-updated","An incremental backup is made because no full backup criteria was found",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","IncrementalBecauseThereAreNIncrementals","not-updated","An incremental backup is made because the current chain has {0} incremental backups and the full backup threshold is {1}",""
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","InternalDeleteCountError","updated","An internal error occured, and the operation was aborted to protect the backup sets","Ocorreu um erro interno e a operação foi cancelada para proteger os backups"
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","ManifestAndFileCountMismatchError","updated","The manifest file {0} indicates that there should be {1} volumes, but the file list indicates {2}","O arquivo de manifesto {0} indica que deveriam existir {1} volumes, mas a lista de arquivos indica {2}"
|
||||
"Library\Main\Strings\Interface.pt-BR.resx","ManifestsMustBeRead","updated","Disabling manifests is only possible on restores, and it should only be used as a last resort.","Desativando manifestos somente é possível em restaurações, e deve ser utilizado como último recurso."
|
||||
@@ -1536,6 +1520,8 @@ Se este problema voltar a ocorrer, é possível que o arquivo de transação est
|
||||
"Library\Main\Strings\Options.pt-BR.resx","AsynchronousuploadShort","updated","Transmit files on a separate thread","Transmitir arquivos em um processo separado"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","AutocleanupLong","updated","If a backup is interrupted there will likely be partial files present on the backend. Using this flag, Duplicati will automatically remove such files when encountered.","Se um backup for interrompido, provavelmente existirão arquivos parciais presentes no backup. Utilizando esta opção, o Duplicati irá remover automaticamente estes arquivos quando encontrados."
|
||||
"Library\Main\Strings\Options.pt-BR.resx","AutocleanupShort","updated","A flag indicating that Duplicati should remove unused files","Opção indicando que o Duplicati deve remover arquivos não utilizados"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","BackendlogdatabaseLong","not-updated","Use this option to specify a path to a file that will store information about backend operations. This option can be used to track down errors by comparing the backend state with the expected backend state.",""
|
||||
"Library\Main\Strings\Options.pt-BR.resx","BackendlogdatabaseShort","not-updated","Database log of remote operations",""
|
||||
"Library\Main\Strings\Options.pt-BR.resx","BackupprefixLong","updated","Any string used to prefix the filenames generated by Duplicati.","Qualquer conjunto de caracteres utilizados como prefixo nos arquivos que são criados pelo Duplicati."
|
||||
"Library\Main\Strings\Options.pt-BR.resx","BackupprefixShort","updated","Backup volume filename prefix","Prefixo para o nome dos arquivos de volume"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","CompressionmoduleLong","updated","Duplicati supports plugable compression modules. Use this option to select a module to use for compression. This is only applied when creating new volumes, when reading an existing file, the filename is used to select the compression module.","O Duplicati suporta módulos de complessão. Utilize esta opção para selecionar o módulo a ser utilizado. Isto se aplica na criação de novos volumes, ao ler arquivos existentes, o nome do arquivo é utilizado para selecionar o módulo de compressão"
|
||||
@@ -1643,7 +1629,7 @@ Se este problema voltar a ocorrer, é possível que o arquivo de transação est
|
||||
"Library\Main\Strings\Options.pt-BR.resx","TotalsizeLong","updated","This option can place an upper limit on the total size of each backup. Note that if this flag is specified the backup may not contain all files, even for a full backup.","As opção serve para definir um limite total para cada backup. Se esta opção ser selecionada, o backup pode não conter todos os arquivos, mesmo para um backup completo."
|
||||
"Library\Main\Strings\Options.pt-BR.resx","TotalsizeShort","updated","The number of bytes generated by each backup run","O número de bytes gerados por cada execução do backup"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","UploadUnchangedBackupsLong","not-updated","If no files have changed, Duplicati will not upload a backup set. If the backup data is used to verify that a backup was executed, this option will make Duplicati upload a backupset even if it is empty",""
|
||||
"Library\Main\Strings\Options.pt-BR.resx","UploadUnchangedBackupsShort","updated","Upload empty backup files ","Enviar arquivos de backup vazios"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","UploadUnchangedBackupsShort","updated","Upload empty backup files","Enviar arquivos de backup vazios"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","UsnpolicyLong","not-updated","This settings controls the usage of NTFS USN numbers, which allows Duplicati to obtain a list of files and folders much faster. If this is set to ""off"", Duplicati will not attempt to use USN. Setting this to ""auto"" makes Duplicati attempt to use USN, and fail silently if that was not allowed or supported. A setting of ""on"" will also make Duplicati attempt to use USN, but will produce a warning message in the log if it fails. Setting it to ""required"" will make Duplicati abort the backup if the USN usage fails. This feature is only supported on Windows and requires administrative privileges.",""
|
||||
"Library\Main\Strings\Options.pt-BR.resx","UsnpolicyShort","updated","Controls the use of NTFS Update Sequence Numbers","Controla a utilização de USN NTFS"
|
||||
"Library\Main\Strings\Options.pt-BR.resx","VerificationLevelLong","not-updated","Use this option to change the level of verifiation done by the verify command. The setting ""manifest"" will only verify the manifest chain. The settings ""signature"" will also download and verify all signature files. The setting ""full"", will download all files, including content files, and verify that they are unchanged.",""
|
||||
@@ -1701,7 +1687,7 @@ Mensagem de erro: {1}"
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DescriptionAcceptHashShort","updated","Optionally accept a known SSL certificate","Opcionalmente aceitar um certificado SSL conhecido"
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisableExpect100Long","not-updated","The default HTTP request has the header ""Expect: 100-Continue"" attached, which allows some optimizations when authenticating, but also breaks some web servers, causing them to report ""417 - Expectation failed""",""
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisableExpect100Short","updated","Disable the expect header","Desativar o cabeçalho esperado"
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisableNagleLong","not-updated","By default the http requests use the RFC 896 nagling algorithm to support transfer of small packages more effeciently.",""
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisableNagleLong","updated","By default the http requests use the RFC 896 nagling algorithm to support transfer of small packages more effeciently.","Por padrão a requisição http utiliza a RFC 896 para suportar a tranferência de pacotes pequenos de maneira eficiente"
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisableNagleShort","updated","Disable nagling","Disable the nagling"
|
||||
"Library\Modules\Builtin\Strings\HttpOptions.pt-BR.resx","DisplayName","updated","Configure http requests","Configurar requisições HTTP"
|
||||
"Library\SharpRSync\Strings\ChecksumFile.pt-BR.resx","EndofstreamBeforeSignatureError","updated","End of stream occured while reading initial 4 bytes of signature file","Fim do fluxo ocorrido lendo os primeiros 4 bytes do arquivo de assinatura"
|
||||
@@ -1746,15 +1732,15 @@ Command: {1} {2}","O comando externo falhou ao iniciar.
|
||||
Mensagem de erro: {0}
|
||||
Comando: {1} {2}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","ExternalProgramTimeoutError","updated","The external command failed to complete within the set time limit: {0} {1}","O comando externo falhou em completar dentro do limite de tempo definido: {0} {1}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","InvalidFilePathError","not-updated","Unable to match local path {0} with any snapshot path: {1}",""
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","MountFolderMissingError","not-updated","Script returned successfully, but the temporary folder {0} does not exist: {1}",""
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","MountFolderNotRemovedError","not-updated","Script returned successfully, but the temporary folder {0} still exist: {1}",""
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","InvalidFilePathError","updated","Unable to match local path {0} with any snapshot path: {1}","Não foi possível encontrar o caminho {0} com nenhum snapshot: {1}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","MountFolderMissingError","updated","Script returned successfully, but the temporary folder {0} does not exist: {1}","O script executou com sucesso, mas a pasta temporária {0} não existe: {1}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","MountFolderNotRemovedError","updated","Script returned successfully, but the temporary folder {0} still exist: {1}","O script executou com sucesso, mas a pasta temporária {0} ainda existe: {1}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","ScriptExitCodeError","updated","The script returned exit code {0}, but {1} was expected: {2}","O script retornou o código {0}, mas {1} era esperado: {2}"
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","ScriptOutputError","not-updated","Script returned successfully, but the output was missing the {0} parameter: {1}",""
|
||||
"Library\Snapshots\Strings\LinuxSnapshot.pt-BR.resx","ScriptOutputError","updated","Script returned successfully, but the output was missing the {0} parameter: {1}","O script executou com sucesso, mas na saída está faltando o parâmetro {0}: {1}"
|
||||
"Library\Snapshots\Strings\Shared.pt-BR.resx","InvalidEnumPathError","updated","Unable to match local path {0} with a snapshot","Não foi possível coincidir o caminho local {0} com o snapshot"
|
||||
"Library\Snapshots\Strings\USNHelper.pt-BR.resx","EmptyResponseError","updated","Unexpected empty response while enumerating","Resposta inesperada ao enumerar"
|
||||
"Library\Snapshots\Strings\USNHelper.pt-BR.resx","LinuxNotSupportedError","updated","USN is not supported on Linux","USN não é suportado no Linux"
|
||||
"Library\Snapshots\Strings\USNHelper.pt-BR.resx","SafeGuardError","not-updated","The number of files returned by USN was zero. This is likely an error. To remedy this, USN has been disabled.",""
|
||||
"Library\Snapshots\Strings\USNHelper.pt-BR.resx","SafeGuardError","updated","The number of files returned by USN was zero. This is likely an error. To remedy this, USN has been disabled.","O número de arquivos retornados pelo USN foi zero. Isto pode ser um erro. Para corrigir isso, o USN foi desativado."
|
||||
"Library\Snapshots\Strings\WinNativeMethod.pt-BR.resx","MissingBackupPrivilegeError","updated","Calling process does not have the backup privilege","O processo em execução não tem o privilégio do backup"
|
||||
"Library\Utility\Strings\FilenameFilter.pt-BR.resx","FilterContainsPathSeparator","updated","Filter contains: {0}","Filtro contém: {0}"
|
||||
"Library\Utility\Strings\Sizeparser.pt-BR.resx","InvalidSizeValueError","updated","Invalid size value: {0}","Valor de tamanho inválido: {0}"
|
||||
@@ -1785,7 +1771,6 @@ Utilize a opção --accept-specified-ssl-hash={1} para aceitar o certificado"
|
||||
"Winforms\Controls\PasswordConfirmationDialog.pt-BR.resx","OKBtn.Text","missing","OK",""
|
||||
"Winforms\Controls\PasswordControl.pt-BR.resx","ShowPassword.ToolTip","updated","Show or hide the password","Mostrar ou exibir a senha"
|
||||
"Winforms\Controls\PasswordControl.pt-BR.resx","TextBox.Text","updated","password","senha"
|
||||
"Winforms\Controls\Properties\Resources.pt-BR.resx","ldots","unused","","../Resources/ldots.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
|
||||
"Winforms\Controls\Strings\PasswordConfirmationDialog.pt-BR.resx","PasswordDoNotMatchError","updated","The password that you have entered does not match the previously entered password","A senha utilizada não é a mesma utilizada anteriormente"
|
||||
"Winforms\Controls\Strings\PasswordControl.pt-BR.resx","ConfirmClearingPassword","updated","You cannot read this password, but you may reset the password and enter a new one.
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -32,8 +32,8 @@
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.Password = new System.Windows.Forms.TextBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.CancelBtn = new System.Windows.Forms.Button();
|
||||
this.OKBtn = new System.Windows.Forms.Button();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
@@ -55,13 +55,6 @@
|
||||
resources.ApplyResources(this.panel1, "panel1");
|
||||
this.panel1.Name = "panel1";
|
||||
//
|
||||
// OKBtn
|
||||
//
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// CancelBtn
|
||||
//
|
||||
resources.ApplyResources(this.CancelBtn, "CancelBtn");
|
||||
@@ -69,6 +62,13 @@
|
||||
this.CancelBtn.Name = "CancelBtn";
|
||||
this.CancelBtn.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// OKBtn
|
||||
//
|
||||
resources.ApplyResources(this.OKBtn, "OKBtn");
|
||||
this.OKBtn.Name = "OKBtn";
|
||||
this.OKBtn.UseVisualStyleBackColor = true;
|
||||
this.OKBtn.Click += new System.EventHandler(this.OKBtn_Click);
|
||||
//
|
||||
// PasswordConfirmationDialog
|
||||
//
|
||||
this.AcceptButton = this.OKBtn;
|
||||
|
||||
+10
-2
@@ -33,6 +33,7 @@
|
||||
this.TextBox = new System.Windows.Forms.TextBox();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.ShowPassword = new System.Windows.Forms.CheckBox();
|
||||
this.Seperator = new System.Windows.Forms.Panel();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TextBox
|
||||
@@ -41,8 +42,8 @@
|
||||
this.TextBox.Name = "TextBox";
|
||||
this.TextBox.UseSystemPasswordChar = true;
|
||||
this.TextBox.TextChanged += new System.EventHandler(this.TextBox_TextChanged);
|
||||
this.TextBox.Leave += new System.EventHandler(this.TextBox_Leave);
|
||||
this.TextBox.Enter += new System.EventHandler(this.TextBox_Enter);
|
||||
this.TextBox.Leave += new System.EventHandler(this.TextBox_Leave);
|
||||
//
|
||||
// ShowPassword
|
||||
//
|
||||
@@ -51,14 +52,20 @@
|
||||
this.ShowPassword.Name = "ShowPassword";
|
||||
this.toolTip.SetToolTip(this.ShowPassword, resources.GetString("ShowPassword.ToolTip"));
|
||||
this.ShowPassword.UseVisualStyleBackColor = true;
|
||||
this.ShowPassword.Click += new System.EventHandler(this.ShowPassword_Click);
|
||||
this.ShowPassword.CheckedChanged += new System.EventHandler(this.ShowPassword_CheckedChanged);
|
||||
this.ShowPassword.Click += new System.EventHandler(this.ShowPassword_Click);
|
||||
//
|
||||
// Seperator
|
||||
//
|
||||
resources.ApplyResources(this.Seperator, "Seperator");
|
||||
this.Seperator.Name = "Seperator";
|
||||
//
|
||||
// PasswordControl
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.TextBox);
|
||||
this.Controls.Add(this.Seperator);
|
||||
this.Controls.Add(this.ShowPassword);
|
||||
this.MaximumSize = new System.Drawing.Size(5000, 20);
|
||||
this.MinimumSize = new System.Drawing.Size(150, 20);
|
||||
@@ -73,5 +80,6 @@
|
||||
private System.Windows.Forms.TextBox TextBox;
|
||||
private System.Windows.Forms.CheckBox ShowPassword;
|
||||
private System.Windows.Forms.ToolTip toolTip;
|
||||
private System.Windows.Forms.Panel Seperator;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="TextBox.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>117, 20</value>
|
||||
<value>112, 20</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="TextBox.TabIndex" type="System.Int32, mscorlib">
|
||||
@@ -187,6 +187,30 @@
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>ShowPassword.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name="Seperator.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Right</value>
|
||||
</data>
|
||||
<data name="Seperator.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>112, 0</value>
|
||||
</data>
|
||||
<data name="Seperator.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>5, 20</value>
|
||||
</data>
|
||||
<data name="Seperator.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>Seperator.Name" xml:space="preserve">
|
||||
<value>Seperator</value>
|
||||
</data>
|
||||
<data name=">>Seperator.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>Seperator.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
</data>
|
||||
<data name=">>Seperator.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
|
||||
@@ -112,6 +112,12 @@
|
||||
<Feature Id="es_ES_LanguageFeature" Title="Spanish translation files" Level="1" Description="Installs the required files for displaying the Duplicati userinterface in Spanish (es-ES)." AllowAdvertise="no" TypicalDefault="install" InstallDefault="local" >
|
||||
<ComponentGroupRef Id="DUPLICATI_LANG_es_ES" />
|
||||
</Feature>
|
||||
<Feature Id="it_IT_LanguageFeature" Title="Italian translation files" Level="1" Description="Installs the required files for displaying the Duplicati userinterface in Italian (it-IT)." AllowAdvertise="no" TypicalDefault="install" InstallDefault="local" >
|
||||
<ComponentGroupRef Id="DUPLICATI_LANG_it_IT" />
|
||||
</Feature>
|
||||
<Feature Id="zh_CN_LanguageFeature" Title="Chinese translation files" Level="1" Description="Installs the required files for displaying the Duplicati userinterface in Chinese (zh-CN)." AllowAdvertise="no" TypicalDefault="install" InstallDefault="local" >
|
||||
<ComponentGroupRef Id="DUPLICATI_LANG_zh_CN" />
|
||||
</Feature>
|
||||
</Feature>
|
||||
|
||||
<!-- Launch duplicati setup -->
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
<Compile Include="incLocFiles.pt-BR.wxs" />
|
||||
<Compile Include="incLocFiles.de-DE.wxs" />
|
||||
<Compile Include="incLocFiles.es-ES.wxs" />
|
||||
<Compile Include="incLocFiles.it-IT.wxs" />
|
||||
<Compile Include="incLocFiles.zh-CN.wxs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Resources" />
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user