diff --git a/HorseIsleServer/HISP.sln b/HorseIsleServer/HISP.sln index 495e057..31b1ae8 100644 --- a/HorseIsleServer/HISP.sln +++ b/HorseIsleServer/HISP.sln @@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPd", "HISPd\HISPd.csproj EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "N00BS", "N00BS\N00BS.csproj", "{6B45A1E8-0F54-4BF7-AF48-41B9FE676570}" EndProject -Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "N00BSInstaller", "N00BSInstaller\N00BSInstaller.vdproj", "{D330A197-67D4-42B0-8906-54264AF95EC1}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Android|Any CPU = Android|Any CPU @@ -72,6 +70,7 @@ Global {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM64.ActiveCfg = iOS|ARM64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM64.Build.0 = iOS|ARM64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x64.ActiveCfg = iOS|x64 + {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x64.Build.0 = iOS|x64 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x86.ActiveCfg = iOS|x86 {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|Any CPU.ActiveCfg = Linux|Any CPU {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|Any CPU.Build.0 = Linux|Any CPU @@ -130,6 +129,7 @@ Global {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM64.ActiveCfg = iOS|ARM64 {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM64.Build.0 = iOS|ARM64 {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x64.ActiveCfg = iOS|x64 + {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x64.Build.0 = iOS|x64 {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x86.ActiveCfg = iOS|x86 {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.ActiveCfg = Linux|Any CPU {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.Build.0 = Linux|Any CPU @@ -199,38 +199,6 @@ Global {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x64.Build.0 = Windows|x64 {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x86.ActiveCfg = Windows|x86 {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x86.Build.0 = Windows|x86 - {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|ARM64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|ARM64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|ARM64.ActiveCfg = Debug - {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|ARM64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|Any CPU.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|ARM.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|ARM64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x64.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x64.Build.0 = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x86.ActiveCfg = Windows - {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x86.Build.0 = Windows EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/HorseIsleServer/HISPd/Program.cs b/HorseIsleServer/HISPd/Program.cs index 991f59c..fb7e67b 100644 --- a/HorseIsleServer/HISPd/Program.cs +++ b/HorseIsleServer/HISPd/Program.cs @@ -48,14 +48,17 @@ namespace HISP.Cli } public static void LogToFile(bool error, string type,string text) { - sw.WriteLineAsync(text + sw.NewLine); + sw.WriteLineAsync(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd") + ": [" + type + "] " + text + sw.NewLine); } public static void LogStdout(bool error, string type, string text) { + if (type == "CRASH") + LogToFile(error, type, text); + if (error) - Console.Error.WriteAsync("[" + type + "] " + text + Console.Error.NewLine); + Console.Error.WriteAsync(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd")+": [" + type + "] " + text + Console.Error.NewLine); else - Console.Out.WriteAsync("[" + type + "] " + text + Console.Out.NewLine); + Console.Out.WriteAsync(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd") + ": [" + type + "] " + text + Console.Out.NewLine); } @@ -120,6 +123,10 @@ namespace HISP.Cli LogFile = HispLogVar; Logger.SetCallback(LogToFile); } + else + { + LogFile = Path.Combine(BaseDir, "crash.log"); + } if (HispBaseDir != null) { diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/control b/HorseIsleServer/HISPd/Resources/DEBIAN/control index 487ff8e..66f2038 100644 --- a/HorseIsleServer/HISPd/Resources/DEBIAN/control +++ b/HorseIsleServer/HISPd/Resources/DEBIAN/control @@ -1,5 +1,5 @@ Package: hisp -Version: 1.7.92 +Version: 1.7.99 Depends: coreutils,systemd,mariadb-server,libsqlite3-dev,zlib1g-dev,libicu-dev,libkrb5-dev Maintainer: Li Homepage: https://islehorse.com diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst b/HorseIsleServer/HISPd/Resources/DEBIAN/postinst index e8b6656..cb2151d 100644 --- a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst +++ b/HorseIsleServer/HISPd/Resources/DEBIAN/postinst @@ -1,7 +1,10 @@ #!/bin/sh useradd -r horseisle +mkdir -p /etc/hisp +mkdir -p /var/log/hisp chown -R horseisle:horseisle /etc/hisp +chown -R horseisle:horseisle /var/log/hisp systemctl enable HISP.service systemctl start HISP diff --git a/HorseIsleServer/HISPd/Resources/HISP.service b/HorseIsleServer/HISPd/Resources/HISP.service index a945eac..360db4f 100644 --- a/HorseIsleServer/HISPd/Resources/HISP.service +++ b/HorseIsleServer/HISPd/Resources/HISP.service @@ -25,7 +25,7 @@ Group=horseisle WorkingDirectory=/etc/hisp ExecStart=/usr/bin/HISPd -Environment=USER=horseisle HOME=/etc/hisp HISP_BASE_DIR=/etc/hisp HISP_CONF_FILE=/etc/hisp/server.properties +Environment=USER=horseisle HOME=/etc/hisp HISP_BASE_DIR=/etc/hisp HISP_CONF_FILE=/etc/hisp/server.properties HISP_LOG_FILE=/var/log/hisp/hisp.log [Install] WantedBy=multi-user.target diff --git a/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs b/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs index bc6c252..5c23c81 100644 --- a/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs +++ b/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs @@ -30,5 +30,5 @@ using System.Runtime.InteropServices; // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("1.7.92.0")] -[assembly: AssemblyFileVersion("1.7.92.0")] +[assembly: AssemblyVersion("1.7.99.0")] +[assembly: AssemblyFileVersion("1.7.99.0")] diff --git a/HorseIsleServer/LibHISP/Server/Database.cs b/HorseIsleServer/LibHISP/Server/Database.cs index 675055c..47a953c 100644 --- a/HorseIsleServer/LibHISP/Server/Database.cs +++ b/HorseIsleServer/LibHISP/Server/Database.cs @@ -43,8 +43,12 @@ namespace HISP.Server public static void OnShutdown() { - MySqlConnection.ClearAllPools(); - SqliteConnection.ClearAllPools(); + + if(!ConfigReader.SqlLite) + MySqlConnection.ClearAllPools(); + else + SqliteConnection.ClearAllPools(); + } public static bool TryExecuteSqlQuery(string query) @@ -134,7 +138,6 @@ namespace HISP.Server if (ConfigReader.SqlLite) { - try { DbCommand sqlCommand = db.CreateCommand(); diff --git a/HorseIsleServer/LibHISP/Server/Entry.cs b/HorseIsleServer/LibHISP/Server/Entry.cs index f4c7c3a..9d27d1c 100644 --- a/HorseIsleServer/LibHISP/Server/Entry.cs +++ b/HorseIsleServer/LibHISP/Server/Entry.cs @@ -21,21 +21,24 @@ namespace HISP.Server { Process.GetCurrentProcess().Close(); } - public static Action OnShutdown = defaultOnShutdownCallback; + public static Action OnShutdown = defaultOnShutdownCallback; public static void SetShutdownCallback(Action callback) { OnShutdown = callback; } + + public static void RegisterCrashHandler() + { +#if (!DEBUG) + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HispCrashHandler); +#endif + } public static void Start() { - -#if (!DEBUG) - AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); -#endif - + RegisterCrashHandler(); Console.Title = ServerVersion.GetBuildString(); ConfigReader.OpenConfig(); CrossDomainPolicy.GetPolicy(); @@ -61,25 +64,18 @@ namespace HISP.Server GameServer.StartServer(); } - private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + private static void HispCrashHandler(object sender, UnhandledExceptionEventArgs e) { Exception execpt = (Exception)e.ExceptionObject; - Logger.ErrorPrint("HISP HAS CRASHED :("); - Logger.ErrorPrint("Unhandled Exception: " + execpt.ToString()); - Logger.ErrorPrint(execpt.StackTrace); + string crashMsg = "HISP HAS CRASHED :("; + crashMsg += "Build: " + ServerVersion.GetBuildString(); + crashMsg += "Unhandled Exception: " + execpt.Message; + crashMsg += execpt.StackTrace; - try - { - File.AppendAllText("crashlog.txt", "HISP HAS CRASHED :(\n"); - File.AppendAllText("crashlog.txt", "Unhandled Exception: " + execpt.ToString() + "\n"); - File.AppendAllText("crashlog.txt", execpt.StackTrace + "\n"); - } - catch (Exception) { }; - - Thread.Sleep(5000); - Environment.Exit(1); + Logger.CrashPrint(crashMsg); + } } } diff --git a/HorseIsleServer/LibHISP/Server/GameClient.cs b/HorseIsleServer/LibHISP/Server/GameClient.cs index e72f295..f5c15d5 100644 --- a/HorseIsleServer/LibHISP/Server/GameClient.cs +++ b/HorseIsleServer/LibHISP/Server/GameClient.cs @@ -102,9 +102,9 @@ namespace HISP.Server client.LoggedinUser.Inventory.AddIgnoringFull(rubyItem); } - client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++; + client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++; + Logger.DebugPrint("Kicking: " + client.LoggedinUser.Username); } - client.Kick("Server shutdown."); } diff --git a/HorseIsleServer/LibHISP/Server/GameServer.cs b/HorseIsleServer/LibHISP/Server/GameServer.cs index db7342b..6962558 100644 --- a/HorseIsleServer/LibHISP/Server/GameServer.cs +++ b/HorseIsleServer/LibHISP/Server/GameServer.cs @@ -8258,18 +8258,16 @@ namespace HISP.Server } public static void ShutdownServer() { - Logger.InfoPrint("Shutting down."); + Logger.InfoPrint("Server shutting down."); try { GameClient.OnShutdown(); GameServer.OnShutdown(); Database.OnShutdown(); - Entry.OnShutdown(); - } - catch (Exception) - { - Environment.Exit(1); } + catch (Exception) { } + + Entry.OnShutdown(); } public static void StartServer() diff --git a/HorseIsleServer/LibHISP/Server/Logger.cs b/HorseIsleServer/LibHISP/Server/Logger.cs index ecc4507..f173776 100644 --- a/HorseIsleServer/LibHISP/Server/Logger.cs +++ b/HorseIsleServer/LibHISP/Server/Logger.cs @@ -41,6 +41,10 @@ namespace HISP.Server { if (ConfigReader.LogLevel >= 5) logFunction(false, "DEBUG", text); + } + public static void CrashPrint(string text) + { + logFunction(true, "CRASH", text); } } } diff --git a/HorseIsleServer/N00BS/Program.cs b/HorseIsleServer/N00BS/Program.cs index 462df67..410055a 100644 --- a/HorseIsleServer/N00BS/Program.cs +++ b/HorseIsleServer/N00BS/Program.cs @@ -68,6 +68,12 @@ namespace HISP.Noobs return rand.Next(0, 255).ToString(); } + public static void ShowCrash(bool error, string type, string text) + { + if (type == "CRASH") + MessageBox.Show(text, type, MessageBoxButtons.OK, MessageBoxIcon.Error); + } + public static void Main(string[] args) { @@ -104,6 +110,9 @@ namespace HISP.Noobs Task startForm = new Task(StartLRFrm); startForm.Start(); + Entry.RegisterCrashHandler(); + Logger.SetCallback(ShowCrash); + ConfigReader.ConfigurationFileName = Path.Combine(BaseDir, "server.properties"); ConfigReader.OpenConfig(); ConfigReader.SqlLite = true; @@ -117,7 +126,6 @@ namespace HISP.Noobs ConfigReader.DatabaseName = Path.Combine(BaseDir, "game1"); - IncrementProgress(); Database.OpenDatabase(); IncrementProgress(); @@ -131,6 +139,7 @@ namespace HISP.Noobs } + // Start HI1 Server IncrementProgress(); diff --git a/HorseIsleServer/N00BS/Properties/AssemblyInfo.cs b/HorseIsleServer/N00BS/Properties/AssemblyInfo.cs index 062645a..888729b 100644 --- a/HorseIsleServer/N00BS/Properties/AssemblyInfo.cs +++ b/HorseIsleServer/N00BS/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.7.92.0")] -[assembly: AssemblyFileVersion("1.7.92.0")] +[assembly: AssemblyVersion("1.7.99.0")] +[assembly: AssemblyFileVersion("1.7.99.0")] diff --git a/HorseIsleServer/N00BS/SystemTrayIcon.Designer.cs b/HorseIsleServer/N00BS/SystemTrayIcon.Designer.cs index 41fa379..172990e 100644 --- a/HorseIsleServer/N00BS/SystemTrayIcon.Designer.cs +++ b/HorseIsleServer/N00BS/SystemTrayIcon.Designer.cs @@ -164,7 +164,7 @@ // this.allUsersSubscribedToolStripMenuItem.CheckOnClick = true; this.allUsersSubscribedToolStripMenuItem.Name = "allUsersSubscribedToolStripMenuItem"; - this.allUsersSubscribedToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.allUsersSubscribedToolStripMenuItem.Size = new System.Drawing.Size(178, 22); this.allUsersSubscribedToolStripMenuItem.Text = "All users subscribed"; this.allUsersSubscribedToolStripMenuItem.CheckedChanged += new System.EventHandler(this.allUsersSubscribedToolStripMenuItem_CheckedChanged); // @@ -172,7 +172,7 @@ // this.fixOfficalBugsToolStripMenuItem.CheckOnClick = true; this.fixOfficalBugsToolStripMenuItem.Name = "fixOfficalBugsToolStripMenuItem"; - this.fixOfficalBugsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.fixOfficalBugsToolStripMenuItem.Size = new System.Drawing.Size(178, 22); this.fixOfficalBugsToolStripMenuItem.Text = "Fix offical bugs"; this.fixOfficalBugsToolStripMenuItem.CheckedChanged += new System.EventHandler(this.fixOfficalBugsToolStripMenuItem_CheckedChanged); // @@ -190,12 +190,14 @@ this.editServerPropertiesToolStripMenuItem.Name = "editServerPropertiesToolStripMenuItem"; this.editServerPropertiesToolStripMenuItem.Size = new System.Drawing.Size(184, 22); this.editServerPropertiesToolStripMenuItem.Text = "Edit server.properties"; + this.editServerPropertiesToolStripMenuItem.Click += new System.EventHandler(this.editServerPropertiesToolStripMenuItem_Click); // // openServerFolderToolStripMenuItem // this.openServerFolderToolStripMenuItem.Name = "openServerFolderToolStripMenuItem"; this.openServerFolderToolStripMenuItem.Size = new System.Drawing.Size(184, 22); this.openServerFolderToolStripMenuItem.Text = "Open server folder"; + this.openServerFolderToolStripMenuItem.Click += new System.EventHandler(this.openServerFolderToolStripMenuItem_Click); // // SystemTrayIcon // diff --git a/HorseIsleServer/N00BS/SystemTrayIcon.cs b/HorseIsleServer/N00BS/SystemTrayIcon.cs index db0797d..38a6cfc 100644 --- a/HorseIsleServer/N00BS/SystemTrayIcon.cs +++ b/HorseIsleServer/N00BS/SystemTrayIcon.cs @@ -76,8 +76,8 @@ namespace HISP.Noobs private void editServerPropertiesToolStripMenuItem_Click(object sender, EventArgs e) { Process p = new Process(); - p.StartInfo.FileName = "notepad.exe"; - p.StartInfo.Arguments = Path.Combine(Program.BaseDir, "server.properties"); + p.StartInfo.FileName = Path.Combine(Program.BaseDir, "server.properties"); + p.StartInfo.UseShellExecute = true; p.Start(); } @@ -85,8 +85,8 @@ namespace HISP.Noobs private void openServerFolderToolStripMenuItem_Click(object sender, EventArgs e) { Process p = new Process(); - p.StartInfo.FileName = "explorer.exe"; - p.StartInfo.Arguments = Program.BaseDir; + p.StartInfo.FileName = Program.BaseDir; + p.StartInfo.UseShellExecute = true; p.Start(); }