diff --git a/CHANGELOG.md b/CHANGELOG.md index 892294cf..53c3b913 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ ### Changelog +#### Version - 2.2.0.0 - 8/7/2020 +* Can now use NTFS XPRESS16 compression to reduce install sizes (optional in the settings panel) +* Better valid directory detection during install +* Prime the Hash cache during install so that we don't have to re-hash during a modlist update +* Better detection and handling of midden files +* Reworked the installer to use less temporary storage during install, keeps fewer archives open at once +* Launcher now passes arguments to the main Wabbajack.exe application + #### Version - 2.1.3.4 - 7/28/2020 * Fixes for Tar Files (for realz this time) * Watch disk usage, throw an error if disk usage gets too high diff --git a/Wabbajack.CLI/Wabbajack.CLI.csproj b/Wabbajack.CLI/Wabbajack.CLI.csproj index d2166ece..83aa7b0b 100644 --- a/Wabbajack.CLI/Wabbajack.CLI.csproj +++ b/Wabbajack.CLI/Wabbajack.CLI.csproj @@ -6,8 +6,8 @@ wabbajack-cli Wabbajack x64 - 2.1.3.4 - 2.1.3.4 + 2.2.0.0 + 2.2.0.0 Copyright © 2019-2020 An automated ModList installer true diff --git a/Wabbajack.Launcher/Wabbajack.Launcher.csproj b/Wabbajack.Launcher/Wabbajack.Launcher.csproj index e5a04bee..f7fac707 100644 --- a/Wabbajack.Launcher/Wabbajack.Launcher.csproj +++ b/Wabbajack.Launcher/Wabbajack.Launcher.csproj @@ -4,8 +4,8 @@ WinExe netcoreapp3.1 true - 2.1.3.4 - 2.1.3.4 + 2.2.0.0 + 2.2.0.0 Copyright © 2019-2020 Wabbajack Application Launcher true diff --git a/Wabbajack.Lib/ClientAPI.cs b/Wabbajack.Lib/ClientAPI.cs index 312c39f8..ce61dc5e 100644 --- a/Wabbajack.Lib/ClientAPI.cs +++ b/Wabbajack.Lib/ClientAPI.cs @@ -239,5 +239,20 @@ namespace Wabbajack.Lib } throw new HttpException(result); } + + public static async Task GetMirrorUrl(Hash archiveHash) + { + var client = await GetClient(); + try + { + var result = + await client.GetStringAsync($"{Consts.WabbajackBuildServerUri}/mirror/{archiveHash.ToHex()}"); + return new Uri(result); + } + catch (HttpException ex) + { + return null; + } + } } } diff --git a/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs b/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs index 019721a2..e72ffcca 100644 --- a/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs +++ b/Wabbajack.Lib/Downloaders/DownloadDispatcher.cs @@ -128,11 +128,12 @@ namespace Wabbajack.Lib.Downloaders Utils.Log($"Looking for patch for {archive.Name} ({(long)archive.Hash} {archive.Hash.ToHex()} -> {(long)result.Archive!.Hash} {result.Archive!.Hash.ToHex()})"); var patchResult = await ClientAPI.GetModUpgrade(archive, result.Archive!); - Utils.Log($"Downloading patch for {archive.Name}"); + Utils.Log($"Downloading patch for {archive.Name} from {patchResult}"); var tempFile = new TempFile(); using var response = await (await ClientAPI.GetClient()).GetAsync(patchResult); + await tempFile.Path.WriteAllAsync(await response.Content.ReadAsStreamAsync()); response.Dispose(); @@ -157,9 +158,12 @@ namespace Wabbajack.Lib.Downloaders { try { + var url = await ClientAPI.GetMirrorUrl(archive.Hash); + if (url == null) return false; + var newArchive = new Archive( - new WabbajackCDNDownloader.State(new Uri($"{Consts.WabbajackMirror}{archive.Hash.ToHex()}"))) + new WabbajackCDNDownloader.State(url)) { Hash = archive.Hash, Size = archive.Size, Name = archive.Name }; diff --git a/Wabbajack.Server.Test/ModlistUpdater.cs b/Wabbajack.Server.Test/ModlistUpdater.cs index 11e30cbd..bf1adc94 100644 --- a/Wabbajack.Server.Test/ModlistUpdater.cs +++ b/Wabbajack.Server.Test/ModlistUpdater.cs @@ -105,7 +105,7 @@ namespace Wabbajack.Server.Test patcher.NoCleaning = true; var sql = Fixture.GetService(); - var oldFileData = Encoding.UTF8.GetBytes("Cheese for Everyone!"); + var oldFileData = Encoding.UTF8.GetBytes("Cheese for Everyone!" + Guid.NewGuid()); var newFileData = Encoding.UTF8.GetBytes("Forks for Everyone!"); var oldDataHash = oldFileData.xxHash(); var newDataHash = newFileData.xxHash(); diff --git a/Wabbajack.Server/Controllers/ModUpgrade.cs b/Wabbajack.Server/Controllers/ModUpgrade.cs index cda3e11a..00c2f873 100644 --- a/Wabbajack.Server/Controllers/ModUpgrade.cs +++ b/Wabbajack.Server/Controllers/ModUpgrade.cs @@ -145,6 +145,16 @@ namespace Wabbajack.BuildServer.Controllers await _sql.PurgePatch(hash, rationale); return Ok("Purged"); } + + [HttpGet] + [Authorize(Roles = "User")] + [Route("/mirror/{hashAsHex}")] + public async Task HaveHash(string hashAsHex) + { + var result = await _sql.HaveMirror(Hash.FromHex(hashAsHex)); + if (result) return Ok($"https://{(await _creds).Username}.b-cdn.net/{hashAsHex}"); + return NotFound("Not Mirrored"); + } } diff --git a/Wabbajack.Server/DataLayer/MirroredFiles.cs b/Wabbajack.Server/DataLayer/MirroredFiles.cs index c13e2d10..fbb0d8bc 100644 --- a/Wabbajack.Server/DataLayer/MirroredFiles.cs +++ b/Wabbajack.Server/DataLayer/MirroredFiles.cs @@ -75,5 +75,13 @@ namespace Wabbajack.Server.DataLayer }); } } + + public async Task HaveMirror(Hash hash) + { + await using var conn = await Open(); + + return await conn.QueryFirstOrDefaultAsync("SELECT Hash FROM dbo.MirroredFiles WHERE Hash = @Hash", + new {Hash = hash}) != default; + } } } diff --git a/Wabbajack.Server/Services/PatchBuilder.cs b/Wabbajack.Server/Services/PatchBuilder.cs index b73fe9f4..6cb4546c 100644 --- a/Wabbajack.Server/Services/PatchBuilder.cs +++ b/Wabbajack.Server/Services/PatchBuilder.cs @@ -203,7 +203,7 @@ namespace Wabbajack.Server.Services try { _logger.Log(LogLevel.Information, - $"Uploading {patchFile.Size.ToFileSizeString()} patch file to CDN"); + $"Uploading {patchFile.Size.ToFileSizeString()} patch file to CDN {patchName}"); using var client = await GetBunnyCdnFtpClient(); await client.UploadFileAsync((string)patchFile, patchName, FtpRemoteExists.Overwrite); diff --git a/Wabbajack.Server/Wabbajack.Server.csproj b/Wabbajack.Server/Wabbajack.Server.csproj index e4487220..a9915185 100644 --- a/Wabbajack.Server/Wabbajack.Server.csproj +++ b/Wabbajack.Server/Wabbajack.Server.csproj @@ -3,8 +3,8 @@ Exe netcoreapp3.1 - 2.1.3.4 - 2.1.3.4 + 2.2.0.0 + 2.2.0.0 Copyright © 2019-2020 Wabbajack Server win-x64 diff --git a/Wabbajack/Wabbajack.csproj b/Wabbajack/Wabbajack.csproj index 63a593de..a302a578 100644 --- a/Wabbajack/Wabbajack.csproj +++ b/Wabbajack/Wabbajack.csproj @@ -6,8 +6,8 @@ true x64 win10-x64 - 2.1.3.4 - 2.1.3.4 + 2.2.0.0 + 2.2.0.0 Copyright © 2019-2020 An automated ModList installer true