Reset Server Button

- added new button to reset your server.
This commit is contained in:
Brett Hewitson 2022-06-15 20:01:05 +10:00
parent e2f92bf7a9
commit 9c5b096429
19 changed files with 308 additions and 136 deletions

View file

@ -176,6 +176,9 @@
<HintPath>..\packages\Microsoft.Tpl.Dataflow.4.5.24\lib\portable-net45+win8+wpa81\System.Threading.Tasks.Dataflow.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Expression.Blend.Sdk.1.0.2\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference>

View file

@ -1084,6 +1084,10 @@
<sys:String x:Key="ServerSettings_BackupServer_Title">Backup Server</sys:String>
<sys:String x:Key="ServerSettings_BackupServer_FailedTitle">Backup Server Error</sys:String>
<sys:String x:Key="ServerSettings_BackupServer_SuccessfulLabel">The backup was successful.</sys:String>
<sys:String x:Key="ServerSettings_ResetServer_Title">Reset Server</sys:String>
<sys:String x:Key="ServerSettings_ResetServer_FailedTitle">Reset Server Error</sys:String>
<sys:String x:Key="ServerSettings_ResetServer_ConfirmationLabel">This will delete all the server files and reset your server back to new. Do you wish to proceed?</sys:String>
<sys:String x:Key="ServerSettings_ResetServer_SuccessfulLabel">The reset was successful.</sys:String>
<sys:String x:Key="ServerSettings_ShutdownServer_FailedTitle">Shutdown Server Error</sys:String>
<sys:String x:Key="ServerSettings_ShutdownServer_CancelledTitle">Shutdown Server Cancelled</sys:String>
<sys:String x:Key="ServerSettings_ShutdownServer_AlreadyOpenLabel">The shutdown window is already open for this server.</sys:String>
@ -1161,6 +1165,8 @@
<sys:String x:Key="ServerSettings_ModIdsTooltip">A comma-separated list of mod ids, in the order in which they should be applied.</sys:String>
<sys:String x:Key="ServerSettings_ModDetailsTooltip">View the mod details.</sys:String>
<sys:String x:Key="ServerSettings_ModUpgradeTooltip">Upgrade to the latest version of the mods that is currently available to download.</sys:String>
<sys:String x:Key="ServerSettings_ResetServerButtonLabel">Reset</sys:String>
<sys:String x:Key="ServerSettings_ResetServerButtonTooltip">Deletes all the server files and resets your server back to new.</sys:String>
<sys:String x:Key="ServerSettings_SavesLabel">Saves</sys:String>
<sys:String x:Key="ServerSettings_AutoSavesPeriodLabel">Auto Save Period:</sys:String>

View file

@ -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);
});
}
}
}
}

View file

@ -2011,9 +2011,9 @@ namespace ServerManagerTool.Lib
// backup the world save file
var key = string.Empty;
var files = new Dictionary<string, List<string>>
var files = new Dictionary<string, List<(string, string)>>
{
{ key, new List<string> { 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<string> { file.FullName });
files.Add(key, new List<(string, string)> { (file.FullName, file.Name) });
}
}
}

View file

@ -576,6 +576,40 @@
<Label Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Content="{DynamicResource ServerSettings_MapPathLabel}" ToolTip="{DynamicResource ServerSettings_MapPathTooltip}"/>
<ComboBox Grid.Row="0" Grid.Column="1" Margin="1" Name="GameMapComboBox" IsEditable="True" ItemsSource="{Binding BaseGameMaps, ElementName=SettingsControl, UpdateSourceTrigger=PropertyChanged}" SelectedValue="{Binding ServerMap, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" SelectedValuePath="ValueMember" DisplayMemberPath="DisplayMember" LostFocus="ComboBoxItemList_LostFocus" PreviewMouseWheel="ComboBox_PreviewMouseWheel" SourceUpdated="MapName_SourceUpdated" ToolTip="{DynamicResource ServerSettings_MapPathTooltip}"/>
<Button Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,1,0,0" DataContext="{Binding Runtime, ElementName=SettingsControl}" Click="ResetServer_Click">
<Button.Style>
<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
<Setter Property="Content" Value="{DynamicResource ServerSettings_ResetServerButtonLabel}"/>
<Setter Property="ToolTip" Value="{DynamicResource ServerSettings_ResetServerButtonTooltip}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Initializing}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Running}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Stopping}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Stopped}">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Unknown}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Updating}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="{x:Static enum:ServerStatus.Uninstalled}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Label Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" Content="{DynamicResource ServerSettings_MapSaveNameLabel}" ToolTip="{DynamicResource ServerSettings_MapSaveNameTooltip}"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="1" VerticalContentAlignment="Center" Text="{Binding ServerMapSaveFileName}" ToolTip="{DynamicResource ServerSettings_MapSaveNameTooltip}"/>

View file

