From d37c43d8b0f4c7297e1a5b8e61bcdc43a6749886 Mon Sep 17 00:00:00 2001 From: Bitl Date: Fri, 6 Jan 2023 12:17:40 -0700 Subject: [PATCH] add addons --- Asset.cs | 55 +++++++++++++++++++++++++++++++++++ StudioLaunchPage.cs | 28 ++++++++++++++++++ UploadWarnings.cs | 39 +++++++++++++++++++++++++ scripts/batch/github_sync.bat | 5 ++++ scripts/launcher/info.ini | 2 +- 5 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 Asset.cs create mode 100644 StudioLaunchPage.cs create mode 100644 UploadWarnings.cs diff --git a/Asset.cs b/Asset.cs new file mode 100644 index 0000000..ee8e3a8 --- /dev/null +++ b/Asset.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using System.Web; +using System.Collections.Generic; +using Titanium.Web.Proxy; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Http; +using Titanium.Web.Proxy.Models; +using Novetus.Core; + +public class Asset : IWebProxyExtension +{ + public override string Name() + { + return "Asset Redirection Extension"; + } + + public override bool IsValidURL(string absolutePath, string host) + { + return (absolutePath.EndsWith("/asset") || absolutePath.EndsWith("/asset/")); + } + + public override async Task OnRequest(object sender, SessionEventArgs e) + { + string query = e.HttpClient.Request.RequestUri.Query; + long id; + if (!long.TryParse(NetFuncs.FindQueryString(query, "id"), out id)) + { + Util.ConsolePrint(Name() + ": Redirecting " + query, 3); + e.Redirect("https://assetdelivery.roblox.com/v1/asset/" + query); + } + else + { + List PathList = new List((IEnumerable)Directory.GetFiles(GlobalPaths.DataPath, id.ToString(), SearchOption.AllDirectories)); + + if (PathList.Count > 0) + { + Util.ConsolePrint(Name() + ": Local assets for " + id.ToString() + " found. Redirecting " + query, 3); + string First = PathList[0]; + byte[] numArray = await Task.Run(() => File.ReadAllBytes(First)); + e.Ok(numArray, (IEnumerable) new List() + { + new HttpHeader("Content-Length", ((long) numArray.Length).ToString()), + new HttpHeader("Cache-Control", "no-cache") + }); + } + else + { + Util.ConsolePrint(Name() + ": No local assets for " + id.ToString() + ". Redirecting " + query, 5); + e.Redirect("https://assetdelivery.roblox.com/v1/asset/" + query); + } + } + } +} \ No newline at end of file diff --git a/StudioLaunchPage.cs b/StudioLaunchPage.cs new file mode 100644 index 0000000..dcb744c --- /dev/null +++ b/StudioLaunchPage.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using System.Web; +using System.Collections.Generic; +using Titanium.Web.Proxy; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Http; +using Titanium.Web.Proxy.Models; +using Novetus.Core; + +public class StudioLaunchPage : IWebProxyExtension +{ + public override string Name() + { + return "Studio Launch Page Extension"; + } + + public override bool IsValidURL(string absolutePath, string host) + { + return absolutePath.EndsWith("/ide/landing.aspx") || absolutePath.EndsWith("/my/places.aspx"); + } + + public override async Task OnRequest(object sender, SessionEventArgs e) + { + e.Ok("Welcome to Novetus Studio version " + GlobalVars.ProgramInformation.Version); + } +} \ No newline at end of file diff --git a/UploadWarnings.cs b/UploadWarnings.cs new file mode 100644 index 0000000..cac5430 --- /dev/null +++ b/UploadWarnings.cs @@ -0,0 +1,39 @@ +using System; +using System.IO; +using System.Threading.Tasks; +using System.Web; +using System.Collections.Generic; +using Titanium.Web.Proxy; +using Titanium.Web.Proxy.EventArguments; +using Titanium.Web.Proxy.Http; +using Titanium.Web.Proxy.Models; +using Novetus.Core; + +public class UploadWarnings : IWebProxyExtension +{ + public override string Name() + { + return "Upload Dialog Warnings Extension"; + } + + public override bool IsValidURL(string absolutePath, string host) + { + return absolutePath.EndsWith("/uploadmedia/postimage.aspx") || absolutePath.EndsWith("/uploadmedia/uploadvideo.aspx"); + } + + public override async Task OnRequest(object sender, SessionEventArgs e) + { + string absPath = e.HttpClient.Request.RequestUri.AbsolutePath.ToLowerInvariant(); + + string type = "video"; + string folder = "Videos"; + + if (absPath.EndsWith("/uploadmedia/postimage.aspx")) + { + type = "screenshot"; + folder = "Pictures"; + } + + e.Ok("Your " + type + " was saved! Look in the Roblox folder in your " + folder + " folder!"); + } +} \ No newline at end of file diff --git a/scripts/batch/github_sync.bat b/scripts/batch/github_sync.bat index 159af7c..517bd9d 100644 --- a/scripts/batch/github_sync.bat +++ b/scripts/batch/github_sync.bat @@ -160,5 +160,10 @@ XCOPY "%cd%\Novetus\addons\Addon_Template.lua" "%dest%" /y XCOPY "%cd%\Novetus\addons\Utils.lua" "%dest%" /y XCOPY "%cd%\Novetus\addons\ShadersCompatibility.lua" "%dest%" /y XCOPY "%cd%\Novetus\addons\ServerWhitelist.lua" "%dest%" /y + XCOPY "%cd%\Novetus\addons\core\AddonLoader.lua" "%dest%" /y + +XCOPY "%cd%\Novetus\addons\novetusexts\webproxy\Asset.cs" "%dest%" /y +XCOPY "%cd%\Novetus\addons\novetusexts\webproxy\StudioLaunchPage.cs" "%dest%" /y +XCOPY "%cd%\Novetus\addons\novetusexts\webproxy\UploadWarnings.cs" "%dest%" /y if %debug%==1 pause \ No newline at end of file diff --git a/scripts/launcher/info.ini b/scripts/launcher/info.ini index ff02e34..e90a3fa 100644 --- a/scripts/launcher/info.ini +++ b/scripts/launcher/info.ini @@ -9,5 +9,5 @@ ExtendedVersionEditChangelog=True //ExtendedVersionTemplate=%version% v11.2022.%extended-revision%%lite% ExtendedVersionTemplate=%version% Snapshot v22.%build%.%revision%.%extended-revision% ExtendedVersionRevision=1 -InitialBootup=False +InitialBootup=True IsLite=False