From f9ec5c15232f3260862235ffadf30f950ca6e97a Mon Sep 17 00:00:00 2001 From: bluepilledgreat <97983689+bluepilledgreat@users.noreply.github.com> Date: Fri, 6 Jan 2023 22:18:15 +0000 Subject: [PATCH 1/2] get rid of base64 mod strings --- Bloxstrap/Bloxstrap.csproj | 6 ++++++ Bloxstrap/Bootstrapper.cs | 22 ++++++++++----------- Bloxstrap/Helpers/ResourceHelper.cs | 23 ++++++++++++++++++++++ Bloxstrap/Program.cs | 7 ------- Bloxstrap/Resources/Mods/OldCursor.png | Bin 0 -> 232 bytes Bloxstrap/Resources/Mods/OldDeath.ogg | Bin 0 -> 6271 bytes Bloxstrap/Resources/Mods/OldFarCursor.png | Bin 0 -> 235 bytes 7 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 Bloxstrap/Helpers/ResourceHelper.cs create mode 100644 Bloxstrap/Resources/Mods/OldCursor.png create mode 100644 Bloxstrap/Resources/Mods/OldDeath.ogg create mode 100644 Bloxstrap/Resources/Mods/OldFarCursor.png diff --git a/Bloxstrap/Bloxstrap.csproj b/Bloxstrap/Bloxstrap.csproj index 274e9fa..704b74c 100644 --- a/Bloxstrap/Bloxstrap.csproj +++ b/Bloxstrap/Bloxstrap.csproj @@ -18,6 +18,12 @@ + + + + + + diff --git a/Bloxstrap/Bootstrapper.cs b/Bloxstrap/Bootstrapper.cs index 463dce9..665f2c6 100644 --- a/Bloxstrap/Bootstrapper.cs +++ b/Bloxstrap/Bootstrapper.cs @@ -113,7 +113,7 @@ namespace Bloxstrap if (!Directory.Exists(VersionFolder) && CheckIfRunning(true) || Program.Settings.VersionGuid != VersionGuid && !CheckIfRunning(false)) await InstallLatestVersion(); - ApplyModifications(); + await ApplyModifications(); if (Program.IsFirstRun) Program.SettingsManager.ShouldSave = true; @@ -472,7 +472,7 @@ namespace Bloxstrap Program.Settings.VersionGuid = VersionGuid; } - private void ApplyModifications() + private async Task ApplyModifications() { Dialog.Message = "Applying Roblox modifications..."; @@ -485,13 +485,13 @@ namespace Bloxstrap if (!Directory.Exists(modFolder)) { Directory.CreateDirectory(modFolder); - File.WriteAllText(Path.Combine(modFolder, "README.txt"), ModReadme); + await File.WriteAllTextAsync(Path.Combine(modFolder, "README.txt"), ModReadme); } - CheckModPreset(Program.Settings.UseOldDeathSound, @"content\sounds\ouch.ogg", Program.Base64OldDeathSound); - CheckModPreset(Program.Settings.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowCursor.png", Program.Base64OldArrowCursor); - CheckModPreset(Program.Settings.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowFarCursor.png", Program.Base64OldArrowFarCursor); - CheckModPreset(Program.Settings.UseDisableAppPatch, @"ExtraContent\places\Mobile.rbxl", ""); + await CheckModPreset(Program.Settings.UseOldDeathSound, @"content\sounds\ouch.ogg", "OldDeath.ogg"); + await CheckModPreset(Program.Settings.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowCursor.png", "OldCursor.png"); + await CheckModPreset(Program.Settings.UseOldMouseCursor, @"content\textures\Cursors\KeyboardMouse\ArrowFarCursor.png", "OldFarCursor.png"); + await CheckModPreset(Program.Settings.UseDisableAppPatch, @"ExtraContent\places\Mobile.rbxl", ""); foreach (string file in Directory.GetFiles(modFolder, "*.*", SearchOption.AllDirectories)) { @@ -510,7 +510,7 @@ namespace Bloxstrap // original files from the downloaded packages if (File.Exists(manifestFile)) - manifestFiles = File.ReadAllLines(manifestFile).ToList(); + manifestFiles = (await File.ReadAllLinesAsync(manifestFile)).ToList(); else manifestFiles = modFolderFiles; @@ -564,10 +564,10 @@ namespace Bloxstrap File.WriteAllLines(manifestFile, modFolderFiles); } - private static void CheckModPreset(bool condition, string location, string base64Contents) + private static async Task CheckModPreset(bool condition, string location, string name) { string modFolderLocation = Path.Combine(Directories.Modifications, location); - byte[] binaryData = Convert.FromBase64String(base64Contents); + byte[] binaryData = string.IsNullOrEmpty(name) ? new byte[0] : await ResourceHelper.Get(name); if (condition) { @@ -580,7 +580,7 @@ namespace Bloxstrap Directory.CreateDirectory(directory); - File.WriteAllBytes(modFolderLocation, binaryData); + await File.WriteAllBytesAsync(modFolderLocation, binaryData); } } else if (File.Exists(modFolderLocation) && Utilities.MD5File(modFolderLocation) == Utilities.MD5Data(binaryData)) diff --git a/Bloxstrap/Helpers/ResourceHelper.cs b/Bloxstrap/Helpers/ResourceHelper.cs new file mode 100644 index 0000000..e6a4a36 --- /dev/null +++ b/Bloxstrap/Helpers/ResourceHelper.cs @@ -0,0 +1,23 @@ +using System.IO; +using System.Reflection; + +namespace Bloxstrap.Helpers +{ + internal class ResourceHelper + { + static Assembly assembly = Assembly.GetExecutingAssembly(); + static string[] resourceNames = assembly.GetManifestResourceNames(); + + public static async Task Get(string name) + { + string path = resourceNames.Single(str => str.EndsWith(name)); + + using (Stream stream = assembly.GetManifestResourceStream(path)!) + using (MemoryStream memoryStream = new MemoryStream()) + { + await stream.CopyToAsync(memoryStream); + return memoryStream.ToArray(); + } + } + } +} diff --git a/Bloxstrap/Program.cs b/Bloxstrap/Program.cs index 993569a..3b2a5ca 100644 --- a/Bloxstrap/Program.cs +++ b/Bloxstrap/Program.cs @@ -24,13 +24,6 @@ namespace Bloxstrap public const string ProjectName = "Bloxstrap"; public const string ProjectRepository = "pizzaboxer/bloxstrap"; - #region base64 stuff - // TODO: using IPFS as a reliable method for static asset storage instead of base64? - public const string Base64OldDeathSound = "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EEIIIYSMMeeggxBCCKWUUkopGWPOQQghhBBKKKWEEjrnoIMQQgmllFJKKaV0zjkIIYQQSimllFJK6SCEEEIIpZRSSimllNJBCCGEUEoppZRSSiklhBBCCKWUUkoppZRSSgghhBBKKaWUUkoppZQQQgillFJKKaWUUkopIYQQSimllFJKKaWUUkIIpZRSSimllFJKKaWEEEoppZRSSimllFJKCaGUUkoppZRSSimllBJKKaWUUkoppZRSSikllFJKKaWUUkoppZRSSiillFJKKaWUUkoppZRQSimllFJKKaWUUkopoZRSSimllFJKKaWUUgoAADpwAAAIMKLSQuw048ojcEQhwwRUaMhKACAcAABABDoIIYQQQggRcxBCCCGEEEKImIMQQgghhBBCCCGEEEIIpZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppRQAdZnhABg9YeMMK0lnhaPBhYasBADSAgAAYxhjjCnIpLMWY60NYxBCB52EFGqoJaaGMQghdFBKSi22WHMGoaRSSkktxliDzT2DUEoppaQWY605F+NBSCWl1GKrteccjO4glJJSSjHWmnPuvWjQSUmptVpz7j0HXzwIpaTWWow9Bx+MMKKUlmKssdYcfBFGGFFKSy3GmnvNvRhjhEopxlp7zrnnXIwRPqUWY6659x58LsL44mLMOffigw8+CGGMkDHm2HPwvRdjjA/CyFxzLsIY44swwvggbK25B1+MEUYYY3zvNfigezHCCCOMMcII3XPRRfhijDFGGF+EAQC5EQ4AiAtGElJnGVYaceMJGCKQQkNWAQAxAAAEMcYgpJBSSinFGGOMMcYYY4wxxhhjjDHGnGPOOeecAADABAcAgAAr2JVZWrVR3NRJXvRB4BM6YjMy5FIqZnIi6JEaarES7NAKbvACsNCQlQAAGQAA5KSUlFotGkLKQWk1iMgg5STFJCJjkILSgqeQMYhJyh1jCiEFqXbQMYUUoxpSCplSCmqqOYaOMagxJ+FSCaUGAABAEAAgICQAwABBwQwAMDhAGDkQ6AggcGgDAAxEyExgUAgNDjIB4AEiQioASExQlC50QQgRpIsgiwcu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"; - public const string Base64OldArrowCursor = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfdBwoWHS0d8XaOAAAAeUlEQVRo3u3WyQmAUBAEUUMx/yRdEFH/dhG6EKsieKeZniYzMzMzMzMzs5ctWzBgZgk7ACUcAJBwAjDCBYAIdwBCeAIAQgmIE2pAmNACRAltQJDQA8QIfUCIMAJECGNAgFAforI/nWL4GcHvGB4k8CSDRyk8y83s860lExWMmEMyvAAAAABJRU5ErkJggg=="; - public const string Base64OldArrowFarCursor = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfdBwoWHwRtdYxgAAAAfElEQVRo3u3WwQmAMBQEUetPtXYQERE10VyEHcSZNPBOPztNZmZmZmZmZmYvK7VUGDCzhBWAEjYASNgBGOEAQIQzACFcAQChBcQJPSBMuANECfeAIOEJECM8A0KEESBCGAMChP4Qte9Ppxj+jODvGB4k8CSDRyk8y83s8y1ZdnQ0Empj3AAAAABJRU5ErkJggg=="; - #endregion - public static string BaseDirectory = null!; public static bool IsFirstRun { get; private set; } = false; public static bool IsQuiet { get; private set; } = false; diff --git a/Bloxstrap/Resources/Mods/OldCursor.png b/Bloxstrap/Resources/Mods/OldCursor.png new file mode 100644 index 0000000000000000000000000000000000000000..694c26a56bd23e2bcf5705c2b653b6d6dd9b5bc1 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q z+`=Ht$S`Y;1W=H@#M9T6{VqF~n5?es$Fe@4P^G7fV@Srmx7SW`HUtQ;1Uei3SBVt} z{9h)xOJKE9#qyc+)Qllu^K{*4gM>6rYX(&rh6x2s28UQ1ILaBEDwr6YI6H*19A;c# za^cK%m~esl2uH0$hXIodN3ughfc&CO_H&bdNFIDIA*b>|rP*E6=JeS&pVz7ii}uWL SHrfMp1cRrmpUXO@geCx+Dnq6K literal 0 HcmV?d00001 diff --git a/Bloxstrap/Resources/Mods/OldDeath.ogg b/Bloxstrap/Resources/Mods/OldDeath.ogg new file mode 100644 index 0000000000000000000000000000000000000000..193677b66d3c68ef1cb2949b3290f31bb66cd716 GIT binary patch literal 6271 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 literal 0 HcmV?d00001 diff --git a/Bloxstrap/Resources/Mods/OldFarCursor.png b/Bloxstrap/Resources/Mods/OldFarCursor.png new file mode 100644 index 0000000000000000000000000000000000000000..daf54711f1180df919a6487906d12cd5b49db939 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q z+`=Ht$S`Y;1W=H@#M9T6{VqF~m^@2vX-@)BsK(R9F(l*O+iM3o8w^BP0$=-YEfWwF zG`$$pB70<}$p=4sYu_{|(AVA?B4Mz(MYKW4jKSjuqr^i7hZbW7#TZ70g{((7Z54cW zFuQPmZ%}y1DWGh_?9?Kt;3UD!)bdYY>wEv@690N0yqAzu`JmG5u4!}n?3>TJk!2+& ULRraofbL-MboFyt=akR{0Jca)!vFvP literal 0 HcmV?d00001 From baaaf4091fe69c89e80b91959068eb0720c266dd Mon Sep 17 00:00:00 2001 From: pizzaboxer <41478239+pizzaboxer@users.noreply.github.com> Date: Sun, 8 Jan 2023 14:59:52 +0000 Subject: [PATCH 2/2] Add slight simplifications --- Bloxstrap/Bootstrapper.cs | 2 +- Bloxstrap/Helpers/ResourceHelper.cs | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Bloxstrap/Bootstrapper.cs b/Bloxstrap/Bootstrapper.cs index 665f2c6..f59f4f5 100644 --- a/Bloxstrap/Bootstrapper.cs +++ b/Bloxstrap/Bootstrapper.cs @@ -567,7 +567,7 @@ namespace Bloxstrap private static async Task CheckModPreset(bool condition, string location, string name) { string modFolderLocation = Path.Combine(Directories.Modifications, location); - byte[] binaryData = string.IsNullOrEmpty(name) ? new byte[0] : await ResourceHelper.Get(name); + byte[] binaryData = string.IsNullOrEmpty(name) ? Array.Empty() : await ResourceHelper.Get(name); if (condition) { diff --git a/Bloxstrap/Helpers/ResourceHelper.cs b/Bloxstrap/Helpers/ResourceHelper.cs index e6a4a36..f61776a 100644 --- a/Bloxstrap/Helpers/ResourceHelper.cs +++ b/Bloxstrap/Helpers/ResourceHelper.cs @@ -5,18 +5,20 @@ namespace Bloxstrap.Helpers { internal class ResourceHelper { - static Assembly assembly = Assembly.GetExecutingAssembly(); - static string[] resourceNames = assembly.GetManifestResourceNames(); + static readonly Assembly assembly = Assembly.GetExecutingAssembly(); + static readonly string[] resourceNames = assembly.GetManifestResourceNames(); public static async Task Get(string name) { string path = resourceNames.Single(str => str.EndsWith(name)); using (Stream stream = assembly.GetManifestResourceStream(path)!) - using (MemoryStream memoryStream = new MemoryStream()) { - await stream.CopyToAsync(memoryStream); - return memoryStream.ToArray(); + using (MemoryStream memoryStream = new()) + { + await stream.CopyToAsync(memoryStream); + return memoryStream.ToArray(); + } } } }