From 9c5b096429a4e7b10bf7b1b1b2671aaab16daff3 Mon Sep 17 00:00:00 2001 From: Brett Hewitson Date: Wed, 15 Jun 2022 20:01:05 +1000 Subject: [PATCH] Reset Server Button - added new button to reset your server. --- src/ARKServerManager/ARKServerManager.csproj | 3 + .../Globalization/en-US/en-US.xaml | 6 ++ src/ARKServerManager/Lib/Server.cs | 37 ++++++++ .../UserControls/ServerSettingsControl.xaml | 34 ++++++++ .../ServerSettingsControl.xaml.cs | 23 +++++ src/ARKServerManager/VersionFeed.xml | 23 +++++ src/ARKServerManager/VersionFeedBeta.xml | 86 ++----------------- src/ARKServerManager/packages.config | 1 + .../ConanServerManager.csproj | 3 + .../Globalization/en-US/en-US.xaml | 6 ++ src/ConanServerManager/Lib/Server.cs | 37 ++++++++ src/ConanServerManager/Lib/ServerApp.cs | 8 +- .../UserControls/ServerSettingsControl.xaml | 34 ++++++++ .../ServerSettingsControl.xaml.cs | 23 +++++ src/ConanServerManager/VersionFeed.xml | 23 +++++ src/ConanServerManager/VersionFeedBeta.xml | 56 ++---------- src/ConanServerManager/packages.config | 1 + .../ServerManager.Common.csproj | 1 + src/ServerManager.Common/Utils/ZipUtils.cs | 39 +++++++++ 19 files changed, 308 insertions(+), 136 deletions(-) diff --git a/src/ARKServerManager/ARKServerManager.csproj b/src/ARKServerManager/ARKServerManager.csproj index 7733eccb..5c2be6f8 100644 --- a/src/ARKServerManager/ARKServerManager.csproj +++ b/src/ARKServerManager/ARKServerManager.csproj @@ -189,6 +189,9 @@ ..\packages\Microsoft.Tpl.Dataflow.4.5.24\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll + + ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll + ..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll diff --git a/src/ARKServerManager/Globalization/en-US/en-US.xaml b/src/ARKServerManager/Globalization/en-US/en-US.xaml index 334f6c99..bbeb6617 100644 --- a/src/ARKServerManager/Globalization/en-US/en-US.xaml +++ b/src/ARKServerManager/Globalization/en-US/en-US.xaml @@ -1039,6 +1039,10 @@ Backup Server Backup Server Error The backup was successful. + Reset Server + Reset Server Error + This will delete all the server, player and tribe files and reset your server back to new. Do you wish to proceed? + The reset was successful. Shutdown Server Error Shutdown Server Cancelled The shutdown window is already open for this server. @@ -1128,6 +1132,8 @@ A comma-separated list of mod ids, in the order in which they should be applied. View the mod details. Upgrade to the latest version of the mods that is currently available to download. + Reset + Deletes all the server, player and tribe files and resets your server back to new. Saves Auto Save Period: diff --git a/src/ARKServerManager/Lib/Server.cs b/src/ARKServerManager/Lib/Server.cs index 06a7fcf9..cefc3d33 100644 --- a/src/ARKServerManager/Lib/Server.cs +++ b/src/ARKServerManager/Lib/Server.cs @@ -1,5 +1,6 @@ using ServerManagerTool.Common.Lib; using System; +using System.IO; using System.Threading; using System.Threading.Tasks; using System.Windows; @@ -101,5 +102,41 @@ namespace ServerManagerTool.Lib this.Profile.LastInstalledVersion = this.Runtime.Version.ToString(); return success; } + + public async Task ResetAsync() + { + // delete the world, player and tribe files (SavedArks) + var saveFolder = ServerProfile.GetProfileSavePath(Profile); + if (Directory.Exists(saveFolder)) + { + await Task.Run(() => + { + foreach (var file in Directory.GetFiles(saveFolder, "*.*", SearchOption.TopDirectoryOnly)) + { + File.Delete(file); + } + }); + }; + + // delete the mod files (SaveGames) + var saveGamesFolder = ServerProfile.GetProfileSaveGamesPath(Profile); + if (Directory.Exists(saveGamesFolder)) + { + await Task.Run(() => + { + Directory.Delete(saveGamesFolder, true); + }); + } + + // delete the log files (Logs) + var logsFolder = Path.Combine(Profile.InstallDirectory, Config.Default.SavedRelativePath, Config.Default.LogsDir); + if (Directory.Exists(logsFolder)) + { + await Task.Run(() => + { + Directory.Delete(logsFolder, true); + }); + } + } } } diff --git a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml index 09c7276f..ae2a5feb 100644 --- a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml +++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml @@ -745,6 +745,40 @@ + + + ..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll + ..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll diff --git a/src/ConanServerManager/Globalization/en-US/en-US.xaml b/src/ConanServerManager/Globalization/en-US/en-US.xaml index 40ea3a1c..4ffd577c 100644 --- a/src/ConanServerManager/Globalization/en-US/en-US.xaml +++ b/src/ConanServerManager/Globalization/en-US/en-US.xaml @@ -1084,6 +1084,10 @@ Backup Server Backup Server Error The backup was successful. + Reset Server + Reset Server Error + This will delete all the server files and reset your server back to new. Do you wish to proceed? + The reset was successful. Shutdown Server Error Shutdown Server Cancelled The shutdown window is already open for this server. @@ -1161,6 +1165,8 @@ A comma-separated list of mod ids, in the order in which they should be applied. View the mod details. Upgrade to the latest version of the mods that is currently available to download. + Reset + Deletes all the server files and resets your server back to new. Saves Auto Save Period: diff --git a/src/ConanServerManager/Lib/Server.cs b/src/ConanServerManager/Lib/Server.cs index 9c3a855d..11b3d178 100644 --- a/src/ConanServerManager/Lib/Server.cs +++ b/src/ConanServerManager/Lib/Server.cs @@ -1,5 +1,6 @@ using ServerManagerTool.Common.Lib; using System; +using System.IO; using System.Threading; using System.Threading.Tasks; using System.Windows; @@ -101,5 +102,41 @@ namespace ServerManagerTool.Lib this.Profile.LastInstalledVersion = this.Runtime.Version.ToString(); return success; } + + public async Task ResetAsync() + { + // delete the world files (*.db*) + var saveFolder = ServerProfile.GetProfileSavePath(Profile); + if (Directory.Exists(saveFolder)) + { + await Task.Run(() => + { + foreach (var file in Directory.GetFiles(saveFolder, "*.db*", SearchOption.TopDirectoryOnly)) + { + File.Delete(file); + } + }); + }; + + // delete the mod files (SaveGames) + var saveGamesFolder = ServerProfile.GetProfileSaveGamesPath(Profile); + if (Directory.Exists(saveGamesFolder)) + { + await Task.Run(() => + { + Directory.Delete(saveGamesFolder, true); + }); + } + + // delete the log files (Logs) + var logsFolder = Path.Combine(Profile.InstallDirectory, Config.Default.SavedRelativePath, Config.Default.LogsRelativePath); + if (Directory.Exists(logsFolder)) + { + await Task.Run(() => + { + Directory.Delete(logsFolder, true); + }); + } + } } } diff --git a/src/ConanServerManager/Lib/ServerApp.cs b/src/ConanServerManager/Lib/ServerApp.cs index c5b85eb7..c3a2c875 100644 --- a/src/ConanServerManager/Lib/ServerApp.cs +++ b/src/ConanServerManager/Lib/ServerApp.cs @@ -2011,9 +2011,9 @@ namespace ServerManagerTool.Lib // backup the world save file var key = string.Empty; - var files = new Dictionary> + var files = new Dictionary> { - { key, new List { worldFile } } + { key, new List<(string, string)> { (worldFile, worldFileName) } } }; if (Config.Default.AutoBackup_IncludeSaveGamesFolder) @@ -2030,9 +2030,9 @@ namespace ServerManagerTool.Lib { key = file.DirectoryName.Replace(saveGamesFolder, Config.Default.SaveGamesRelativePath); if (files.ContainsKey(key)) - files[key].Add(file.FullName); + files[key].Add((file.FullName, file.Name)); else - files.Add(key, new List { file.FullName }); + files.Add(key, new List<(string, string)> { (file.FullName, file.Name) }); } } } diff --git a/src/ConanServerManager/UserControls/ServerSettingsControl.xaml b/src/ConanServerManager/UserControls/ServerSettingsControl.xaml index 911f7308..4b2647b0 100644 --- a/src/ConanServerManager/UserControls/ServerSettingsControl.xaml +++ b/src/ConanServerManager/UserControls/ServerSettingsControl.xaml @@ -576,6 +576,40 @@