diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index dd23e00ae..49d08340b 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,2 +1,40 @@ - \ No newline at end of file + + + + + +- [ ] I have searched open and closed issues for duplicates. + +---------------------------------------- + +## Environment info + + +- **Duplicati version**: 0.0.0.0 +- **Operating system**: Replace me +- **Backend**: Replace me + +## Description + +Replace me + +## Steps to reproduce + +1. Replace me +2. Replace me +3. ... + + + +- **Actual result**: +Replace me +- **Expected result**: +Replace me + +## Screenshots + + + +## Debug log + + diff --git a/Duplicati/CommandLine/Commands.cs b/Duplicati/CommandLine/Commands.cs index 0ae5f7fcc..55a366e02 100644 --- a/Duplicati/CommandLine/Commands.cs +++ b/Duplicati/CommandLine/Commands.cs @@ -582,16 +582,29 @@ namespace Duplicati.CommandLine { var parsedStats = result.BackendStatistics as Duplicati.Library.Interface.IParsedBackendStatistics; output.MessageEvent(string.Format(" Duration of backup: {0:hh\\:mm\\:ss}", result.Duration)); - if (parsedStats != null && parsedStats.KnownFileCount > 0) + if (parsedStats != null) { - output.MessageEvent(string.Format(" Remote files: {0}", parsedStats.KnownFileCount)); - output.MessageEvent(string.Format(" Remote size: {0}", Library.Utility.Utility.FormatSizeString(parsedStats.KnownFileSize))); + if (parsedStats.KnownFileCount > 0) + { + output.MessageEvent(string.Format(" Remote files: {0}", parsedStats.KnownFileCount)); + output.MessageEvent(string.Format(" Remote size: {0}", Library.Utility.Utility.FormatSizeString(parsedStats.KnownFileSize))); + } + + if (parsedStats.TotalQuotaSpace >= 0) + { + output.MessageEvent(string.Format(" Total remote quota: {0}", Library.Utility.Utility.FormatSizeString(parsedStats.TotalQuotaSpace))); + } + + if (parsedStats.FreeQuotaSpace >= 0) + { + output.MessageEvent(string.Format(" Available remote quota: {0}", Library.Utility.Utility.FormatSizeString(parsedStats.FreeQuotaSpace))); + } } output.MessageEvent(string.Format(" Files added: {0}", result.AddedFiles)); output.MessageEvent(string.Format(" Files deleted: {0}", result.DeletedFiles)); output.MessageEvent(string.Format(" Files changed: {0}", result.ModifiedFiles)); - + output.MessageEvent(string.Format(" Data uploaded: {0}", Library.Utility.Utility.FormatSizeString(result.BackendStatistics.BytesUploaded))); output.MessageEvent(string.Format(" Data downloaded: {0}", Library.Utility.Utility.FormatSizeString(result.BackendStatistics.BytesDownloaded))); } diff --git a/Duplicati/CommandLine/Help.cs b/Duplicati/CommandLine/Help.cs index 575c85626..c088eb0c7 100644 --- a/Duplicati/CommandLine/Help.cs +++ b/Duplicati/CommandLine/Help.cs @@ -84,8 +84,6 @@ namespace Duplicati.CommandLine topic = "exclude"; else if (System.Environment.CommandLine.IndexOf("--include", StringComparison.OrdinalIgnoreCase) >= 0) topic = "include"; - else if (System.Environment.CommandLine.IndexOf("--default-filters", StringComparison.OrdinalIgnoreCase) >= 0) - topic = "default-filters"; } diff --git a/Duplicati/CommandLine/Program.cs b/Duplicati/CommandLine/Program.cs index e34d0fe23..3d6239d9e 100644 --- a/Duplicati/CommandLine/Program.cs +++ b/Duplicati/CommandLine/Program.cs @@ -297,7 +297,6 @@ namespace Duplicati.CommandLine new Library.Interface.CommandLineArgument("parameters-file", Library.Interface.CommandLineArgument.ArgumentType.Path, Strings.Program.ParametersFileOptionShort, Strings.Program.ParametersFileOptionLong2, "", new string[] {"parameter-file", "parameterfile"}), new Library.Interface.CommandLineArgument("include", Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.IncludeShort, Strings.Program.IncludeLong), new Library.Interface.CommandLineArgument("exclude", Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.ExcludeShort, Strings.Program.ExcludeLong), - new Library.Interface.CommandLineArgument("default-filters", Library.Interface.CommandLineArgument.ArgumentType.String, Strings.Program.DefaultFiltersShort, Strings.Program.DefaultFiltersLong(DefaultFilterSet.Windows.ToString(), DefaultFilterSet.OSX.ToString(), DefaultFilterSet.Linux.ToString(), DefaultFilterSet.All.ToString()), string.Empty, new[] { "default-filter" }), new Library.Interface.CommandLineArgument("control-files", Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.ControlFilesOptionShort, Strings.Program.ControlFilesOptionLong, "false"), new Library.Interface.CommandLineArgument("quiet-console", Library.Interface.CommandLineArgument.ArgumentType.Boolean, Strings.Program.QuietConsoleOptionShort, Strings.Program.QuietConsoleOptionLong, "false"), new Library.Interface.CommandLineArgument("auto-update", Library.Interface.CommandLineArgument.ArgumentType.Boolean, LC.L("Toggle automatic updates"), LC.L("Set this option if you prefer to have the commandline version automatically update"), "false"), diff --git a/Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj b/Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj index 36b99861b..565830a4a 100644 --- a/Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj +++ b/Duplicati/CommandLine/RecoveryTool/Duplicati.CommandLine.RecoveryTool.csproj @@ -40,7 +40,7 @@ - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/CommandLine/RecoveryTool/packages.config b/Duplicati/CommandLine/RecoveryTool/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/CommandLine/RecoveryTool/packages.config +++ b/Duplicati/CommandLine/RecoveryTool/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/CommandLine/Strings.cs b/Duplicati/CommandLine/Strings.cs index 57e2de0fc..ef9a45258 100644 --- a/Duplicati/CommandLine/Strings.cs +++ b/Duplicati/CommandLine/Strings.cs @@ -26,8 +26,6 @@ namespace Duplicati.CommandLine.Strings { public static string IncludeShort { get { return LC.L(@"Include files"); } } public static string ExcludeLong { get { return LC.L(@"Exclude files that match this filter. The special character * means any number of character, and the special character ? means any single character, use *.txt to exclude all files with a txt extension. Regular expressions are also supported and can be supplied by using hard braces, i.e. [.*\.txt]."); } } public static string ExcludeShort { get { return LC.L(@"Exclude files"); } } - public static string DefaultFiltersLong(string windows, string osx, string linux, string all) { return LC.L(@"Exclude files that match the given filter sets. Which default filter sets should be used. Valid sets are ""{0}"", ""{1}"", ""{2}"", and ""{3}"". If this parameter is set with no value, the set for the current operating system will be used.", windows, osx, linux, all); } - public static string DefaultFiltersShort { get { return LC.L(@"Default filter sets"); } } public static string ControlFilesOptionShort { get { return LC.L(@"If this option is used with a backup operation, it is interpreted as a list of files to add to the filesets. When used with list or restore, it will list or restore the control files instead of the normal files."); } } public static string ControlFilesOptionLong { get { return LC.L(@"Use control files"); } } public static string QuietConsoleOptionLong { get { return LC.L(@"If this option is set, progress reports and other messages that would normally go to the console will be redirected to the log."); } } diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj index 507192cbd..2c1366d95 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/Duplicati.GUI.TrayIcon.csproj @@ -88,11 +88,11 @@ False - - ..\..\..\packages\CoCoL.1.5.0\lib\net45\CoCoL.dll - - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\..\..\packages\CoCoL.1.5.1\lib\net45\CoCoL.dll @@ -138,11 +138,11 @@ - + diff --git a/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config b/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config index e3cd52bcd..040b8a7cf 100644 --- a/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config +++ b/Duplicati/GUI/Duplicati.GUI.TrayIcon/packages.config @@ -1,5 +1,5 @@  - - + + \ No newline at end of file diff --git a/Duplicati/Library/AutoUpdater/Duplicati.Library.AutoUpdater.csproj b/Duplicati/Library/AutoUpdater/Duplicati.Library.AutoUpdater.csproj index 85bf1046d..99c1279a9 100644 --- a/Duplicati/Library/AutoUpdater/Duplicati.Library.AutoUpdater.csproj +++ b/Duplicati/Library/AutoUpdater/Duplicati.Library.AutoUpdater.csproj @@ -37,7 +37,7 @@ - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/AutoUpdater/packages.config b/Duplicati/Library/AutoUpdater/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/AutoUpdater/packages.config +++ b/Duplicati/Library/AutoUpdater/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/AmazonCloudDrive/Duplicati.Library.Backend.AmazonCloudDrive.csproj b/Duplicati/Library/Backend/AmazonCloudDrive/Duplicati.Library.Backend.AmazonCloudDrive.csproj index 9bc53af09..c8a3b4888 100644 --- a/Duplicati/Library/Backend/AmazonCloudDrive/Duplicati.Library.Backend.AmazonCloudDrive.csproj +++ b/Duplicati/Library/Backend/AmazonCloudDrive/Duplicati.Library.Backend.AmazonCloudDrive.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/AmazonCloudDrive/packages.config b/Duplicati/Library/Backend/AmazonCloudDrive/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/AmazonCloudDrive/packages.config +++ b/Duplicati/Library/Backend/AmazonCloudDrive/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/AzureBlob/Duplicati.Library.Backend.AzureBlob.csproj b/Duplicati/Library/Backend/AzureBlob/Duplicati.Library.Backend.AzureBlob.csproj index 5f3406d20..48e488838 100644 --- a/Duplicati/Library/Backend/AzureBlob/Duplicati.Library.Backend.AzureBlob.csproj +++ b/Duplicati/Library/Backend/AzureBlob/Duplicati.Library.Backend.AzureBlob.csproj @@ -39,27 +39,27 @@ - - ..\..\..\..\packages\Microsoft.Data.Edm.5.8.2\lib\net40\Microsoft.Data.Edm.dll - - - ..\..\..\..\packages\System.Spatial.5.8.2\lib\net40\System.Spatial.dll - - - ..\..\..\..\packages\Microsoft.Data.OData.5.8.2\lib\net40\Microsoft.Data.OData.dll - - - ..\..\..\..\packages\Microsoft.Data.Services.Client.5.8.2\lib\net40\Microsoft.Data.Services.Client.dll - - - ..\..\..\..\packages\WindowsAzure.Storage.8.1.3\lib\net45\Microsoft.WindowsAzure.Storage.dll - - - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - ..\..\..\..\packages\Microsoft.Azure.KeyVault.Core.2.0.4\lib\net45\Microsoft.Azure.KeyVault.Core.dll + + ..\..\..\..\packages\Microsoft.Data.Edm.5.8.3\lib\net40\Microsoft.Data.Edm.dll + + + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\..\..\..\packages\System.Spatial.5.8.3\lib\net40\System.Spatial.dll + + + ..\..\..\..\packages\Microsoft.Data.OData.5.8.3\lib\net40\Microsoft.Data.OData.dll + + + ..\..\..\..\packages\Microsoft.Data.Services.Client.5.8.3\lib\net40\Microsoft.Data.Services.Client.dll + + + ..\..\..\..\packages\WindowsAzure.Storage.8.4.0\lib\net45\Microsoft.WindowsAzure.Storage.dll + diff --git a/Duplicati/Library/Backend/AzureBlob/packages.config b/Duplicati/Library/Backend/AzureBlob/packages.config index 326e00f3a..720f12ed8 100644 --- a/Duplicati/Library/Backend/AzureBlob/packages.config +++ b/Duplicati/Library/Backend/AzureBlob/packages.config @@ -1,14 +1,14 @@  - - - - + + + + - - + + \ No newline at end of file diff --git a/Duplicati/Library/Backend/Backblaze/Duplicati.Library.Backend.Backblaze.csproj b/Duplicati/Library/Backend/Backblaze/Duplicati.Library.Backend.Backblaze.csproj index d25421706..539d02496 100644 --- a/Duplicati/Library/Backend/Backblaze/Duplicati.Library.Backend.Backblaze.csproj +++ b/Duplicati/Library/Backend/Backblaze/Duplicati.Library.Backend.Backblaze.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/Backblaze/packages.config b/Duplicati/Library/Backend/Backblaze/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/Backblaze/packages.config +++ b/Duplicati/Library/Backend/Backblaze/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/Box/Duplicati.Library.Backend.Box.csproj b/Duplicati/Library/Backend/Box/Duplicati.Library.Backend.Box.csproj index 03fa5ee4f..2a9d73501 100644 --- a/Duplicati/Library/Backend/Box/Duplicati.Library.Backend.Box.csproj +++ b/Duplicati/Library/Backend/Box/Duplicati.Library.Backend.Box.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/Box/packages.config b/Duplicati/Library/Backend/Box/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/Box/packages.config +++ b/Duplicati/Library/Backend/Box/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/Dropbox/Duplicati.Library.Backend.Dropbox.csproj b/Duplicati/Library/Backend/Dropbox/Duplicati.Library.Backend.Dropbox.csproj index 3bfd38fe3..75e2c7264 100644 --- a/Duplicati/Library/Backend/Dropbox/Duplicati.Library.Backend.Dropbox.csproj +++ b/Duplicati/Library/Backend/Dropbox/Duplicati.Library.Backend.Dropbox.csproj @@ -34,7 +34,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/Dropbox/packages.config b/Duplicati/Library/Backend/Dropbox/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/Dropbox/packages.config +++ b/Duplicati/Library/Backend/Dropbox/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/GoogleServices/Duplicati.Library.Backend.GoogleServices.csproj b/Duplicati/Library/Backend/GoogleServices/Duplicati.Library.Backend.GoogleServices.csproj index f7afe59a6..14fd2ea1c 100644 --- a/Duplicati/Library/Backend/GoogleServices/Duplicati.Library.Backend.GoogleServices.csproj +++ b/Duplicati/Library/Backend/GoogleServices/Duplicati.Library.Backend.GoogleServices.csproj @@ -32,7 +32,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/GoogleServices/packages.config b/Duplicati/Library/Backend/GoogleServices/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/GoogleServices/packages.config +++ b/Duplicati/Library/Backend/GoogleServices/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj b/Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj index d6f8b6884..bbfaad3be 100644 --- a/Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj +++ b/Duplicati/Library/Backend/Mega/Duplicati.Library.Backend.Mega.csproj @@ -32,14 +32,14 @@ - - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - ..\..\..\..\packages\MegaApiClient.1.6.0\lib\net45\MegaApiClient.dll + + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/Duplicati/Library/Backend/Mega/packages.config b/Duplicati/Library/Backend/Mega/packages.config index b258c864f..d8d29881e 100644 --- a/Duplicati/Library/Backend/Mega/packages.config +++ b/Duplicati/Library/Backend/Mega/packages.config @@ -1,6 +1,6 @@  - - + + \ No newline at end of file diff --git a/Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj b/Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj index 5a89ea5fc..7079ee68f 100644 --- a/Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj +++ b/Duplicati/Library/Backend/OAuthHelper/Duplicati.Library.OAuthHelper.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/OAuthHelper/packages.config b/Duplicati/Library/Backend/OAuthHelper/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/OAuthHelper/packages.config +++ b/Duplicati/Library/Backend/OAuthHelper/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/OneDrive/Duplicati.Library.Backend.OneDrive.csproj b/Duplicati/Library/Backend/OneDrive/Duplicati.Library.Backend.OneDrive.csproj index a29d3d805..c03f0b385 100644 --- a/Duplicati/Library/Backend/OneDrive/Duplicati.Library.Backend.OneDrive.csproj +++ b/Duplicati/Library/Backend/OneDrive/Duplicati.Library.Backend.OneDrive.csproj @@ -45,7 +45,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/OneDrive/OneDrive.cs b/Duplicati/Library/Backend/OneDrive/OneDrive.cs index 289dd024a..2b85409bb 100644 --- a/Duplicati/Library/Backend/OneDrive/OneDrive.cs +++ b/Duplicati/Library/Backend/OneDrive/OneDrive.cs @@ -7,7 +7,7 @@ using Duplicati.Library.Interface; namespace Duplicati.Library.Backend { - public class OneDrive : IBackend, IStreamingBackend + public class OneDrive : IBackend, IStreamingBackend, IQuotaEnabledBackend, IRenameEnabledBackend { private const string AUTHID_OPTION = "authid"; @@ -73,11 +73,11 @@ namespace Duplicati.Library.Backend public string upload_location { get; set; } public string type { get; set; } [Newtonsoft.Json.JsonProperty(NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public DateTime created_time { get; set; } + public DateTime? created_time { get; set; } [Newtonsoft.Json.JsonProperty(NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public DateTime updated_time { get; set; } + public DateTime? updated_time { get; set; } [Newtonsoft.Json.JsonProperty(NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public long size { get; set; } + public long? size { get; set; } } private class WLID_CreateFolderData @@ -106,13 +106,21 @@ namespace Duplicati.Library.Backend public string locale { get; set; } } + private class WLID_QuotaInfo + { + [Newtonsoft.Json.JsonProperty("quota")] + public long? Quota { get; set; } + [Newtonsoft.Json.JsonProperty("available")] + public long? Available { get; set; } + } + private WLID_FolderItem FindFolder(string folder, string parentfolder = null) { if (string.IsNullOrWhiteSpace(parentfolder)) parentfolder = ROOT_FOLDER_ID; var url = string.Format("{0}/{1}?access_token={2}", WLID_SERVER, string.Format(FOLDER_TEMPLATE, parentfolder), Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); - var res = m_oauth.GetJSONData(url); + var res = m_oauth.GetJSONData(url, x => x.UserAgent = USER_AGENT); if (res == null || res.data == null) return null; @@ -130,7 +138,7 @@ namespace Duplicati.Library.Backend if (folders.Length == 0) { var url = string.Format("{0}/{1}?access_token={2}", WLID_SERVER, ROOT_FOLDER_ID, Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); - return m_oauth.GetJSONData(url); + return m_oauth.GetJSONData(url, x => x.UserAgent = USER_AGENT); } WLID_FolderItem cur = null; @@ -214,6 +222,12 @@ namespace Duplicati.Library.Backend return id; } + private WLID_QuotaInfo GetQuotaInfo() + { + var url = string.Format("{0}/me/skydrive/quota?access_token={1}", WLID_SERVER, Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); + return m_oauth.GetJSONData(url, x => x.UserAgent = USER_AGENT); + } + #region IBackend Members public void Test() @@ -248,7 +262,7 @@ namespace Duplicati.Library.Backend while(count == FILE_LIST_PAGE_SIZE) { var url = string.Format("{0}/{1}?access_token={2}&limit={3}&offset={4}", WLID_SERVER, string.Format(FOLDER_TEMPLATE, FolderID), Library.Utility.Uri.UrlEncode(m_oauth.AccessToken), FILE_LIST_PAGE_SIZE, offset); - var res = m_oauth.GetJSONData(url); + var res = m_oauth.GetJSONData(url, x => x.UserAgent = USER_AGENT); if (res != null && res.data != null) { @@ -257,7 +271,7 @@ namespace Duplicati.Library.Backend { m_fileidCache.Add(r.name, r.id); - var fe = new FileEntry(r.name, r.size, r.updated_time, r.updated_time); + var fe = new FileEntry(r.name, r.size.Value, r.updated_time.Value, r.updated_time.Value); fe.IsFolder = string.Equals(r.type, "folder", StringComparison.OrdinalIgnoreCase); files.Add(fe); } @@ -293,6 +307,7 @@ namespace Duplicati.Library.Backend var id = GetFileID(remotename); var url = string.Format("{0}/{1}?access_token={2}", WLID_SERVER, id, Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); var req = (HttpWebRequest)WebRequest.Create(url); + req.UserAgent = USER_AGENT; req.Method = "DELETE"; var areq = new Utility.AsyncHttpRequest(req); @@ -354,8 +369,9 @@ namespace Duplicati.Library.Backend { var url = string.Format("{0}/me?access_token={1}", WLID_SERVER, Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); var req = (HttpWebRequest)WebRequest.Create(url); + req.UserAgent = USER_AGENT; var areq = new Utility.AsyncHttpRequest(req); - + using(var resp = (HttpWebResponse)areq.GetResponse()) using(var rs = areq.GetResponseStream()) using(var tr = new System.IO.StreamReader(rs)) @@ -367,6 +383,79 @@ namespace Duplicati.Library.Backend } } + #region IRenameEnabledBackend + + public void Rename(string oldname, string newname) + { + try + { + try + { + var id = GetFileID(oldname); + var url = string.Format("{0}/{1}?access_token={2}", WLID_SERVER, id, Library.Utility.Uri.UrlEncode(m_oauth.AccessToken)); + var req = (HttpWebRequest)WebRequest.Create(url); + req.UserAgent = USER_AGENT; + req.Method = "PUT"; + + var updateData = new WLID_FolderItem() { name = newname }; + var data = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(updateData)); + req.ContentLength = data.Length; + req.ContentType = "application/json; charset=UTF-8"; + using (var requestStream = req.GetRequestStream()) + requestStream.Write(data, 0, data.Length); + + var areq = new Utility.AsyncHttpRequest(req); + using (var resp = (HttpWebResponse)areq.GetResponse()) + { + if (resp.StatusCode == System.Net.HttpStatusCode.NotFound) + throw new FileMissingException(); + + if ((int)resp.StatusCode < 200 || (int)resp.StatusCode > 299) + throw new ProtocolViolationException(Strings.OneDrive.UnexpectedError(resp.StatusCode, resp.StatusDescription)); + + m_fileidCache[newname] = id; + m_fileidCache.Remove(oldname); + } + } + catch + { + // Since we don't know the state of file IDs, clear the cache + m_fileidCache.Clear(); + + throw; + } + } + catch (System.Net.WebException wex) + { + if (wex.Response is System.Net.HttpWebResponse && ((System.Net.HttpWebResponse)wex.Response).StatusCode == System.Net.HttpStatusCode.NotFound) + throw new FileMissingException(wex); + else + throw; + } + } + + #endregion + + #region IQuotaEnabledBackend Members + + public long TotalQuotaSpace + { + get + { + return this.GetQuotaInfo().Quota ?? -1; + } + } + + public long FreeQuotaSpace + { + get + { + return this.GetQuotaInfo().Available ?? -1; + } + } + + #endregion + #region IStreamingBackend Members public void Put(string remotename, System.IO.Stream stream) diff --git a/Duplicati/Library/Backend/OneDrive/packages.config b/Duplicati/Library/Backend/OneDrive/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/OneDrive/packages.config +++ b/Duplicati/Library/Backend/OneDrive/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/OpenStack/Duplicati.Library.Backend.OpenStack.csproj b/Duplicati/Library/Backend/OpenStack/Duplicati.Library.Backend.OpenStack.csproj index 5c1edea05..29289d27c 100644 --- a/Duplicati/Library/Backend/OpenStack/Duplicati.Library.Backend.OpenStack.csproj +++ b/Duplicati/Library/Backend/OpenStack/Duplicati.Library.Backend.OpenStack.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/OpenStack/packages.config b/Duplicati/Library/Backend/OpenStack/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/OpenStack/packages.config +++ b/Duplicati/Library/Backend/OpenStack/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/S3/Duplicati.Library.Backend.S3.csproj b/Duplicati/Library/Backend/S3/Duplicati.Library.Backend.S3.csproj index 1b3a0cc71..415e63aef 100644 --- a/Duplicati/Library/Backend/S3/Duplicati.Library.Backend.S3.csproj +++ b/Duplicati/Library/Backend/S3/Duplicati.Library.Backend.S3.csproj @@ -39,13 +39,13 @@ - ..\..\..\..\packages\AWSSDK.Core.3.3.14.2\lib\net45\AWSSDK.Core.dll + ..\..\..\..\packages\AWSSDK.Core.3.3.17.10\lib\net45\AWSSDK.Core.dll - ..\..\..\..\packages\AWSSDK.IdentityManagement.3.3.4\lib\net45\AWSSDK.IdentityManagement.dll + ..\..\..\..\packages\AWSSDK.IdentityManagement.3.3.5\lib\net45\AWSSDK.IdentityManagement.dll - ..\..\..\..\packages\AWSSDK.S3.3.3.7\lib\net45\AWSSDK.S3.dll + ..\..\..\..\packages\AWSSDK.S3.3.3.11\lib\net45\AWSSDK.S3.dll diff --git a/Duplicati/Library/Backend/S3/packages.config b/Duplicati/Library/Backend/S3/packages.config index 5cbaa9296..fc1424bcc 100644 --- a/Duplicati/Library/Backend/S3/packages.config +++ b/Duplicati/Library/Backend/S3/packages.config @@ -1,6 +1,6 @@  - - - + + + \ No newline at end of file diff --git a/Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj b/Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj index 11e61f2d4..96c3b453b 100644 --- a/Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj +++ b/Duplicati/Library/Backend/SSHv2/Duplicati.Library.Backend.SSHv2.csproj @@ -40,7 +40,7 @@ - ..\..\..\..\packages\SSH.NET.2016.1.0-beta2\lib\net40\Renci.SshNet.dll + ..\..\..\..\packages\SSH.NET.2016.1.0-beta3\lib\net40\Renci.SshNet.dll diff --git a/Duplicati/Library/Backend/SSHv2/SSHv2Backend.cs b/Duplicati/Library/Backend/SSHv2/SSHv2Backend.cs index d32958872..503ea4d80 100644 --- a/Duplicati/Library/Backend/SSHv2/SSHv2Backend.cs +++ b/Duplicati/Library/Backend/SSHv2/SSHv2Backend.cs @@ -257,7 +257,7 @@ namespace Duplicati.Library.Backend if (!string.IsNullOrWhiteSpace(keyfile)) con = new SftpClient(m_server, m_port, m_username, ValidateKeyFile(keyfile, m_password)); else - con = new SftpClient(m_server, m_port, m_username, m_password); + con = new SftpClient(m_server, m_port, m_username, m_password ?? string.Empty); con.HostKeyReceived += delegate (object sender, HostKeyEventArgs e) { diff --git a/Duplicati/Library/Backend/SSHv2/packages.config b/Duplicati/Library/Backend/SSHv2/packages.config index 2d3244778..5df54958b 100644 --- a/Duplicati/Library/Backend/SSHv2/packages.config +++ b/Duplicati/Library/Backend/SSHv2/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/Sia/Duplicati.Library.Backend.Sia.csproj b/Duplicati/Library/Backend/Sia/Duplicati.Library.Backend.Sia.csproj index f5ce4e27c..fefb04749 100644 --- a/Duplicati/Library/Backend/Sia/Duplicati.Library.Backend.Sia.csproj +++ b/Duplicati/Library/Backend/Sia/Duplicati.Library.Backend.Sia.csproj @@ -33,7 +33,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/Sia/packages.config b/Duplicati/Library/Backend/Sia/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/Sia/packages.config +++ b/Duplicati/Library/Backend/Sia/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Backend/TahoeLAFS/Duplicati.Library.Backend.TahoeLAFS.csproj b/Duplicati/Library/Backend/TahoeLAFS/Duplicati.Library.Backend.TahoeLAFS.csproj index ca4b21113..ff93fd131 100644 --- a/Duplicati/Library/Backend/TahoeLAFS/Duplicati.Library.Backend.TahoeLAFS.csproj +++ b/Duplicati/Library/Backend/TahoeLAFS/Duplicati.Library.Backend.TahoeLAFS.csproj @@ -41,7 +41,7 @@ - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Backend/TahoeLAFS/packages.config b/Duplicati/Library/Backend/TahoeLAFS/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Library/Backend/TahoeLAFS/packages.config +++ b/Duplicati/Library/Backend/TahoeLAFS/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj b/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj index 275237e36..6b1e5e8b4 100644 --- a/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj +++ b/Duplicati/Library/Compression/Duplicati.Library.Compression.csproj @@ -42,7 +42,7 @@ ..\..\..\thirdparty\ManagedLZMA\managed-lzma.dll - ..\..\..\packages\sharpcompress.0.18.0\lib\net45\SharpCompress.dll + ..\..\..\packages\SharpCompress.0.18.2\lib\net45\SharpCompress.dll diff --git a/Duplicati/Library/Compression/packages.config b/Duplicati/Library/Compression/packages.config index 29244e074..2c846c9a5 100644 --- a/Duplicati/Library/Compression/packages.config +++ b/Duplicati/Library/Compression/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Interface/IBackend.cs b/Duplicati/Library/Interface/IBackend.cs index df78a28d7..a8b5532b9 100644 --- a/Duplicati/Library/Interface/IBackend.cs +++ b/Duplicati/Library/Interface/IBackend.cs @@ -48,7 +48,6 @@ namespace Duplicati.Library.Interface /// /// Returns a list of files found on the remote location /// - /// The url passed /// The list of files List List(); @@ -82,7 +81,7 @@ namespace Duplicati.Library.Interface /// string Description { get; } - /// + /// /// The purpose of this method is to test the connection to the remote backend. /// If any problem is encountered, this method should throw an exception. /// If the encountered problem is a missing target "folder", diff --git a/Duplicati/Library/Interface/IRenameEnabledBackend.cs b/Duplicati/Library/Interface/IRenameEnabledBackend.cs index 1185b8c53..550e098e9 100644 --- a/Duplicati/Library/Interface/IRenameEnabledBackend.cs +++ b/Duplicati/Library/Interface/IRenameEnabledBackend.cs @@ -24,17 +24,15 @@ using System.Text; namespace Duplicati.Library.Interface { /// - /// An interface a backend may implement if it supports streaming operations. - /// Backends that implement this interface can be throttled and correctly shows - /// the progressbar when transfering data. + /// An interface a backend may implement if it supports rename operations. /// public interface IRenameEnabledBackend : IBackend { /// - /// Puts the content of the file to the url passed + /// Renames the file /// - /// The remote filename, relative to the URL - /// The stream to read from + /// The old filename, relative to the root + /// The new filename, relative to the root void Rename(string oldname, string newname); } } diff --git a/Duplicati/Library/Localization/Duplicati.Library.Localization.csproj b/Duplicati/Library/Localization/Duplicati.Library.Localization.csproj index 844e2ae14..1fff0eee3 100644 --- a/Duplicati/Library/Localization/Duplicati.Library.Localization.csproj +++ b/Duplicati/Library/Localization/Duplicati.Library.Localization.csproj @@ -34,11 +34,11 @@ false - - ..\..\..\packages\NGettext.0.6.2\lib\net45\NGettext.dll - True - + + ..\..\..\packages\NGettext.0.6.3\lib\net45\NGettext.dll + + @@ -50,11 +50,11 @@ - - - + + + \ No newline at end of file diff --git a/Duplicati/Library/Localization/packages.config b/Duplicati/Library/Localization/packages.config index e1ed09554..dd9f8d80b 100644 --- a/Duplicati/Library/Localization/packages.config +++ b/Duplicati/Library/Localization/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Main/Duplicati.Library.Main.csproj b/Duplicati/Library/Main/Duplicati.Library.Main.csproj index 288ea5819..c87b9e252 100644 --- a/Duplicati/Library/Main/Duplicati.Library.Main.csproj +++ b/Duplicati/Library/Main/Duplicati.Library.Main.csproj @@ -42,7 +42,7 @@ - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll ..\..\..\packages\CoCoL.1.5.1\lib\net45\CoCoL.dll diff --git a/Duplicati/Library/Main/Operation/FilelistProcessor.cs b/Duplicati/Library/Main/Operation/FilelistProcessor.cs index 74a3bc267..272a45f8b 100644 --- a/Duplicati/Library/Main/Operation/FilelistProcessor.cs +++ b/Duplicati/Library/Main/Operation/FilelistProcessor.cs @@ -216,9 +216,9 @@ namespace Duplicati.Library.Main.Operation where n.FileType == RemoteVolumeType.Files orderby n.Time descending select n).ToList(); - log.KnownFileCount = remotelist.Count(); + log.KnownFileCount = remotelist.Count; log.KnownFileSize = remotelist.Select(x => Math.Max(0, x.File.Size)).Sum(); - log.UnknownFileCount = unknownlist.Count(); + log.UnknownFileCount = unknownlist.Count; log.UnknownFileSize = unknownlist.Select(x => Math.Max(0, x.Size)).Sum(); log.BackupListCount = filesets.Count; log.LastBackupDate = filesets.Count == 0 ? new DateTime(0) : filesets[0].Time.ToLocalTime(); diff --git a/Duplicati/Library/Main/Options.cs b/Duplicati/Library/Main/Options.cs index 31df1019d..7b97c408e 100644 --- a/Duplicati/Library/Main/Options.cs +++ b/Duplicati/Library/Main/Options.cs @@ -22,6 +22,7 @@ using System.Linq; using System.Collections.Generic; using System.Text; using Duplicati.Library.Interface; +using Duplicati.Library.Utility; namespace Duplicati.Library.Main { @@ -472,6 +473,8 @@ namespace Duplicati.Library.Main new CommandLineArgument("quota-size", CommandLineArgument.ArgumentType.Size, Strings.Options.QuotasizeShort, Strings.Options.QuotasizeLong), + new CommandLineArgument("default-filters", CommandLineArgument.ArgumentType.String, Strings.Options.DefaultFiltersShort, Strings.Options.DefaultFiltersLong(DefaultFilterSet.Windows.ToString(), DefaultFilterSet.OSX.ToString(), DefaultFilterSet.Linux.ToString(), DefaultFilterSet.All.ToString()), string.Empty, new[] { "default-filter" }), + new CommandLineArgument("symlink-policy", CommandLineArgument.ArgumentType.Enumeration, Strings.Options.SymlinkpolicyShort, Strings.Options.SymlinkpolicyLong("store", "ignore", "follow"), Enum.GetName(typeof(SymlinkStrategy), SymlinkStrategy.Store), null, Enum.GetNames(typeof(SymlinkStrategy))), new CommandLineArgument("hardlink-policy", CommandLineArgument.ArgumentType.Enumeration, Strings.Options.HardlinkpolicyShort, Strings.Options.HardlinkpolicyLong("first", "all", "none"), Enum.GetName(typeof(HardlinkStrategy), HardlinkStrategy.All), null, Enum.GetNames(typeof(HardlinkStrategy))), new CommandLineArgument("exclude-files-attributes", CommandLineArgument.ArgumentType.String, Strings.Options.ExcludefilesattributesShort, Strings.Options.ExcludefilesattributesLong(Enum.GetNames(typeof(System.IO.FileAttributes)))), diff --git a/Duplicati/Library/Main/Strings.cs b/Duplicati/Library/Main/Strings.cs index 3d54b49d3..467f17064 100644 --- a/Duplicati/Library/Main/Strings.cs +++ b/Duplicati/Library/Main/Strings.cs @@ -119,6 +119,8 @@ namespace Duplicati.Library.Main.Strings public static string UploadUnchangedBackupsShort { get { return LC.L(@"Upload empty backup files"); } } public static string QuotasizeLong { get { return LC.L(@"This value can be used to set a known upper limit on the amount of space a backend has. If the backend reports the size itself, this value is ignored"); } } public static string QuotasizeShort { get { return LC.L(@"A reported maximum storage"); } } + public static string DefaultFiltersLong(string windows, string osx, string linux, string all) { return LC.L(@"Exclude files that match the given filter sets. Which default filter sets should be used. Valid sets are ""{0}"", ""{1}"", ""{2}"", and ""{3}"". If this parameter is set with no value, the set for the current operating system will be used.", windows, osx, linux, all); } + public static string DefaultFiltersShort { get { return LC.L(@"Default filter sets"); } } public static string SymlinkpolicyShort { get { return LC.L(@"Symlink handling"); } } public static string SymlinkpolicyLong(string store, string ignore, string follow) { return LC.L(@"Use this option to handle symlinks differently. The ""{0}"" option will simply record a symlink with its name and destination, and a restore will recreate the symlink as a link. Use the option ""{1}"" to ignore all symlinks and not store any information about them. Previous versions of Duplicati used the setting ""{2}"", which will cause symlinked files to be included and restore as normal files.", store, ignore, follow); } public static string HardlinkpolicyShort { get { return LC.L(@"Hardlink handling"); } } @@ -144,9 +146,9 @@ namespace Duplicati.Library.Main.Strings public static string FilehashlookupsizeLong { get { return LC.L(@"A fragment of memory is used to reduce database lookups. You should not change this value unless you get warnings in the log."); } } public static string FilehashlookupsizeShort { get { return LC.L(@"Memory used by the file hash"); } } public static string DisablefilepathcacheLong { get { return LC.L(@"This option can be used to reduce the memory footprint by not keeping paths and modification timestamps in memory"); } } - public static string DisablefilepathcacheShort { get { return LC.L(@"Reduce memory footprint by disabling in-memory lookups"); } } - public static string UseblockcacheShort { get { return LC.L(@"This option can be used to increase speed in exchange for extra memory use."); } } - public static string UseblockcacheLong { get { return LC.L(@"Store an in-memory block cache"); } } + public static string DisablefilepathcacheShort { get { return LC.L(@"Reduce memory footprint by disabling in-memory lookups"); } } + public static string UseblockcacheShort { get { return LC.L(@"This option can be used to increase speed in exchange for extra memory use."); } } + public static string UseblockcacheLong { get { return LC.L(@"Store an in-memory block cache"); } } public static string StoremetadataLong { get { return LC.L(@"Stores metadata, such as file timestamps and attributes. This increases the required storage space as well as the processing time."); } } public static string StoremetadataShort { get { return LC.L(@"Enables storing file metadata"); } } public static string StoremetadataDeprecated { get { return LC.L(@"This option is no longer used as metadata is now stored by default"); } } diff --git a/Duplicati/Library/Main/packages.config b/Duplicati/Library/Main/packages.config index 51bafbda6..040b8a7cf 100644 --- a/Duplicati/Library/Main/packages.config +++ b/Duplicati/Library/Main/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj b/Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj index 8155c8dbe..a23687eed 100644 --- a/Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj +++ b/Duplicati/Library/Modules/Builtin/Duplicati.Library.Modules.Builtin.csproj @@ -51,14 +51,14 @@ - - ..\..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - - ..\..\..\..\packages\MimeKit.1.16.1\lib\net45\MimeKit.dll + ..\..\..\..\packages\MimeKit.1.18.1\lib\net45\MimeKit.dll - ..\..\..\..\packages\MailKit.1.16.1\lib\net45\MailKit.dll + ..\..\..\..\packages\MailKit.1.18.1.1\lib\net45\MailKit.dll + + + ..\..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Library/Modules/Builtin/packages.config b/Duplicati/Library/Modules/Builtin/packages.config index 312695333..75d5024ea 100644 --- a/Duplicati/Library/Modules/Builtin/packages.config +++ b/Duplicati/Library/Modules/Builtin/packages.config @@ -2,7 +2,7 @@ - - - + + + \ No newline at end of file diff --git a/Duplicati/Library/Snapshots/Duplicati.Library.Snapshots.csproj b/Duplicati/Library/Snapshots/Duplicati.Library.Snapshots.csproj index 821f6df78..c8aeceac0 100644 --- a/Duplicati/Library/Snapshots/Duplicati.Library.Snapshots.csproj +++ b/Duplicati/Library/Snapshots/Duplicati.Library.Snapshots.csproj @@ -47,16 +47,16 @@ - - ..\..\..\packages\AlphaFS.2.1.2\lib\net45\AlphaFS.dll - - - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - ..\..\..\packages\AlphaVSS.1.4.0\lib\net45\AlphaVSS.Common.dll + + ..\..\..\packages\AlphaFS.2.1.3\lib\net45\AlphaFS.dll + + + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/Duplicati/Library/Snapshots/packages.config b/Duplicati/Library/Snapshots/packages.config index 0e70e905a..7f058e904 100644 --- a/Duplicati/Library/Snapshots/packages.config +++ b/Duplicati/Library/Snapshots/packages.config @@ -1,6 +1,6 @@  - + - + \ No newline at end of file diff --git a/Duplicati/Library/UsageReporter/Duplicati.Library.UsageReporter.csproj b/Duplicati/Library/UsageReporter/Duplicati.Library.UsageReporter.csproj index 0410288ff..b00614bad 100644 --- a/Duplicati/Library/UsageReporter/Duplicati.Library.UsageReporter.csproj +++ b/Duplicati/Library/UsageReporter/Duplicati.Library.UsageReporter.csproj @@ -31,12 +31,12 @@ - - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll - ..\..\..\packages\CoCoL.1.5.1\lib\net45\CoCoL.dll + + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll + diff --git a/Duplicati/Library/UsageReporter/packages.config b/Duplicati/Library/UsageReporter/packages.config index 51bafbda6..040b8a7cf 100644 --- a/Duplicati/Library/UsageReporter/packages.config +++ b/Duplicati/Library/UsageReporter/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Duplicati/Server/Duplicati.Server.Serialization/Duplicati.Server.Serialization.csproj b/Duplicati/Server/Duplicati.Server.Serialization/Duplicati.Server.Serialization.csproj index ee78e1244..eade340a0 100644 --- a/Duplicati/Server/Duplicati.Server.Serialization/Duplicati.Server.Serialization.csproj +++ b/Duplicati/Server/Duplicati.Server.Serialization/Duplicati.Server.Serialization.csproj @@ -42,7 +42,7 @@ - ..\..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Server/Duplicati.Server.Serialization/packages.config b/Duplicati/Server/Duplicati.Server.Serialization/packages.config index a272c64df..ee51c2373 100644 --- a/Duplicati/Server/Duplicati.Server.Serialization/packages.config +++ b/Duplicati/Server/Duplicati.Server.Serialization/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/Duplicati/Server/Duplicati.Server.csproj b/Duplicati/Server/Duplicati.Server.csproj index c93052735..d8f9221b1 100644 --- a/Duplicati/Server/Duplicati.Server.csproj +++ b/Duplicati/Server/Duplicati.Server.csproj @@ -59,7 +59,7 @@ - ..\..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.10.0.3\lib\net45\Newtonsoft.Json.dll diff --git a/Duplicati/Server/packages.config b/Duplicati/Server/packages.config index cd032d1e3..efc598b08 100644 --- a/Duplicati/Server/packages.config +++ b/Duplicati/Server/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Duplicati/UnitTest/CommandLineOperationsTests.cs b/Duplicati/UnitTest/CommandLineOperationsTests.cs index e1436dfd7..323ff15a5 100644 --- a/Duplicati/UnitTest/CommandLineOperationsTests.cs +++ b/Duplicati/UnitTest/CommandLineOperationsTests.cs @@ -42,7 +42,7 @@ namespace Duplicati.UnitTest } } - [TestFixtureSetUp()] + [OneTimeSetUp] public override void PrepareSourceData() { base.PrepareSourceData(); diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md deleted file mode 100644 index 75df8a8b3..000000000 --- a/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,39 +0,0 @@ - - - - -- [ ] I have searched open and closed issues for duplicates. - ----------------------------------------- - -## Environment info - - -- **Duplicati version**: 0.0.0.0 -- **Operating system**: Replace me -- **Backend**: Replace me - -## Description - -Replace me - -## Steps to reproduce - -1. Replace me -2. Replace me -3. ... - - - -- **Actual result**: -Replace me -- **Expected result**: -Replace me - -## Screenshots - - - -## Debug log - -