diff --git a/FFXIVClassic Lobby Server/ConfigConstants.cs b/FFXIVClassic Lobby Server/ConfigConstants.cs index 358ceb96..501570e1 100644 --- a/FFXIVClassic Lobby Server/ConfigConstants.cs +++ b/FFXIVClassic Lobby Server/ConfigConstants.cs @@ -1,6 +1,8 @@ using FFXIVClassic.Common; using System; using System.IO; +using System.Linq; +using System.Net; namespace FFXIVClassic_Lobby_Server { @@ -23,7 +25,7 @@ namespace FFXIVClassic_Lobby_Server if (!File.Exists("./lobby_config.ini")) { Program.Log.Error("FILE NOT FOUND!"); - return false; + Program.Log.Error("Loading defaults..."); } INIFile configIni = new INIFile("./lobby_config.ini"); @@ -40,5 +42,34 @@ namespace FFXIVClassic_Lobby_Server return true; } + public static void ApplyLaunchArgs(string[] launchArgs) + { + var args = (from arg in launchArgs select arg.ToLower().Trim().TrimStart('-')).ToList(); + + for (var i = 0; i + 1 < args.Count; i += 2) + { + var arg = args[i]; + var val = args[i + 1]; + var legit = false; + + if (arg == "ip") + { + IPAddress ip; + if (IPAddress.TryParse(val, out ip) && (legit = true)) + OPTIONS_BINDIP = val; + } + else if (arg == "port") + { + UInt16 port; + if (UInt16.TryParse(val, out port) && (legit = true)) + OPTIONS_PORT = val; + } + + if (!legit) + { + Program.Log.Error("Invalid parameter <{0}> for argument: <--{1}> or argument doesnt exist!", val, arg); + } + } + } } } diff --git a/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj b/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj index a8c4fab3..962c3676 100644 --- a/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj +++ b/FFXIVClassic Lobby Server/FFXIVClassic Lobby Server.csproj @@ -133,7 +133,7 @@ - copy "$(SolutionDir)data\lobby_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" + xcopy "$(SolutionDir)data\lobby_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" /y diff --git a/FFXIVClassic Lobby Server/Program.cs b/FFXIVClassic Lobby Server/Program.cs index 598397b5..f45ee786 100644 --- a/FFXIVClassic Lobby Server/Program.cs +++ b/FFXIVClassic Lobby Server/Program.cs @@ -25,8 +25,8 @@ namespace FFXIVClassic_Lobby_Server bool startServer = true; //Load Config - if (!ConfigConstants.Load()) - startServer = false; + ConfigConstants.Load(); + ConfigConstants.ApplyLaunchArgs(args); //Test DB Connection Program.Log.Info("Testing DB connection to \"{0}\"... ", ConfigConstants.DATABASE_HOST); @@ -51,7 +51,7 @@ namespace FFXIVClassic_Lobby_Server { Server server = new Server(); server.StartServer(); - while (true) Thread.Sleep(10000); + while (true) Thread.Sleep(10000); } Program.Log.Info("Press any key to continue..."); diff --git a/FFXIVClassic Map Server/ConfigConstants.cs b/FFXIVClassic Map Server/ConfigConstants.cs index c3ea8d54..97b9aa47 100644 --- a/FFXIVClassic Map Server/ConfigConstants.cs +++ b/FFXIVClassic Map Server/ConfigConstants.cs @@ -1,6 +1,11 @@ using FFXIVClassic.Common; using System; +using System.Collections.Generic; using System.IO; +using System.Net.Sockets; +using MoonSharp.Interpreter.Interop; +using System.Linq; +using System.Net; namespace FFXIVClassic_Map_Server { @@ -8,9 +13,9 @@ namespace FFXIVClassic_Map_Server { public static String OPTIONS_BINDIP; public static String OPTIONS_PORT; - public static bool OPTIONS_TIMESTAMP = false; + public static bool OPTIONS_TIMESTAMP = false; - public static uint DATABASE_WORLDID; + public static uint DATABASE_WORLDID; public static String DATABASE_HOST; public static String DATABASE_PORT; public static String DATABASE_NAME; @@ -24,7 +29,7 @@ namespace FFXIVClassic_Map_Server if (!File.Exists("./map_config.ini")) { Program.Log.Error("FILE NOT FOUND"); - return false; + Program.Log.Error("Loading defaults... "); } INIFile configIni = new INIFile("./map_config.ini"); @@ -39,8 +44,38 @@ namespace FFXIVClassic_Map_Server ConfigConstants.DATABASE_NAME = configIni.GetValue("Database", "database", ""); ConfigConstants.DATABASE_USERNAME = configIni.GetValue("Database", "username", ""); ConfigConstants.DATABASE_PASSWORD = configIni.GetValue("Database", "password", ""); - + return true; } + + public static void ApplyLaunchArgs(string[] launchArgs) + { + var args = (from arg in launchArgs select arg.ToLower().Trim().TrimStart('-')).ToList(); + + for (var i = 0; i + 1 < args.Count; i += 2) + { + var arg = args[i]; + var val = args[i + 1]; + var legit = false; + + if (arg == "ip") + { + IPAddress ip; + if (IPAddress.TryParse(val, out ip) && (legit = true)) + OPTIONS_BINDIP = val; + } + else if (arg == "port") + { + UInt16 port; + if (UInt16.TryParse(val, out port) && (legit = true)) + OPTIONS_PORT = val; + } + + if (!legit) + { + Program.Log.Error("Invalid parameter <{0}> for argument: <--{1}> or argument doesnt exist!", val, arg); + } + } + } } } diff --git a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj index b6eaeae1..265be4c3 100644 --- a/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj +++ b/FFXIVClassic Map Server/FFXIVClassic Map Server.csproj @@ -35,6 +35,9 @@ 4 true + + Always + ..\packages\Cyotek.CircularBuffer.1.0.0.0\lib\net20\Cyotek.Collections.Generic.CircularBuffer.dll @@ -313,7 +316,12 @@ - copy "$(SolutionDir)data\map_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" + xcopy "$(SolutionDir)data\map_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" /d +xcopy "$(SolutionDir)data\scripts" "$(SolutionDir)$(ProjectName)\$(OutDir)scripts" /e /d /y /s + + + + diff --git a/FFXIVClassic Map Server/Program.cs b/FFXIVClassic Map Server/Program.cs index 921278a1..a06bed51 100644 --- a/FFXIVClassic Map Server/Program.cs +++ b/FFXIVClassic Map Server/Program.cs @@ -31,8 +31,8 @@ namespace FFXIVClassic_Map_Server Program.Log.Info("---------FFXIV 1.0 Map Server---------"); //Load Config - if (!ConfigConstants.Load()) - startServer = false; + ConfigConstants.Load(); + ConfigConstants.ApplyLaunchArgs(args); //Test DB Connection Program.Log.Info("Testing DB connection... "); diff --git a/FFXIVClassic Map Server/lua/LuaEngine.cs b/FFXIVClassic Map Server/lua/LuaEngine.cs index ddbae92a..0099c9dc 100644 --- a/FFXIVClassic Map Server/lua/LuaEngine.cs +++ b/FFXIVClassic Map Server/lua/LuaEngine.cs @@ -207,7 +207,7 @@ namespace FFXIVClassic_Map_Server.lua public static void RunGMCommand(Player player, String cmd, string[] param, bool help = false) { // load from scripts/commands/gm/ directory - var path = String.Format("./scripts/commands/gm/{0}.lua", cmd.ToString().ToLower()); + var path = String.Format("./scripts/commands/gm/{0}.lua", cmd.ToLower()); // check if the file exists if (File.Exists(path)) diff --git a/FFXIVClassic World Server/ConfigConstants.cs b/FFXIVClassic World Server/ConfigConstants.cs index 7f8b29aa..e5d9c5e5 100644 --- a/FFXIVClassic World Server/ConfigConstants.cs +++ b/FFXIVClassic World Server/ConfigConstants.cs @@ -1,6 +1,8 @@ using FFXIVClassic.Common; using System; using System.IO; +using System.Linq; +using System.Net; namespace FFXIVClassic_World_Server { @@ -23,7 +25,7 @@ namespace FFXIVClassic_World_Server if (!File.Exists("./world_config.ini")) { Program.Log.Error("FILE NOT FOUND!"); - return false; + Program.Log.Error("Loading defaults..."); } INIFile configIni = new INIFile("./world_config.ini"); @@ -40,5 +42,35 @@ namespace FFXIVClassic_World_Server return true; } + + public static void ApplyLaunchArgs(string[] launchArgs) + { + var args = (from arg in launchArgs select arg.ToLower().Trim().TrimStart('-')).ToList(); + + for (var i = 0; i + 1 < args.Count; i += 2) + { + var arg = args[i]; + var val = args[i + 1]; + var legit = false; + + if (arg == "ip") + { + IPAddress ip; + if (IPAddress.TryParse(val, out ip) && (legit = true)) + OPTIONS_BINDIP = val; + } + else if (arg == "port") + { + UInt16 port; + if (UInt16.TryParse(val, out port) && (legit = true)) + OPTIONS_PORT = val; + } + + if (!legit) + { + Program.Log.Error("Invalid parameter <{0}> for argument: <--{1}> or argument doesnt exist!", val, arg); + } + } + } } } diff --git a/FFXIVClassic World Server/FFXIVClassic World Server.csproj b/FFXIVClassic World Server/FFXIVClassic World Server.csproj index 75e58178..0cd97caa 100644 --- a/FFXIVClassic World Server/FFXIVClassic World Server.csproj +++ b/FFXIVClassic World Server/FFXIVClassic World Server.csproj @@ -102,6 +102,9 @@ + + xcopy "$(SolutionDir)data\world_config.ini" "$(SolutionDir)$(ProjectName)\$(OutDir)" /d +