@ -849,6 +849,29 @@ namespace ServerManagerTool
MessageBox.Show(_globalizer.GetResourceString("ServerSettings_ServerAutoSettings_ErrorLabel"), _globalizer.GetResourceString("ServerSettings_ServerAutoSettings_ErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Information);
}
private async void ResetServer_Click(object sender, RoutedEventArgs e)
{
if (MessageBox.Show(_globalizer.GetResourceString("ServerSettings_ResetServer_ConfirmationLabel"), _globalizer.GetResourceString("ServerSettings_ResetServer_Title"), MessageBoxButton.YesNo, MessageBoxImage.Warning) != MessageBoxResult.Yes)
return;
try
{
Application.Current.Dispatcher.Invoke(() => this.Cursor = System.Windows.Input.Cursors.Wait);
await this.Server.ResetAsync();
MessageBox.Show(_globalizer.GetResourceString("ServerSettings_ResetServer_SuccessfulLabel"), _globalizer.GetResourceString("ServerSettings_ResetServer_Title"), MessageBoxButton.OK, MessageBoxImage.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ResetServer_FailedTitle"), MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
Application.Current.Dispatcher.Invoke(() => this.Cursor = null);
}
}
private async void SaveBackup_Click(object sender, RoutedEventArgs e)
{
try

View file

@ -7,6 +7,29 @@
<link href="http://servermanagers.freeforums.net/" />
<updated>2022-06-13T00:00:00Z</updated>
<entry>
<id>urn:uuid:4E189446-9861-4B64-9B27-0E3E655CD1CA</id>
<title>1.1.75 (1.1.75.1)</title>
<summary>1.1.75.1</summary>
<link href="" />
<updated>2022-06-16T00:00:00Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
<p>
<u style="font-size: .9em;">NEW</u>
<br/>
<ul>
<li>Reset Server - added new button to reset your server. This will delete all server files and reset your server back to new.</li>
</ul>
</p>
</div>
</content>
<author>
<name>bletch</name>
<email>bletch1971@hotmail.com</email>
</author>
</entry>
<entry>
<id>urn:uuid:4E189446-9861-4B64-9B27-0E3E655CD1CA</id>
<title>1.1.74 (1.1.74.3)</title>

View file

@ -8,64 +8,18 @@
<updated>2022-06-16T00:00:00Z</updated>
<entry>
<id>urn:uuid:C9BB0F58-3C98-4E69-A0D1-E962EB61072C</id>
<title>1.1.74 (1.1.74.3)</title>
<summary>1.1.74.3</summary>
<id>urn:uuid:4E189446-9861-4B64-9B27-0E3E655CD1CA</id>
<title>1.1.75 (1.1.75.1)</title>
<summary>1.1.75.1</summary>
<link href="" />
<updated>2022-06-16T00:00:00Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
<p>
<u style="font-size: .9em;">BUGFIX</u>
<u style="font-size: .9em;">NEW</u>
<br/>
<ul>
<li>Global Settings - fixed the bug that cleared the Backup Rcon message mode when changing languages.</li>
</ul>
</p>
</div>
</content>
<author>
<name>bletch</name>
<email>bletch1971@hotmail.com</email>
</author>
</entry>
<entry>
<id>urn:uuid:74CFB107-BB04-4A41-B41A-DD6AFB1E8D0F</id>
<title>1.1.74 (1.1.74.2)</title>
<summary>1.1.74.2</summary>
<link href="" />
<updated>2022-06-15T00:00:00Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
<p>
<u style="font-size: .9em;">CHANGE</u>
<br/>
<ul>
<li>RCON Message Modes - now loads them from the gamedata file, so they can be extended without a code change.</li>
</ul>
</p>
</div>
</content>
<author>
<name>bletch</name>
<email>bletch1971@hotmail.com</email>
</author>
</entry>
<entry>
<id>urn:uuid:4E189446-9861-4B64-9B27-0E3E655CD1CA</id>
<title>1.1.74 (1.1.74.1)</title>
<summary>1.1.74.1</summary>
<link href="" />
<updated>2022-06-13T00:00:00Z</updated>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
<p>
<u style="font-size: .9em;">CHANGE</u>
<br/>
<ul>
<li>Updated to query master timeouts from 10 seconds to 30 seconds.</li>
<li>Reset Server - added new button to reset your server. This will delete all server files and reset your server back to new.</li>
</ul>
</p>
</div>

View file

@ -8,6 +8,7 @@
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="NLog" version="4.7.2" targetFramework="net462" />
<package id="System.Data.SQLite.Core" version="1.0.112.1" targetFramework="net462" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
<package id="TaskScheduler" version="2.8.19" targetFramework="net462" />
<package id="WindowsAPICodePack-Core" version="1.1.2" targetFramework="net462" />
<package id="WindowsAPICodePack-Shell" version="1.1.1" targetFramework="net462" />