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