From 0309f54bd9f700fa1aaaf2764f27641a67b6ef7b Mon Sep 17 00:00:00 2001 From: Nick Jones Date: Thu, 21 Apr 2016 16:41:55 -0400 Subject: [PATCH 1/5] Corrected typo in symbols ignore string String has "fiels" instead of "files". --- src/NuGet.Server/Strings.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NuGet.Server/Strings.resx b/src/NuGet.Server/Strings.resx index a5aa057c..a9860a03 100644 --- a/src/NuGet.Server/Strings.resx +++ b/src/NuGet.Server/Strings.resx @@ -121,6 +121,6 @@ Package {0} already exists. The server is configured to not allow overwriting packages that already exist. - Package {0} is a symbols package (it contains .pdb fiels and a /src folder). The server is configured to ignore symbols packages. + Package {0} is a symbols package (it contains .pdb files and a /src folder). The server is configured to ignore symbols packages. \ No newline at end of file From 26da68d72d20ff80c4403aab353f0cb61ab38d8f Mon Sep 17 00:00:00 2001 From: Maarten Balliauw Date: Mon, 25 Apr 2016 16:41:14 +0200 Subject: [PATCH 2/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78220093..006f13f6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ The home of the NuGet.server package, a lightweight standalone NuGet server ## Feedback -If you're having trouble with the NuGet.org Website, file a bug on the [NuGet Gallery Issue Tracker](https://github.com/nuget/NuGetGallery/issues). +If you're having trouble with the NuGet.org Website or NuGet.Server, file a bug on the [NuGet Gallery Issue Tracker](https://github.com/nuget/NuGetGallery/issues). If you're having trouble with the NuGet client tools (the Visual Studio extension, NuGet.exe command line tool, etc.), file a bug on [NuGet Home](https://github.com/nuget/home/issues). From 8c1f17e09360fdc9485425d3db4d2fa8cc28642b Mon Sep 17 00:00:00 2001 From: Maarten Balliauw Date: Tue, 24 May 2016 19:59:25 +0200 Subject: [PATCH 3/5] Uploading large packages result in OutOfMemoryException https://github.com/NuGet/NuGetGallery/issues/3042 --- .../Infrastructure/ServerPackageRepository.cs | 6 ++++- src/NuGet.Server/Publishing/PackageService.cs | 26 ++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/NuGet.Server/Infrastructure/ServerPackageRepository.cs b/src/NuGet.Server/Infrastructure/ServerPackageRepository.cs index 270f9dcd..9d52ff37 100644 --- a/src/NuGet.Server/Infrastructure/ServerPackageRepository.cs +++ b/src/NuGet.Server/Infrastructure/ServerPackageRepository.cs @@ -186,7 +186,7 @@ private void AddPackagesFromDropFolder() try { // Create package - var package = new ZipPackage(_fileSystem.OpenFile(packageFile)); + var package = new OptimizedZipPackage(_fileSystem, packageFile); // Is it a symbols package? if (IgnoreSymbolsPackages && package.IsSymbolsPackage()) @@ -235,6 +235,8 @@ private void AddPackagesFromDropFolder() } finally { + OptimizedZipPackage.PurgeCache(); + MonitorFileSystem(true); } } @@ -552,6 +554,8 @@ public void ClearCache() { lock (_syncLock) { + OptimizedZipPackage.PurgeCache(); + _serverPackageStore.Clear(); _serverPackageStore.Persist(); _logger.Log(LogLevel.Info, "Cleared package cache."); diff --git a/src/NuGet.Server/Publishing/PackageService.cs b/src/NuGet.Server/Publishing/PackageService.cs index acd8d89d..81a485a3 100644 --- a/src/NuGet.Server/Publishing/PackageService.cs +++ b/src/NuGet.Server/Publishing/PackageService.cs @@ -32,16 +32,26 @@ public void CreatePackage(HttpContextBase context) // Get the package from the request body // ReSharper disable once PossibleNullReferenceException - var stream = request.Files.Count > 0 ? request.Files[0].InputStream : request.InputStream; + var stream = request.Files.Count > 0 + ? request.Files[0].InputStream + : request.InputStream; - var package = new ZipPackage(stream); + // Copy the package to a temporary file + var temporaryFile = Path.GetTempFileName(); + using (var temporaryFileStream = File.Open(temporaryFile, FileMode.OpenOrCreate, FileAccess.ReadWrite)) + { + stream.CopyTo(temporaryFileStream); + } + + var package = new OptimizedZipPackage(temporaryFile); - // Make sure they can access this package + // Make sure the user can access this package if (Authenticate(context, apiKey, package.Id)) { try { _serverRepository.AddPackage(package); + WriteStatus(context, HttpStatusCode.Created, ""); } catch (InvalidOperationException ex) @@ -49,6 +59,16 @@ public void CreatePackage(HttpContextBase context) WriteStatus(context, HttpStatusCode.InternalServerError, ex.Message); } } + + package = null; + try + { + File.Delete(temporaryFile); + } + catch (Exception) + { + WriteStatus(context, HttpStatusCode.InternalServerError, "Could not remove temporary upload file."); + } } public void PublishPackage(HttpContextBase context) From bf7bf6158e21d13cf45a393770683b02479635b0 Mon Sep 17 00:00:00 2001 From: Maarten Balliauw Date: Tue, 24 May 2016 20:02:42 +0200 Subject: [PATCH 4/5] NuGet.Server - Update to NuGet 2.11.1 to support newer TFM's https://github.com/NuGet/NuGetGallery/issues/3043 --- src/CommonAssemblyInfo.cs | 4 ++-- src/NuGet.Server/NuGet.Server.csproj | 7 ++++--- src/NuGet.Server/NuGet.Server.nuspec | 2 +- src/NuGet.Server/packages.config | 4 ++-- test/NuGet.Server.Tests/NuGet.Server.Tests.csproj | 12 +++++++----- test/NuGet.Server.Tests/packages.config | 6 +++--- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/CommonAssemblyInfo.cs b/src/CommonAssemblyInfo.cs index d142ba7e..c2cfa8b0 100644 --- a/src/CommonAssemblyInfo.cs +++ b/src/CommonAssemblyInfo.cs @@ -13,7 +13,7 @@ [assembly: ComVisible(false)] -[assembly: AssemblyVersion("2.10.3.0")] -[assembly: AssemblyFileVersion("2.10.3.0")] +[assembly: AssemblyVersion("2.11.1.0")] +[assembly: AssemblyFileVersion("2.11.1.0")] [assembly: NeutralResourcesLanguage("en-US")] diff --git a/src/NuGet.Server/NuGet.Server.csproj b/src/NuGet.Server/NuGet.Server.csproj index 121e6533..72f77535 100644 --- a/src/NuGet.Server/NuGet.Server.csproj +++ b/src/NuGet.Server/NuGet.Server.csproj @@ -38,11 +38,12 @@ False - ..\..\packages\Newtonsoft.Json.8.0.1\lib\net45\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll True - - ..\..\packages\NuGet.Core.2.10.1\lib\net40-Client\NuGet.Core.dll + + False + ..\..\packages\NuGet.Core.2.11.1\lib\net40-Client\NuGet.Core.dll True diff --git a/src/NuGet.Server/NuGet.Server.nuspec b/src/NuGet.Server/NuGet.Server.nuspec index 0984391c..53893b42 100644 --- a/src/NuGet.Server/NuGet.Server.nuspec +++ b/src/NuGet.Server/NuGet.Server.nuspec @@ -16,7 +16,7 @@ - + diff --git a/src/NuGet.Server/packages.config b/src/NuGet.Server/packages.config index e4e591ce..72f4e492 100644 --- a/src/NuGet.Server/packages.config +++ b/src/NuGet.Server/packages.config @@ -2,8 +2,8 @@ - - + + \ No newline at end of file diff --git a/test/NuGet.Server.Tests/NuGet.Server.Tests.csproj b/test/NuGet.Server.Tests/NuGet.Server.Tests.csproj index 57117fa9..1eafd7c3 100644 --- a/test/NuGet.Server.Tests/NuGet.Server.Tests.csproj +++ b/test/NuGet.Server.Tests/NuGet.Server.Tests.csproj @@ -23,17 +23,19 @@ ..\..\packages\Microsoft.Web.Xdt.2.1.1\lib\net40\Microsoft.Web.XmlTransform.dll True - - ..\..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll + + False + ..\..\packages\Moq.4.5.0\lib\net45\Moq.dll True False - ..\..\packages\Newtonsoft.Json.8.0.1\lib\net45\Newtonsoft.Json.dll + ..\..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll True - - ..\..\packages\NuGet.Core.2.10.1\lib\net40-Client\NuGet.Core.dll + + False + ..\..\packages\NuGet.Core.2.11.1\lib\net40-Client\NuGet.Core.dll True diff --git a/test/NuGet.Server.Tests/packages.config b/test/NuGet.Server.Tests/packages.config index 4b7eef41..3c1fa71f 100644 --- a/test/NuGet.Server.Tests/packages.config +++ b/test/NuGet.Server.Tests/packages.config @@ -1,9 +1,9 @@  - - - + + + From d997741cb2fcc9983b1dce6503c0fa9ea1dd17eb Mon Sep 17 00:00:00 2001 From: Maarten Balliauw Date: Wed, 25 May 2016 07:55:37 +0200 Subject: [PATCH 5/5] Make DefaultServiceResolver expose IPackageAuthenticationService https://github.com/NuGet/NuGetGallery/issues/2996 --- .../Core/DefaultServiceResolver.cs | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/NuGet.Server/Core/DefaultServiceResolver.cs b/src/NuGet.Server/Core/DefaultServiceResolver.cs index 253f1ac1..233c4b63 100644 --- a/src/NuGet.Server/Core/DefaultServiceResolver.cs +++ b/src/NuGet.Server/Core/DefaultServiceResolver.cs @@ -12,16 +12,19 @@ public class DefaultServiceResolver : IServiceResolver { private readonly IHashProvider _hashProvider; - private readonly IPackageService _packageService; private readonly IServerPackageRepository _packageRepository; + private readonly IPackageAuthenticationService _packageAuthenticationService; + private readonly IPackageService _packageService; public DefaultServiceResolver() { _hashProvider = new CryptoHashProvider(Constants.HashAlgorithm); - _packageRepository = new ServerPackageRepository(PackageUtility.PackagePhysicalPath, _hashProvider, new TraceLogger()); + _packageRepository = new ServerPackageRepository(PackageUtility.PackagePhysicalPath, _hashProvider, new TraceLogger()); - _packageService = new PackageService(_packageRepository, new PackageAuthenticationService()); + _packageAuthenticationService = new PackageAuthenticationService(); + + _packageService = new PackageService(_packageRepository, _packageAuthenticationService); } public object Resolve(Type type) @@ -31,14 +34,19 @@ public object Resolve(Type type) return _hashProvider; } - if (type == typeof(IPackageService)) + if (type == typeof(IServerPackageRepository)) { - return _packageService; + return _packageRepository; } - if (type == typeof(IServerPackageRepository)) + if (type == typeof(IPackageAuthenticationService)) { - return _packageRepository; + return _packageAuthenticationService; + } + + if (type == typeof(IPackageService)) + { + return _packageService; } return null;