diff --git a/Novetus/NovetusCore/StorageAndFunctions/ClientManagement.cs b/Novetus/NovetusCore/StorageAndFunctions/ClientManagement.cs index 829f9c9..f498930 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/ClientManagement.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/ClientManagement.cs @@ -1135,29 +1135,12 @@ namespace Novetus.Core case ScriptType.Client: case ScriptType.EasterEgg: FileManagement.ReloadLoadoutValue(true); - if (!GlobalVars.LocalPlayMode && GlobalVars.GameOpened != ScriptType.Server && GlobalVars.GameOpened != ScriptType.EasterEggServer) - { - goto default; - } break; case ScriptType.Server: - case ScriptType.EasterEggServer: - if (GlobalVars.GameOpened == ScriptType.Server || GlobalVars.GameOpened == ScriptType.EasterEggServer) - { - Util.ConsolePrint("ERROR - Failed to launch Novetus. (A server is already running.)", 2); - -#if LAUNCHER - if (!GlobalVars.isConsoleOnly) - { - MessageBox.Show("Failed to launch Novetus. (Error: A server is already running.)", "Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } -#endif - return; - } - else if (GlobalVars.UserConfiguration.FirstServerLaunch && GlobalVars.GameOpened == ScriptType.Server) + if (GlobalVars.UserConfiguration.FirstServerLaunch) { #if LAUNCHER - string hostingTips = "For your first time hosting a server, make sure your server's port forwarded (set up in your router), going through a tunnel server, or running from UPnP.\n" + + string hostingTips = "Tips for your first time:\n\nMake sure your server's port forwarded (set up in your router), going through a tunnel server, or running from UPnP.\n" + "If your port is forwarded or you are going through a tunnel server, make sure your port is set up as UDP, not TCP.\n" + "Roblox does NOT use TCP, only UDP. However, if your server doesn't work with just UDP, feel free to set up TCP too as that might help the issue in some cases."; @@ -1172,27 +1155,11 @@ namespace Novetus.Core #endif GlobalVars.UserConfiguration.FirstServerLaunch = false; } - else - { - goto default; - } break; case ScriptType.Solo: FileManagement.ReloadLoadoutValue(true); goto default; default: - if (GlobalVars.GameOpened != ScriptType.None) - { - Util.ConsolePrint("ERROR - Failed to launch Novetus. (A game is already running.)", 2); - -#if LAUNCHER - if (!GlobalVars.isConsoleOnly) - { - MessageBox.Show("Failed to launch Novetus. (Error: A game is already running.)", "Novetus - Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - } -#endif - return; - } break; } @@ -1350,12 +1317,6 @@ namespace Novetus.Core switch (type) { - case ScriptType.Client: - if (!GlobalVars.LocalPlayMode && GlobalVars.GameOpened != ScriptType.Server) - { - goto default; - } - break; case ScriptType.Studio: break; case ScriptType.Server: diff --git a/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs b/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs index 234bec6..ed1f6ba 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/FileManagement.cs @@ -86,7 +86,7 @@ namespace Novetus.Core DisableReshadeDelete = false; ShowServerNotifications = false; ServerBrowserServerName = "Novetus"; - ServerBrowserServerAddress = "localhost"; + ServerBrowserServerAddress = ""; Priority = ProcessPriorityClass.RealTime; FirstServerLaunch = true; NewGUI = false; diff --git a/Novetus/NovetusCore/StorageAndFunctions/NovetusFuncs.cs b/Novetus/NovetusCore/StorageAndFunctions/NovetusFuncs.cs index 21f8e71..169d4c5 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/NovetusFuncs.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/NovetusFuncs.cs @@ -72,6 +72,18 @@ namespace Novetus.Core public static void PingMasterServer(bool online, string reason) { + if (GlobalVars.GameOpened == ScriptType.Server || GlobalVars.GameOpened == ScriptType.EasterEggServer) + return; + + if (string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.ServerBrowserServerAddress)) + return; + + if (string.IsNullOrWhiteSpace(GlobalVars.UserConfiguration.ServerBrowserServerName)) + { + Util.ConsolePrint("Your server doesn't have a name. Please specify one for it to show on the master server list after server restart.", 2); + return; + } + if (online) { GlobalVars.ServerID = RandomString(30) + GenerateRandomNumber(); diff --git a/Novetus/NovetusCore/StorageAndFunctions/Util.cs b/Novetus/NovetusCore/StorageAndFunctions/Util.cs index 4556020..ea83b99 100644 --- a/Novetus/NovetusCore/StorageAndFunctions/Util.cs +++ b/Novetus/NovetusCore/StorageAndFunctions/Util.cs @@ -633,9 +633,6 @@ namespace Novetus.Core } catch (Exception ex) { -#if URI || LAUNCHER || BASICLAUNCHER - LogExceptions(ex); -#endif exceptionMessage = ex.Message; continue; } diff --git a/Novetus/NovetusLauncher/Forms/LauncherForm/LauncherFormShared.cs b/Novetus/NovetusLauncher/Forms/LauncherForm/LauncherFormShared.cs index 987e9fc..ef8eddb 100644 --- a/Novetus/NovetusLauncher/Forms/LauncherForm/LauncherFormShared.cs +++ b/Novetus/NovetusLauncher/Forms/LauncherForm/LauncherFormShared.cs @@ -143,40 +143,28 @@ namespace NovetusLauncher { case ScriptType.Server: case ScriptType.EasterEggServer: - ShowCloseError("A server is open.", "Server", e); + NovetusFuncs.PingMasterServer(false, "Removing server from Master Server list. Reason: Novetus is shutting down."); break; default: - ShowCloseError("A game is open.", "Game", e); break; } } - else + + if (GlobalVars.AdminMode && Parent.GetType() != typeof(NovetusConsole)) { - if (GlobalVars.AdminMode) + DialogResult closeNovetus = MessageBox.Show("You are in Admin Mode.\nAre you sure you want to quit Novetus?", "Novetus - Admin Mode Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (closeNovetus == DialogResult.No) { - DialogResult closeNovetus = MessageBox.Show("You are in Admin Mode.\nAre you sure you want to quit Novetus?", "Novetus - Admin Mode Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (closeNovetus == DialogResult.No) - { - e.Cancel = true; - } - else - { - CloseEventInternal(); - } + e.Cancel = true; } else { CloseEventInternal(); } } - } - - public void ShowCloseError(string text, string title, CancelEventArgs e) - { - DialogResult closeNovetus = MessageBox.Show(text + "\nYou must close the game before closing Novetus.", "Novetus - " + title + " is Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - if (closeNovetus == DialogResult.OK) + else { - e.Cancel = true; + CloseEventInternal(); } } @@ -424,6 +412,23 @@ namespace NovetusLauncher ClientExitedBase(sender, e); } + //TODO: experimental + void SoloExperimentalExited(object sender, EventArgs e) + { + if (GlobalVars.GameOpened != ScriptType.Studio) + { + GlobalVars.GameOpened = ScriptType.None; + } + + var processes = Process.GetProcessesByName("RobloxApp_server"); + foreach (var process in processes) + { + process.Kill(); + } + + ClientExitedBase(sender, e); + } + void ServerExited(object sender, EventArgs e) { GlobalVars.GameOpened = ScriptType.None; @@ -433,19 +438,13 @@ namespace NovetusLauncher void EasterEggExited(object sender, EventArgs e) { - GlobalVars.GameOpened = ScriptType.None; SplashLabel.Text = LocalVars.prevsplash; if (GlobalVars.AdminMode) { LocalVars.Clicks = 0; } - var processes = Process.GetProcessesByName("RobloxApp_server"); - foreach (var process in processes) - { - process.Kill(); - } - ClientExitedBase(sender, e); + SoloExperimentalExited(sender, e); } void ClientExitedBase(object sender, EventArgs e) @@ -534,7 +533,7 @@ namespace NovetusLauncher if (LocalVars.launcherInitState) return; - if (GlobalVars.AdminMode) + if (GlobalVars.AdminMode && Parent.GetType() != typeof(NovetusConsole)) { DialogResult closeNovetus = MessageBox.Show("You are in Admin Mode.\nAre you sure you want to switch styles?", "Novetus - Admin Mode Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (closeNovetus == DialogResult.No) @@ -543,12 +542,6 @@ namespace NovetusLauncher } } - if (GlobalVars.GameOpened != ScriptType.None) - { - MessageBox.Show("You must close the currently open client before changing styles.", "Novetus - Client is Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - switch (StyleSelectorBox.SelectedIndex) { case 0: @@ -735,7 +728,7 @@ namespace NovetusLauncher } else { - ClientWarningLabel.Text = ""; + ClientWarningLabel.Text = "No warnings provided."; } ClientDescriptionBox.Text = GlobalVars.SelectedClientInfo.Description; @@ -835,7 +828,7 @@ namespace NovetusLauncher public void RestartLauncherAfterSetting(bool check, string title, string subText) { - if (GlobalVars.AdminMode) + if (GlobalVars.AdminMode && Parent.GetType() != typeof(NovetusConsole)) { DialogResult closeNovetus = MessageBox.Show("You are in Admin Mode.\nAre you sure you want to apply this setting?", "Novetus - Admin Mode Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (closeNovetus == DialogResult.No) @@ -844,12 +837,6 @@ namespace NovetusLauncher } } - if (GlobalVars.GameOpened != ScriptType.None) - { - MessageBox.Show("You must close the currently open client before this setting can be applied.", "Novetus - Client is Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - switch (check) { case false: @@ -1007,12 +994,6 @@ namespace NovetusLauncher string ourselectedclient = GlobalVars.UserConfiguration.SelectedClient; - if (GlobalVars.GameOpened != ScriptType.None && !ourselectedclient.Equals(ClientBox.SelectedItem.ToString())) - { - MessageBox.Show("You must close the currently open client before changing clients.", "Novetus - Client is Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - GlobalVars.UserConfiguration.SelectedClient = ClientBox.SelectedItem.ToString(); if (!string.IsNullOrWhiteSpace(ourselectedclient)) @@ -1113,7 +1094,7 @@ namespace NovetusLauncher break; case DialogResult.No: default: - ServerBrowserAddressBox.Text = "localhost"; + ServerBrowserAddressBox.Text = ""; break; } diff --git a/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylish.cs b/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylish.cs index e3bb689..bd55d07 100644 --- a/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylish.cs +++ b/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylish.cs @@ -196,7 +196,7 @@ namespace NovetusLauncher } else { - launcherFormStylishInterface1.clientWarningBox.Text = ""; + launcherFormStylishInterface1.clientWarningBox.Text = "No warnings provided."; } launcherFormStylishInterface1.clientDescBox.Text = GlobalVars.UserConfiguration.SelectedClient + ": " + GlobalVars.SelectedClientInfo.Description; diff --git a/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylishInterface.xaml.cs b/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylishInterface.xaml.cs index ea892f6..12e7e60 100644 --- a/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylishInterface.xaml.cs +++ b/Novetus/NovetusLauncher/Forms/LauncherForm/Stylish/LauncherFormStylishInterface.xaml.cs @@ -169,12 +169,6 @@ namespace NovetusLauncher string ourselectedclient = GlobalVars.UserConfiguration.SelectedClient; ClientListItem cli = (ClientListItem)clientListBox.SelectedItem ?? null; - if (GlobalVars.GameOpened != ScriptType.None && !ourselectedclient.Equals(cli.ToString())) - { - System.Windows.Forms.MessageBox.Show("You must close the currently open client before changing clients.", "Novetus - Client is Open Error", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - GlobalVars.UserConfiguration.SelectedClient = (cli != null) ? cli.ToString() : ""; if (!string.IsNullOrWhiteSpace(ourselectedclient)) @@ -533,7 +527,7 @@ namespace NovetusLauncher break; case DialogResult.No: default: - browserAddressBox.Text = "localhost"; + browserAddressBox.Text = ""; break; } diff --git a/changelog.txt b/changelog.txt index 53a20c1..a8364ae 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,7 +1,9 @@ -1.3 Snapshot v23.8415.37168.1 +Snapshot v23.8428.35205.1 Notes: - Updated the year number from 22 to 23 in the version number. - - Changed the release version numbering from v1.3 11.2022 to v1.3 v11.22 + - Changed the release version numbering from v1.3 11.2022 to v11.22 + - Changed the snapshot version numbering from 1.3 Snapshot v23.8415.37168.1 to Snapshot v23.8415.37168.1 + - Novetus is still on branch v1.3. Enhancements: - Added the following Place Contest (Holiday 2022) entries: @@ -17,10 +19,15 @@ Enhancements: - Fixed the Mod Package Creator not being resizable. - The Initial File List will now only be created in Novetus upon inital bootup. - Added better Web Proxy extension management. +- Enabled Large Address Aware on all clients. +- Added Web Proxy support for online clothing. +- Clients can now be opened up multiple times, much like in older Novetus versions. + - Open servers will have their listings removed from the Master Server list Fixes: - Fixed a crash that happens in 2010L/2011E Play Solo upon calling AwardBadge. - Fixed launcher DPI scaling. +- Fixed a potential security vulnerability with empty master server entries. ---------------------------------------------------------------------------- 1.3 Snapshot v22.8412.32591.1 Enhancements: diff --git a/defaultaddons/novetusexts/webproxy/Asset.cs b/defaultaddons/novetusexts/webproxy/Asset.cs index 7c21e82..936136f 100644 --- a/defaultaddons/novetusexts/webproxy/Asset.cs +++ b/defaultaddons/novetusexts/webproxy/Asset.cs @@ -26,6 +26,40 @@ public class Asset : IWebProxyExtension return (absolutePath.EndsWith("/asset") || absolutePath.EndsWith("/asset/")); } + async void RedirectLocalAsset(List pathList, string id, SessionEventArgs e) + { + if (pathList.Count <= 0) + return; + + if (string.IsNullOrWhiteSpace(id)) + return; + + Util.ConsolePrint(Name() + ": Local asset for " + id + " found. Using local asset.", 3); + string First = pathList[0]; + byte[] numArray = await Task.Run(() => File.ReadAllBytes(First)); + e.Ok(numArray, NetFuncs.GenerateHeaders(((long) numArray.Length).ToString())); + } + + bool CanRedirectLocalAsset(string path, long id, SessionEventArgs e) + { + if (string.IsNullOrWhiteSpace(path)) + return false; + + if (id == null) + return false; + + string idString = id.ToString(); + List PathList = new List((IEnumerable)Directory.GetFiles(path, idString, SearchOption.AllDirectories)); + + if (PathList.Count > 0) + { + RedirectLocalAsset(PathList, idString, e); + return true; + } + + return false; + } + public override async Task OnRequest(object sender, SessionEventArgs e) { string query = e.HttpClient.Request.RequestUri.Query; @@ -36,18 +70,14 @@ public class Asset : IWebProxyExtension } else { - List PathList = new List((IEnumerable)Directory.GetFiles(GlobalPaths.DataPath, id.ToString(), SearchOption.AllDirectories)); - - if (PathList.Count > 0) + if (!CanRedirectLocalAsset(GlobalPaths.DataPath, id, e)) { - Util.ConsolePrint(Name() + ": Local asset for " + id.ToString() + " found. Using local asset.", 3); - string First = PathList[0]; - byte[] numArray = await Task.Run(() => File.ReadAllBytes(First)); - e.Ok(numArray, NetFuncs.GenerateHeaders(((long) numArray.Length).ToString())); - } - else - { - e.Redirect("https://assetdelivery.roblox.com/v1/asset/" + query); + //Util.ConsolePrint(Name() + ": Cannot find " + id.ToString() + " in " + GlobalPaths.DataPath + ". Checking client assets.", 5); + if (!CanRedirectLocalAsset(GlobalPaths.AssetsPath, id, e)) + { + //Util.ConsolePrint(Name() + ": Cannot find " + id.ToString() + " in " + GlobalPaths.AssetsPath + ". Redirecting.", 2); + e.Redirect("https://assetdelivery.roblox.com/v1/asset/" + query); + } } } } diff --git a/scripts/launcher/ContentProviders.xml b/scripts/launcher/ContentProviders.xml index 3f10739..bb3fd39 100644 --- a/scripts/launcher/ContentProviders.xml +++ b/scripts/launcher/ContentProviders.xml @@ -7,6 +7,11 @@ https://assetdelivery.roblox.com/v1/asset/?id= roblox.png + + Roblox (Web Proxy Required) + http://www.roblox.com/asset?id= + roblox.png + Imgur (HTTP) http://i.imgur.com/ diff --git a/scripts/launcher/info.ini b/scripts/launcher/info.ini index ce6b88e..af946af 100644 --- a/scripts/launcher/info.ini +++ b/scripts/launcher/info.ini @@ -6,8 +6,8 @@ UserAgentRegisterClient1=2007M UserAgentRegisterClient2=2010L ExtendedVersionNumber=True ExtendedVersionEditChangelog=True -//ExtendedVersionTemplate=%version% vX.23.%extended-revision% -ExtendedVersionTemplate=%version% Snapshot v23.%build%.%revision%.%extended-revision% +//ExtendedVersionTemplate=vX.23.%extended-revision% +ExtendedVersionTemplate=Snapshot v23.%build%.%revision%.%extended-revision% ExtendedVersionRevision=1 InitialBootup=False IsLite=False diff --git a/scripts/launcher/splashes.txt b/scripts/launcher/splashes.txt index 9c7a9f6..26832e2 100644 --- a/scripts/launcher/splashes.txt +++ b/scripts/launcher/splashes.txt @@ -257,3 +257,6 @@ Choose the pill! Absolute dark power!|Serious gaming! HELL IS FULL. We're not candy!|This is serious! +ppShader +You're already dead.|NANI? +Gravitational Pull of Pepsi