From 87a6262a3c5904262d71e20ecbd39b52839f8ed5 Mon Sep 17 00:00:00 2001 From: Bitl Date: Sat, 19 Oct 2019 12:43:58 -0700 Subject: [PATCH] novetuscmd enhancements --- NovetusLauncher/.vs/NovetusLauncher/v14/.suo | Bin 147456 -> 151552 bytes .../NovetusCMD/CommandLineArguments.cs | 114 ++++++++++++++++++ NovetusLauncher/NovetusCMD/NovetusCMD.csproj | 1 + NovetusLauncher/NovetusCMD/Program.cs | 100 ++++++++++----- ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../bin/Release/Novetus.vshost.exe.manifest | 11 -- ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 11 files changed, 187 insertions(+), 39 deletions(-) create mode 100644 NovetusLauncher/NovetusCMD/CommandLineArguments.cs delete mode 100644 NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs delete mode 100644 NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs delete mode 100644 NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs delete mode 100644 NovetusLauncher/NovetusLauncher/bin/Release/Novetus.vshost.exe.manifest delete mode 100644 NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs delete mode 100644 NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs delete mode 100644 NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs diff --git a/NovetusLauncher/.vs/NovetusLauncher/v14/.suo b/NovetusLauncher/.vs/NovetusLauncher/v14/.suo index 86a049bdbeba265d48b8d0dd7140b943014e1d3f..fb41a01612ab9e9a23489666aff6fe4e59250dbc 100644 GIT binary patch delta 6446 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 delta 4907 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 MHL81?)77s30i&GGdjJ3c diff --git a/NovetusLauncher/NovetusCMD/CommandLineArguments.cs b/NovetusLauncher/NovetusCMD/CommandLineArguments.cs new file mode 100644 index 0000000..56e155b --- /dev/null +++ b/NovetusLauncher/NovetusCMD/CommandLineArguments.cs @@ -0,0 +1,114 @@ +using System.Collections.Specialized; +using System.Text.RegularExpressions; + +namespace NovetusCMD +{ + public class CommandLineArguments + { + //credit to GriffonRL on codeproject + /// + /// Arguments class + /// + public class Arguments + { + // Variables + private StringDictionary Parameters; + + // Constructor + public Arguments(string[] Args) + { + Parameters = new StringDictionary(); + Regex Spliter = new Regex(@"^-{1,2}|^/|=|:", + RegexOptions.IgnoreCase | RegexOptions.Compiled); + + Regex Remover = new Regex(@"^['""]?(.*?)['""]?$", + RegexOptions.IgnoreCase | RegexOptions.Compiled); + + string Parameter = null; + string[] Parts; + + // Valid parameters forms: + // {-,/,--}param{ ,=,:}((",')value(",')) + // Examples: + // -param1 value1 --param2 /param3:"Test-:-work" + // /param4=happy -param5 '--=nice=--' + foreach (string Txt in Args) + { + // Look for new parameters (-,/ or --) and a + // possible enclosed value (=,:) + Parts = Spliter.Split(Txt, 3); + + switch (Parts.Length) + { + // Found a value (for the last parameter + // found (space separator)) + case 1: + if (Parameter != null) + { + if (!Parameters.ContainsKey(Parameter)) + { + Parts[0] = + Remover.Replace(Parts[0], "$1"); + + Parameters.Add(Parameter, Parts[0]); + } + Parameter = null; + } + // else Error: no parameter waiting for a value (skipped) + break; + + // Found just a parameter + case 2: + // The last parameter is still waiting. + // With no value, set it to true. + if (Parameter != null) + { + if (!Parameters.ContainsKey(Parameter)) + Parameters.Add(Parameter, "true"); + } + Parameter = Parts[1]; + break; + + // Parameter with enclosed value + case 3: + // The last parameter is still waiting. + // With no value, set it to true. + if (Parameter != null) + { + if (!Parameters.ContainsKey(Parameter)) + Parameters.Add(Parameter, "true"); + } + + Parameter = Parts[1]; + + // Remove possible enclosing characters (",') + if (!Parameters.ContainsKey(Parameter)) + { + Parts[2] = Remover.Replace(Parts[2], "$1"); + Parameters.Add(Parameter, Parts[2]); + } + + Parameter = null; + break; + } + } + // In case a parameter is still waiting + if (Parameter != null) + { + if (!Parameters.ContainsKey(Parameter)) + Parameters.Add(Parameter, "true"); + } + } + + // Retrieve a parameter value if it exists + // (overriding C# indexer property) + public string this[string Param] + { + get + { + return (Parameters[Param]); + } + } + } + } +} diff --git a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj index f02a261..ec5beeb 100644 --- a/NovetusLauncher/NovetusCMD/NovetusCMD.csproj +++ b/NovetusLauncher/NovetusCMD/NovetusCMD.csproj @@ -75,6 +75,7 @@ + diff --git a/NovetusLauncher/NovetusCMD/Program.cs b/NovetusLauncher/NovetusCMD/Program.cs index d3dcdf6..5727d64 100644 --- a/NovetusLauncher/NovetusCMD/Program.cs +++ b/NovetusLauncher/NovetusCMD/Program.cs @@ -8,10 +8,9 @@ */ using System; using Mono.Nat; - using System.Diagnostics; using System.IO; - +using static NovetusCMD.CommandLineArguments; namespace NovetusCMD { @@ -196,43 +195,88 @@ namespace NovetusCMD public static void Main(string[] args) { bool StartInNo3D = false; - - if (args.Length == 0) + bool OverrideINI = false; + + if (args.Length == 0) { - ConsolePrint("WARNING 1 - NovetusCMD will launch the server in 3D mode. To launch the server in No3D mode, add -no3d as a command line argument.", 5); - } + ConsolePrint("Help: Command Line Arguments", 3); + ConsolePrint("---------", 1); + ConsolePrint("-no3d | Launches server in NoGraphics mode", 3); + ConsolePrint("-overrideconfig | Override the launcher settings.", 3); + ConsolePrint("-overrideconfig must be added in order for the below commands to function.", 5); + ConsolePrint("-upnp | Turns on UPnP.", 4); + ConsolePrint("-map | Sets the map.", 4); + ConsolePrint("-client | Sets the client.", 4); + ConsolePrint("-port | Sets the server port.", 4); + ConsolePrint("-maxplayers | Sets the number of players.", 4); + ConsolePrint("---------", 1); + } else { - foreach (string s in args) - { - GlobalVars.SharedArgs = ProcessInput(s); - } - - if (GlobalVars.SharedArgs.Equals("-no3d")) + Arguments CommandLine = new Arguments(args); + + if (CommandLine["no3d"] != null) { StartInNo3D = true; - } - } + ConsolePrint("NovetusCMD will now launch the server in No3D mode.\n", 4); + } + + if (CommandLine["overrideconfig"] != null) + { + OverrideINI = true; + ConsolePrint("NovetusCMD will no longer grab values from the INI file.\n", 4); + + if (CommandLine["upnp"] != null) + { + GlobalVars.UPnP = true; + ConsolePrint("NovetusCMD will now use UPnP for port forwarding.\n", 4); + } + + if (CommandLine["map"] != null) + { + GlobalVars.Map = CommandLine["map"]; + } + + if (CommandLine["client"] != null) + { + GlobalVars.SelectedClient = CommandLine["client"]; + } + + if (CommandLine["port"] != null) + { + GlobalVars.RobloxPort = Convert.ToInt32(CommandLine["port"]); + } + + if (CommandLine["maxplayers"] != null) + { + GlobalVars.PlayerLimit = Convert.ToInt32(CommandLine["maxplayers"]); + } + } + } - ConsolePrint("NOTE: NovetusCMD will use values defined from the launcher. If you want to define values for NovetusCMD, change the settings in the launcher through the 'Host' tab.", 5); string[] lines = File.ReadAllLines(GlobalVars.ConfigDir + "\\info.txt"); //File is in System.IO string version = lines[0]; GlobalVars.DefaultClient = lines[1]; GlobalVars.DefaultMap = lines[2]; GlobalVars.SelectedClient = GlobalVars.DefaultClient; GlobalVars.Map = GlobalVars.DefaultMap; - Console.Title = "Novetus " + version; - ConsolePrint("Novetus version " + version + " loaded. Initializing config.", 4); - - if (!File.Exists(GlobalVars.ConfigDir + "\\config.ini")) - { - ConsolePrint("WARNING 2 - config.ini not found. Creating one with default values.", 5); - WriteConfigValues(); - } - + Console.Title = "Novetus " + version + " CMD"; GlobalVars.Version = version; - - ReadConfigValues(); + + if (!OverrideINI) + { + ConsolePrint("NovetusCMD is now loading all server configurations from the INI file.", 5); + ConsolePrint("NovetusCMD version " + version + " loaded. Initializing config.", 4); + + if (!File.Exists(GlobalVars.ConfigDir + "\\config.ini")) + { + ConsolePrint("WARNING 2 - config.ini not found. Creating one with default values.", 5); + WriteConfigValues(); + } + + ReadConfigValues(); + } + InitUPnP(); StartWebServer(); @@ -306,8 +350,8 @@ namespace NovetusCMD ConsolePrint("ERROR 2 - Failed to launch Novetus. (" + ex.Message + ")", 2); } } - - static void ServerExited(object sender, EventArgs e) + + static void ServerExited(object sender, EventArgs e) { Environment.Exit(0); } diff --git a/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100644 index e69de29..0000000 diff --git a/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100644 index e69de29..0000000 diff --git a/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NovetusLauncher/NovetusCMD/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100644 index e69de29..0000000 diff --git a/NovetusLauncher/NovetusLauncher/bin/Release/Novetus.vshost.exe.manifest b/NovetusLauncher/NovetusLauncher/bin/Release/Novetus.vshost.exe.manifest deleted file mode 100644 index 061c9ca..0000000 --- a/NovetusLauncher/NovetusLauncher/bin/Release/Novetus.vshost.exe.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs deleted file mode 100644 index e69de29..0000000 diff --git a/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs deleted file mode 100644 index e69de29..0000000 diff --git a/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/NovetusLauncher/NovetusLauncher/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs deleted file mode 100644 index e69de29..0000000