mirror of
https://github.com/tribufu/ServerManagers
synced 2026-06-01 09:42:39 +00:00
Added an alias that can be used with the discord command instead of the profile id.
This commit is contained in:
parent
440085f5d3
commit
327103182c
15 changed files with 507 additions and 283 deletions
|
|
@ -1214,6 +1214,8 @@
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotLabel">Discord Bot Details</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotLabel">Discord Bot Details</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotChannelLabel">Channel Id:</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotChannelLabel">Channel Id:</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotChannelTooltip">The id of the discord server channel this profile will listen to.</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotChannelTooltip">The id of the discord server channel this profile will listen to.</sys:String>
|
||||||
|
<sys:String x:Key="ServerSettings_DiscordAliasLabel">Alias:</sys:String>
|
||||||
|
<sys:String x:Key="ServerSettings_DiscordAliasTooltip">A unique name to identify your server when using the discord commands, can be used instead of the profile id.</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordBackupLabel">Allow Backup</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordBackupLabel">Allow Backup</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordBackupTooltip">If enabled, the profile will listen for backup commands from discord.</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordBackupTooltip">If enabled, the profile will listen for backup commands from discord.</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordRestartLabel">Allow Restart</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordRestartLabel">Allow Restart</sys:String>
|
||||||
|
|
@ -5604,8 +5606,9 @@
|
||||||
<sys:String x:Key="DiscordBot_CommandRunningProfile">Another command '{0}' is currently running against profile '{1}'.</sys:String>
|
<sys:String x:Key="DiscordBot_CommandRunningProfile">Another command '{0}' is currently running against profile '{1}'.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_CommandDisabledProfile">Command '{0}' has been disabled for profile '{1}'.</sys:String>
|
<sys:String x:Key="DiscordBot_CommandDisabledProfile">Command '{0}' has been disabled for profile '{1}'.</sys:String>
|
||||||
|
|
||||||
<sys:String x:Key="DiscordBot_ProfileMissing">The '{0}' command requires a profile id.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileMissing">The '{0}' command requires a profile id or alias.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileNotFound">Profile '{0}' was not found or is not associated with the channel.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileNotFound">Profile '{0}' was not found or is not associated with the channel.</sys:String>
|
||||||
|
<sys:String x:Key="DiscordBot_ProfileMultiples">Multiple profiles with '{0}' were found in the channel, command aborted.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileBadStatus">Profile '{0}' is in a state '{1}' that cannot run this command.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileBadStatus">Profile '{0}' is in a state '{1}' that cannot run this command.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileUpdating">Profile '{0}' is currently being updated.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileUpdating">Profile '{0}' is currently being updated.</sys:String>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -968,6 +968,14 @@ namespace ServerManagerTool.Lib
|
||||||
set { SetValue(DiscordChannelIdProperty, value); }
|
set { SetValue(DiscordChannelIdProperty, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static readonly DependencyProperty DiscordAliasProperty = DependencyProperty.Register(nameof(DiscordAlias), typeof(string), typeof(ServerProfile), new PropertyMetadata(String.Empty));
|
||||||
|
[DataMember]
|
||||||
|
public string DiscordAlias
|
||||||
|
{
|
||||||
|
get { return (string)GetValue(DiscordAliasProperty); }
|
||||||
|
set { SetValue(DiscordAliasProperty, value); }
|
||||||
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty AllowDiscordBackupProperty = DependencyProperty.Register(nameof(AllowDiscordBackup), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
public static readonly DependencyProperty AllowDiscordBackupProperty = DependencyProperty.Register(nameof(AllowDiscordBackup), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public bool AllowDiscordBackup
|
public bool AllowDiscordBackup
|
||||||
|
|
|
||||||
|
|
@ -1618,6 +1618,9 @@
|
||||||
<Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource ServerSettings_DiscordBotChannelLabel}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalAlignment="Center"/>
|
<Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource ServerSettings_DiscordBotChannelLabel}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalAlignment="Center"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding DiscordChannelId, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding DiscordChannelId, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
|
<Label Grid.Row="0" Grid.Column="2" Content="{DynamicResource ServerSettings_DiscordAliasLabel}" ToolTip="{DynamicResource ServerSettings_DiscordAliasTooltip}" VerticalAlignment="Center"/>
|
||||||
|
<TextBox Grid.Row="0" Grid.Column="3" Margin="1" Text="{Binding DiscordAlias, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordAliasTooltip}" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordBackup, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordBackupLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordBackupTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordBackup, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordBackupLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordBackupTooltip}"/>
|
||||||
<CheckBox Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordUpdate, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordUpdateLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordUpdateTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordUpdate, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordUpdateLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordUpdateTooltip}"/>
|
||||||
<CheckBox Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordStart, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordStartLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordStartTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordStart, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordStartLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordStartTooltip}"/>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ using ServerManagerTool.Enums;
|
||||||
using ServerManagerTool.Lib;
|
using ServerManagerTool.Lib;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
@ -23,7 +22,7 @@ namespace ServerManagerTool.Utils
|
||||||
|
|
||||||
public static bool HasRunningCommands => _currentProfileCommands.Count > 0;
|
public static bool HasRunningCommands => _currentProfileCommands.Count > 0;
|
||||||
|
|
||||||
public static IList<string> HandleDiscordCommand(CommandType commandType, string serverId, string channelId, string profileId, CancellationToken token)
|
public static IList<string> HandleDiscordCommand(CommandType commandType, string serverId, string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
// check if incoming values are valid
|
// check if incoming values are valid
|
||||||
if (string.IsNullOrWhiteSpace(serverId) || string.IsNullOrWhiteSpace(channelId))
|
if (string.IsNullOrWhiteSpace(serverId) || string.IsNullOrWhiteSpace(channelId))
|
||||||
|
|
@ -42,35 +41,35 @@ namespace ServerManagerTool.Utils
|
||||||
switch (commandType)
|
switch (commandType)
|
||||||
{
|
{
|
||||||
case CommandType.Info:
|
case CommandType.Info:
|
||||||
return GetServerInfo(channelId, profileId);
|
return GetServerInfo(channelId, profileIdOrAlias);
|
||||||
case CommandType.List:
|
case CommandType.List:
|
||||||
return GetServerList(channelId);
|
return GetServerList(channelId);
|
||||||
case CommandType.Status:
|
case CommandType.Status:
|
||||||
return GetServerStatus(channelId, profileId);
|
return GetServerStatus(channelId, profileIdOrAlias);
|
||||||
|
|
||||||
case CommandType.Backup:
|
case CommandType.Backup:
|
||||||
if (Config.Default.AllowDiscordBackup)
|
if (Config.Default.AllowDiscordBackup)
|
||||||
return BackupServer(channelId, profileId, token);
|
return BackupServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Restart:
|
case CommandType.Restart:
|
||||||
if (Config.Default.AllowDiscordRestart)
|
if (Config.Default.AllowDiscordRestart)
|
||||||
return RestartServer(channelId, profileId, token);
|
return RestartServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Shutdown:
|
case CommandType.Shutdown:
|
||||||
if (Config.Default.AllowDiscordShutdown)
|
if (Config.Default.AllowDiscordShutdown)
|
||||||
return ShutdownServer(channelId, profileId, token);
|
return ShutdownServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Stop:
|
case CommandType.Stop:
|
||||||
if (Config.Default.AllowDiscordStop)
|
if (Config.Default.AllowDiscordStop)
|
||||||
return StopServer(channelId, profileId, token);
|
return StopServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Start:
|
case CommandType.Start:
|
||||||
if (Config.Default.AllowDiscordStart)
|
if (Config.Default.AllowDiscordStart)
|
||||||
return StartServer(channelId, profileId, token);
|
return StartServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Update:
|
case CommandType.Update:
|
||||||
if (Config.Default.AllowDiscordUpdate)
|
if (Config.Default.AllowDiscordUpdate)
|
||||||
return UpdateServer(channelId, profileId, token);
|
return UpdateServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -93,19 +92,14 @@ namespace ServerManagerTool.Utils
|
||||||
return string.IsNullOrWhiteSpace(translationKey) ? string.Empty : _globalizer.GetResourceString(translationKey) ?? translationKey;
|
return string.IsNullOrWhiteSpace(translationKey) ? string.Empty : _globalizer.GetResourceString(translationKey) ?? translationKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> GetServerInfo(string channelId, string profileId)
|
private static IList<string> GetServerInfo(string channelId, string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Info) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Info) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Info);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -115,12 +109,28 @@ namespace ServerManagerTool.Utils
|
||||||
|
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Info);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
|
|
@ -130,7 +140,7 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
}
|
}
|
||||||
|
|
||||||
serverName = server.Profile.ServerName;
|
serverName = server.Profile.ServerName;
|
||||||
|
|
@ -168,7 +178,7 @@ namespace ServerManagerTool.Utils
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -183,20 +193,21 @@ namespace ServerManagerTool.Utils
|
||||||
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
||||||
foreach (var server in serverList)
|
foreach (var server in serverList)
|
||||||
{
|
{
|
||||||
response.Add($"```{_globalizer.GetResourceString("ServerSettings_ProfileIdLabel")} {server.Profile.ProfileID}\n{_globalizer.GetResourceString("ServerSettings_ProfileLabel")} {server.Profile.ProfileName}\n{_globalizer.GetResourceString("ServerSettings_ServerNameLabel")} {server.Profile.ServerName}```");
|
response.Add($"```{_globalizer.GetResourceString("ServerSettings_ProfileIdLabel")} {server.Profile.ProfileID}\n{_globalizer.GetResourceString("ServerSettings_DiscordAliasLabel")} {server.Profile.DiscordAlias}\n{_globalizer.GetResourceString("ServerSettings_ProfileLabel")} {server.Profile.ProfileName}\n{_globalizer.GetResourceString("ServerSettings_ServerNameLabel")} {server.Profile.ServerName}```");
|
||||||
}
|
}
|
||||||
}).Wait();
|
}).Wait();
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> GetServerStatus(string channelId, string profileId)
|
private static IList<string> GetServerStatus(string channelId, string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
List<string> response = new List<string>();
|
List<string> response = new List<string>();
|
||||||
|
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId) && (string.IsNullOrWhiteSpace(profileId) || Equals(profileId, s.Profile.ProfileID)));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (string.IsNullOrWhiteSpace(profileIdOrAlias) || Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
||||||
foreach (var server in serverList)
|
foreach (var server in serverList)
|
||||||
|
|
@ -208,19 +219,14 @@ namespace ServerManagerTool.Utils
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> BackupServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> BackupServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Backup) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Backup) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Backup);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -229,18 +235,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordBackup)
|
if (!server.Profile.AllowDiscordBackup)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Backup, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Backup, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Backup);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -248,7 +270,7 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -267,7 +289,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -276,7 +299,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileBackup(profile, token);
|
app.PerformProfileBackup(profile, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_BackupRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_BackupRequested"), profile.ServerName));
|
||||||
|
|
@ -287,24 +310,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> RestartServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> RestartServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Restart) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Restart) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Restart);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -313,28 +331,44 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordRestart)
|
if (!server.Profile.AllowDiscordRestart)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Restart, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Restart, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Restart);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
case ServerStatus.Stopping:
|
case ServerStatus.Stopping:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -354,7 +388,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -363,7 +398,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, true, false, false, token);
|
app.PerformProfileShutdown(profile, true, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_RestartRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_RestartRequested"), profile.ServerName));
|
||||||
|
|
@ -374,24 +409,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> ShutdownServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> ShutdownServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Shutdown) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Shutdown) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Shutdown);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -400,18 +430,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordShutdown)
|
if (!server.Profile.AllowDiscordShutdown)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Shutdown, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Shutdown, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Shutdown);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -419,10 +465,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Stopped:
|
case ServerStatus.Stopped:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -441,7 +487,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -450,7 +497,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, false, false, false, token);
|
app.PerformProfileShutdown(profile, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
||||||
|
|
@ -461,24 +508,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> StopServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> StopServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Stop) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Stop) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Stop);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -487,18 +529,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordStop)
|
if (!server.Profile.AllowDiscordStop)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Stop, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Stop, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Stop);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -506,10 +564,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Stopped:
|
case ServerStatus.Stopped:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -529,7 +587,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -538,7 +597,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, false, false, false, token);
|
app.PerformProfileShutdown(profile, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StopRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StopRequested"), profile.ServerName));
|
||||||
|
|
@ -549,24 +608,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> StartServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> StartServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Start) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Start) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Start);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -575,18 +629,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordStart)
|
if (!server.Profile.AllowDiscordStart)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Start, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Start, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Start);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -594,10 +664,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Running:
|
case ServerStatus.Running:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -617,7 +687,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -626,7 +697,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, true, false, false, token);
|
app.PerformProfileShutdown(profile, true, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StartRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StartRequested"), profile.ServerName));
|
||||||
|
|
@ -637,24 +708,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> UpdateServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> UpdateServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Update) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Update) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Update);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
bool performRestart = false;
|
bool performRestart = false;
|
||||||
|
|
@ -664,31 +730,47 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordUpdate)
|
if (!server.Profile.AllowDiscordUpdate)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Update, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Update, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Update);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
case ServerStatus.Stopping:
|
case ServerStatus.Stopping:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Running:
|
case ServerStatus.Running:
|
||||||
performRestart = true;
|
performRestart = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -707,7 +789,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -716,7 +799,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, performRestart, true, false, token);
|
app.PerformProfileShutdown(profile, performRestart, true, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_UpdateRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_UpdateRequested"), profile.ServerName));
|
||||||
|
|
@ -727,7 +810,7 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
<br/>
|
<br/>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Global Settings - Discord Bot section - Added a whitelist to allow bots to send commands to the server manager.</li>
|
<li>Global Settings - Discord Bot section - Added a whitelist to allow bots to send commands to the server manager.</li>
|
||||||
|
<li>Server Settings - Discord Bot section - Added an alias that can be used with the discord command instead of the profile id.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<u style="font-size: .9em;">CHANGE</u>
|
<u style="font-size: .9em;">CHANGE</u>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,11 @@
|
||||||
<content type="xhtml">
|
<content type="xhtml">
|
||||||
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
|
<div xmlns="http://www.w3.org/1999/xhtml" style="font-family: Arial, Verdana, Helvetica, Sans-Serif;font-size: .8em;">
|
||||||
<p>
|
<p>
|
||||||
|
<u style="font-size: .9em;">NEW</u>
|
||||||
|
<br/>
|
||||||
|
<ul>
|
||||||
|
<li>Server Settings - Discord Bot section - Added an alias that can be used with the discord command instead of the profile id.</li>
|
||||||
|
</ul>
|
||||||
<u style="font-size: .9em;">CHANGE</u>
|
<u style="font-size: .9em;">CHANGE</u>
|
||||||
<br/>
|
<br/>
|
||||||
<ul>
|
<ul>
|
||||||
|
|
|
||||||
|
|
@ -1154,6 +1154,8 @@
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotLabel">Discord Bot Details</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotLabel">Discord Bot Details</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotChannelLabel">Channel Id:</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotChannelLabel">Channel Id:</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_DiscordBotChannelTooltip">The id of the discord server channel this profile will listen to.</sys:String>
|
<sys:String x:Key="ServerSettings_DiscordBotChannelTooltip">The id of the discord server channel this profile will listen to.</sys:String>
|
||||||
|
<sys:String x:Key="ServerSettings_DiscordAliasLabel">Alias:</sys:String>
|
||||||
|
<sys:String x:Key="ServerSettings_DiscordAliasTooltip">A unique name to identify your server when using the discord commands, can be used instead of the profile id.</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordBackupLabel">Allow Backup</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordBackupLabel">Allow Backup</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordBackupTooltip">If enabled, the profile will listen for backup commands from discord.</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordBackupTooltip">If enabled, the profile will listen for backup commands from discord.</sys:String>
|
||||||
<sys:String x:Key="ServerSettings_AllowDiscordRestartLabel">Allow Restart</sys:String>
|
<sys:String x:Key="ServerSettings_AllowDiscordRestartLabel">Allow Restart</sys:String>
|
||||||
|
|
@ -1251,8 +1253,9 @@
|
||||||
<sys:String x:Key="DiscordBot_CommandRunningProfile">Another command '{0}' is currently running against profile '{1}'.</sys:String>
|
<sys:String x:Key="DiscordBot_CommandRunningProfile">Another command '{0}' is currently running against profile '{1}'.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_CommandDisabledProfile">Command '{0}' has been disabled for profile '{1}'.</sys:String>
|
<sys:String x:Key="DiscordBot_CommandDisabledProfile">Command '{0}' has been disabled for profile '{1}'.</sys:String>
|
||||||
|
|
||||||
<sys:String x:Key="DiscordBot_ProfileMissing">The '{0}' command requires a profile id.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileMissing">The '{0}' command requires a profile id or alias.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileNotFound">Profile '{0}' was not found or is not associated with the channel.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileNotFound">Profile '{0}' was not found or is not associated with the channel.</sys:String>
|
||||||
|
<sys:String x:Key="DiscordBot_ProfileMultiples">Multiple profiles with '{0}' were found in the channel, command aborted.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileBadStatus">Profile '{0}' is in a state '{1}' that cannot run this command.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileBadStatus">Profile '{0}' is in a state '{1}' that cannot run this command.</sys:String>
|
||||||
<sys:String x:Key="DiscordBot_ProfileUpdating">Profile '{0}' is currently being updated.</sys:String>
|
<sys:String x:Key="DiscordBot_ProfileUpdating">Profile '{0}' is currently being updated.</sys:String>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -576,6 +576,14 @@ namespace ServerManagerTool.Lib
|
||||||
set { SetValue(DiscordChannelIdProperty, value); }
|
set { SetValue(DiscordChannelIdProperty, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static readonly DependencyProperty DiscordAliasProperty = DependencyProperty.Register(nameof(DiscordAlias), typeof(string), typeof(ServerProfile), new PropertyMetadata(String.Empty));
|
||||||
|
[DataMember]
|
||||||
|
public string DiscordAlias
|
||||||
|
{
|
||||||
|
get { return (string)GetValue(DiscordAliasProperty); }
|
||||||
|
set { SetValue(DiscordAliasProperty, value); }
|
||||||
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty AllowDiscordBackupProperty = DependencyProperty.Register(nameof(AllowDiscordBackup), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
public static readonly DependencyProperty AllowDiscordBackupProperty = DependencyProperty.Register(nameof(AllowDiscordBackup), typeof(bool), typeof(ServerProfile), new PropertyMetadata(true));
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public bool AllowDiscordBackup
|
public bool AllowDiscordBackup
|
||||||
|
|
|
||||||
|
|
@ -1093,6 +1093,9 @@
|
||||||
<Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource ServerSettings_DiscordBotChannelLabel}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalAlignment="Center"/>
|
<Label Grid.Row="0" Grid.Column="0" Content="{DynamicResource ServerSettings_DiscordBotChannelLabel}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalAlignment="Center"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding DiscordChannelId, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="0" Grid.Column="1" Margin="1" Text="{Binding DiscordChannelId, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordBotChannelTooltip}" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
|
<Label Grid.Row="0" Grid.Column="2" Content="{DynamicResource ServerSettings_DiscordAliasLabel}" ToolTip="{DynamicResource ServerSettings_DiscordAliasTooltip}" VerticalAlignment="Center"/>
|
||||||
|
<TextBox Grid.Row="0" Grid.Column="3" Margin="1" Text="{Binding DiscordAlias, Mode=TwoWay}" ToolTip="{DynamicResource ServerSettings_DiscordAliasTooltip}" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordBackup, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordBackupLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordBackupTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordBackup, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordBackupLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordBackupTooltip}"/>
|
||||||
<CheckBox Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordUpdate, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordUpdateLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordUpdateTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordUpdate, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordUpdateLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordUpdateTooltip}"/>
|
||||||
<CheckBox Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordStart, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordStartLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordStartTooltip}"/>
|
<CheckBox Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="5,5,5,0" IsChecked="{Binding AllowDiscordStart, Mode=TwoWay}" Content="{DynamicResource ServerSettings_AllowDiscordStartLabel}" HorizontalAlignment="Left" ToolTip="{DynamicResource ServerSettings_AllowDiscordStartTooltip}"/>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,6 @@ using ServerManagerTool.Enums;
|
||||||
using ServerManagerTool.Lib;
|
using ServerManagerTool.Lib;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
@ -23,7 +22,7 @@ namespace ServerManagerTool.Utils
|
||||||
|
|
||||||
public static bool HasRunningCommands => _currentProfileCommands.Count > 0;
|
public static bool HasRunningCommands => _currentProfileCommands.Count > 0;
|
||||||
|
|
||||||
public static IList<string> HandleDiscordCommand(CommandType commandType, string serverId, string channelId, string profileId, CancellationToken token)
|
public static IList<string> HandleDiscordCommand(CommandType commandType, string serverId, string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
// check if incoming values are valid
|
// check if incoming values are valid
|
||||||
if (string.IsNullOrWhiteSpace(serverId) || string.IsNullOrWhiteSpace(channelId))
|
if (string.IsNullOrWhiteSpace(serverId) || string.IsNullOrWhiteSpace(channelId))
|
||||||
|
|
@ -42,35 +41,35 @@ namespace ServerManagerTool.Utils
|
||||||
switch (commandType)
|
switch (commandType)
|
||||||
{
|
{
|
||||||
case CommandType.Info:
|
case CommandType.Info:
|
||||||
return GetServerInfo(channelId, profileId);
|
return GetServerInfo(channelId, profileIdOrAlias);
|
||||||
case CommandType.List:
|
case CommandType.List:
|
||||||
return GetServerList(channelId);
|
return GetServerList(channelId);
|
||||||
case CommandType.Status:
|
case CommandType.Status:
|
||||||
return GetServerStatus(channelId, profileId);
|
return GetServerStatus(channelId, profileIdOrAlias);
|
||||||
|
|
||||||
case CommandType.Backup:
|
case CommandType.Backup:
|
||||||
if (Config.Default.AllowDiscordBackup)
|
if (Config.Default.AllowDiscordBackup)
|
||||||
return BackupServer(channelId, profileId, token);
|
return BackupServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Restart:
|
case CommandType.Restart:
|
||||||
if (Config.Default.AllowDiscordRestart)
|
if (Config.Default.AllowDiscordRestart)
|
||||||
return RestartServer(channelId, profileId, token);
|
return RestartServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Shutdown:
|
case CommandType.Shutdown:
|
||||||
if (Config.Default.AllowDiscordShutdown)
|
if (Config.Default.AllowDiscordShutdown)
|
||||||
return ShutdownServer(channelId, profileId, token);
|
return ShutdownServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Stop:
|
case CommandType.Stop:
|
||||||
if (Config.Default.AllowDiscordStop)
|
if (Config.Default.AllowDiscordStop)
|
||||||
return StopServer(channelId, profileId, token);
|
return StopServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Start:
|
case CommandType.Start:
|
||||||
if (Config.Default.AllowDiscordStart)
|
if (Config.Default.AllowDiscordStart)
|
||||||
return StartServer(channelId, profileId, token);
|
return StartServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
case CommandType.Update:
|
case CommandType.Update:
|
||||||
if (Config.Default.AllowDiscordUpdate)
|
if (Config.Default.AllowDiscordUpdate)
|
||||||
return UpdateServer(channelId, profileId, token);
|
return UpdateServer(channelId, profileIdOrAlias, token);
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandNotEnabled"), commandType) };
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -93,19 +92,14 @@ namespace ServerManagerTool.Utils
|
||||||
return string.IsNullOrWhiteSpace(translationKey) ? string.Empty : _globalizer.GetResourceString(translationKey) ?? translationKey;
|
return string.IsNullOrWhiteSpace(translationKey) ? string.Empty : _globalizer.GetResourceString(translationKey) ?? translationKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> GetServerInfo(string channelId, string profileId)
|
private static IList<string> GetServerInfo(string channelId, string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Info) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Info) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Info);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -115,12 +109,28 @@ namespace ServerManagerTool.Utils
|
||||||
|
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Info);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
|
|
@ -130,7 +140,7 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
}
|
}
|
||||||
|
|
||||||
serverName = server.Profile.ServerName;
|
serverName = server.Profile.ServerName;
|
||||||
|
|
@ -168,7 +178,7 @@ namespace ServerManagerTool.Utils
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -183,20 +193,21 @@ namespace ServerManagerTool.Utils
|
||||||
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
||||||
foreach (var server in serverList)
|
foreach (var server in serverList)
|
||||||
{
|
{
|
||||||
response.Add($"```{_globalizer.GetResourceString("ServerSettings_ProfileIdLabel")} {server.Profile.ProfileID}\n{_globalizer.GetResourceString("ServerSettings_ProfileLabel")} {server.Profile.ProfileName}\n{_globalizer.GetResourceString("ServerSettings_ServerNameLabel")} {server.Profile.ServerName}```");
|
response.Add($"```{_globalizer.GetResourceString("ServerSettings_ProfileIdLabel")} {server.Profile.ProfileID}\n{_globalizer.GetResourceString("ServerSettings_DiscordAliasLabel")} {server.Profile.DiscordAlias}\n{_globalizer.GetResourceString("ServerSettings_ProfileLabel")} {server.Profile.ProfileName}\n{_globalizer.GetResourceString("ServerSettings_ServerNameLabel")} {server.Profile.ServerName}```");
|
||||||
}
|
}
|
||||||
}).Wait();
|
}).Wait();
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> GetServerStatus(string channelId, string profileId)
|
private static IList<string> GetServerStatus(string channelId, string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
List<string> response = new List<string>();
|
List<string> response = new List<string>();
|
||||||
|
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId) && (string.IsNullOrWhiteSpace(profileId) || Equals(profileId, s.Profile.ProfileID)));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (string.IsNullOrWhiteSpace(profileIdOrAlias) || Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
response.Add($"**{_globalizer.GetResourceString("DiscordBot_CountLabel")}** {serverList.Count()}");
|
||||||
foreach (var server in serverList)
|
foreach (var server in serverList)
|
||||||
|
|
@ -208,19 +219,14 @@ namespace ServerManagerTool.Utils
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> BackupServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> BackupServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Backup) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Backup) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Backup);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -229,18 +235,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordBackup)
|
if (!server.Profile.AllowDiscordBackup)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Backup, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Backup, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Backup);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -248,7 +270,7 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -267,7 +289,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -276,7 +299,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileBackup(profile, token);
|
app.PerformProfileBackup(profile, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_BackupRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_BackupRequested"), profile.ServerName));
|
||||||
|
|
@ -287,24 +310,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> RestartServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> RestartServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Restart) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Restart) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Restart);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -313,28 +331,44 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordRestart)
|
if (!server.Profile.AllowDiscordRestart)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Restart, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Restart, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Restart);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
case ServerStatus.Stopping:
|
case ServerStatus.Stopping:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -354,7 +388,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -363,7 +398,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, true, false, false, false, token);
|
app.PerformProfileShutdown(profile, true, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_RestartRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_RestartRequested"), profile.ServerName));
|
||||||
|
|
@ -374,24 +409,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> ShutdownServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> ShutdownServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Shutdown) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Shutdown) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Shutdown);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -400,18 +430,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordShutdown)
|
if (!server.Profile.AllowDiscordShutdown)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Shutdown, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Shutdown, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Shutdown);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -419,10 +465,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Stopped:
|
case ServerStatus.Stopped:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -441,7 +487,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -450,7 +497,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, false, false, false, false, token);
|
app.PerformProfileShutdown(profile, false, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_ShutdownRequested"), profile.ServerName));
|
||||||
|
|
@ -461,24 +508,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> StopServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> StopServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Stop) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Stop) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Stop);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -487,18 +529,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordStop)
|
if (!server.Profile.AllowDiscordStop)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Stop, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Stop, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Stop);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -506,10 +564,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Stopped:
|
case ServerStatus.Stopped:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -529,7 +587,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -538,7 +597,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, false, false, false, false, token);
|
app.PerformProfileShutdown(profile, false, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StopRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StopRequested"), profile.ServerName));
|
||||||
|
|
@ -549,24 +608,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> StartServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> StartServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Start) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Start) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Start);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
Task task = null;
|
Task task = null;
|
||||||
|
|
@ -575,18 +629,34 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordStart)
|
if (!server.Profile.AllowDiscordStart)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Start, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Start, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Start);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
|
|
@ -594,10 +664,10 @@ namespace ServerManagerTool.Utils
|
||||||
case ServerStatus.Running:
|
case ServerStatus.Running:
|
||||||
case ServerStatus.Uninstalled:
|
case ServerStatus.Uninstalled:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -617,7 +687,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -626,7 +697,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, true, false, false, false, token);
|
app.PerformProfileShutdown(profile, true, false, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StartRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_StartRequested"), profile.ServerName));
|
||||||
|
|
@ -637,24 +708,19 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static IList<string> UpdateServer(string channelId, string profileId, CancellationToken token)
|
private static IList<string> UpdateServer(string channelId, string profileIdOrAlias, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(profileId))
|
if (string.IsNullOrWhiteSpace(profileIdOrAlias))
|
||||||
{
|
{
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Update) };
|
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMissing"), CommandType.Update) };
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if another command is being run against the profile
|
var key = string.Empty;
|
||||||
if (_currentProfileCommands.ContainsKey(profileId))
|
|
||||||
{
|
|
||||||
return new List<string> { string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[profileId], profileId) };
|
|
||||||
}
|
|
||||||
_currentProfileCommands.Add(profileId, CommandType.Update);
|
|
||||||
|
|
||||||
ServerProfileSnapshot profile = null;
|
ServerProfileSnapshot profile = null;
|
||||||
bool performRestart = false;
|
bool performRestart = false;
|
||||||
|
|
@ -664,31 +730,47 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var serverList = ServerManager.Instance.Servers.Where(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
|
|
||||||
if (server is null)
|
if (!serverList.Any())
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileNotFound"), profileIdOrAlias));
|
||||||
}
|
}
|
||||||
|
if (serverList.Count() > 1)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileMultiples"), profileIdOrAlias));
|
||||||
|
}
|
||||||
|
|
||||||
|
var server = serverList.First();
|
||||||
|
|
||||||
if (!server.Profile.AllowDiscordUpdate)
|
if (!server.Profile.AllowDiscordUpdate)
|
||||||
{
|
{
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Update, profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandDisabledProfile"), CommandType.Update, server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if another command is being run against the profile
|
||||||
|
if (_currentProfileCommands.ContainsKey(server.Profile.ProfileID))
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_CommandRunningProfile"), _currentProfileCommands[server.Profile.ProfileID], server.Profile.ProfileName));
|
||||||
|
}
|
||||||
|
|
||||||
|
key = server.Profile.ProfileID;
|
||||||
|
_currentProfileCommands.Add(key, CommandType.Update);
|
||||||
|
|
||||||
switch (server.Runtime.Status)
|
switch (server.Runtime.Status)
|
||||||
{
|
{
|
||||||
case ServerStatus.Initializing:
|
case ServerStatus.Initializing:
|
||||||
case ServerStatus.Stopping:
|
case ServerStatus.Stopping:
|
||||||
case ServerStatus.Unknown:
|
case ServerStatus.Unknown:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), profileId, server.Runtime.StatusString));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileBadStatus"), server.Profile.ProfileName, server.Runtime.StatusString));
|
||||||
|
|
||||||
case ServerStatus.Running:
|
case ServerStatus.Running:
|
||||||
performRestart = true;
|
performRestart = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ServerStatus.Updating:
|
case ServerStatus.Updating:
|
||||||
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), profileId));
|
throw new Exception(string.Format(_globalizer.GetResourceString("DiscordBot_ProfileUpdating"), server.Profile.ProfileName));
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = ServerProfileSnapshot.Create(server.Profile);
|
profile = ServerProfileSnapshot.Create(server.Profile);
|
||||||
|
|
@ -707,7 +789,8 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
TaskUtils.RunOnUIThreadAsync(() =>
|
TaskUtils.RunOnUIThreadAsync(() =>
|
||||||
{
|
{
|
||||||
var server = ServerManager.Instance.Servers.FirstOrDefault(s => Equals(channelId, s.Profile.DiscordChannelId) && Equals(profileId, s.Profile.ProfileID));
|
var server = ServerManager.Instance.Servers.First(s => Equals(channelId, s.Profile.DiscordChannelId)
|
||||||
|
&& (Equals(profileIdOrAlias, s.Profile.ProfileID) || !string.IsNullOrWhiteSpace(s.Profile.DiscordAlias) && Equals(profileIdOrAlias, s.Profile.DiscordAlias)));
|
||||||
server.Runtime.UpdateServerStatus(serverStatus, true);
|
server.Runtime.UpdateServerStatus(serverStatus, true);
|
||||||
}).Wait();
|
}).Wait();
|
||||||
}
|
}
|
||||||
|
|
@ -716,7 +799,7 @@ namespace ServerManagerTool.Utils
|
||||||
task = Task.Run(() =>
|
task = Task.Run(() =>
|
||||||
{
|
{
|
||||||
app.PerformProfileShutdown(profile, performRestart, true, false, false, token);
|
app.PerformProfileShutdown(profile, performRestart, true, false, false, token);
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
});
|
});
|
||||||
|
|
||||||
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_UpdateRequested"), profile.ServerName));
|
response.Add(string.Format(_globalizer.GetResourceString("DiscordBot_UpdateRequested"), profile.ServerName));
|
||||||
|
|
@ -727,7 +810,7 @@ namespace ServerManagerTool.Utils
|
||||||
{
|
{
|
||||||
if (task is null)
|
if (task is null)
|
||||||
{
|
{
|
||||||
_currentProfileCommands.Remove(profileId);
|
_currentProfileCommands.Remove(key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
<id>urn:uuid:19B09A66-43F2-4D5F-AF33-5C77D7EA9A6B</id>
|
<id>urn:uuid:19B09A66-43F2-4D5F-AF33-5C77D7EA9A6B</id>
|
||||||
<title>1.1.58 (1.1.58.2)</title>
|
<title>1.1.58 (1.1.58.3)</title>
|
||||||
<summary>1.1.58.2</summary>
|
<summary>1.1.58.3</summary>
|
||||||
<link href="" />
|
<link href="" />
|
||||||
<updated>2021-12-16T00:00:00Z</updated>
|
<updated>2021-12-16T00:00:00Z</updated>
|
||||||
<content type="xhtml">
|
<content type="xhtml">
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
<br/>
|
<br/>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Global Settings - Discord Bot section - Added a whitelist to allow bots to send commands to the server manager.</li>
|
<li>Global Settings - Discord Bot section - Added a whitelist to allow bots to send commands to the server manager.</li>
|
||||||
|
<li>Server Settings - Discord Bot section - Added an alias that can be used with the discord command instead of the profile id.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<u style="font-size: .9em;">CHANGE</u>
|
<u style="font-size: .9em;">CHANGE</u>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,29 @@
|
||||||
<link href="http://servermanagers.freeforums.net/" />
|
<link href="http://servermanagers.freeforums.net/" />
|
||||||
<updated>2021-12-16T00:00:00Z</updated>
|
<updated>2021-12-16T00:00:00Z</updated>
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<id>urn:uuid:F3C22842-A089-46F7-AB1A-5D3DED105412</id>
|
||||||
|
<title>1.1.58 (1.1.58.3)</title>
|
||||||
|
<summary>1.1.58.3</summary>
|
||||||
|
<link href="" />
|
||||||
|
<updated>2021-12-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>Server Settings - Discord Bot section - Added an alias that can be used with the discord command instead of the profile id.</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</content>
|
||||||
|
<author>
|
||||||
|
<name>bletch</name>
|
||||||
|
<email>bletch1971@hotmail.com</email>
|
||||||
|
</author>
|
||||||
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
<id>urn:uuid:C566D9D2-3566-46DF-8AD4-39F5FC0FFEF2</id>
|
<id>urn:uuid:C566D9D2-3566-46DF-8AD4-39F5FC0FFEF2</id>
|
||||||
<title>1.1.58 (1.1.58.2)</title>
|
<title>1.1.58 (1.1.58.2)</title>
|
||||||
|
|
|
||||||
|
|
@ -4,5 +4,5 @@ using System.Threading;
|
||||||
|
|
||||||
namespace ServerManagerTool.DiscordBot.Delegates
|
namespace ServerManagerTool.DiscordBot.Delegates
|
||||||
{
|
{
|
||||||
public delegate IList<string> HandleCommandDelegate(CommandType commandType, string serverId, string channelId, string profileId, CancellationToken token);
|
public delegate IList<string> HandleCommandDelegate(CommandType commandType, string serverId, string channelId, string profileIdOrAlias, CancellationToken token);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,16 +29,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("backup", RunMode = RunMode.Async)]
|
[Command("backup", RunMode = RunMode.Async)]
|
||||||
[Summary("Backup the server")]
|
[Summary("Backup the server")]
|
||||||
[Remarks("backup profileId")]
|
[Remarks("backup profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task BackupServerAsync(string profileId)
|
public async Task BackupServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Backup, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Backup, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -60,16 +60,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("restart", RunMode = RunMode.Async)]
|
[Command("restart", RunMode = RunMode.Async)]
|
||||||
[Summary("Restart the server")]
|
[Summary("Restart the server")]
|
||||||
[Remarks("restart profileId")]
|
[Remarks("restart profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task RestartServerAsync(string profileId)
|
public async Task RestartServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Restart, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Restart, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -91,16 +91,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("shutdown", RunMode = RunMode.Async)]
|
[Command("shutdown", RunMode = RunMode.Async)]
|
||||||
[Summary("Shuts down the server properly")]
|
[Summary("Shuts down the server properly")]
|
||||||
[Remarks("shutdown profileId")]
|
[Remarks("shutdown profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task ShutdownServerAsync(string profileId)
|
public async Task ShutdownServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Shutdown, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Shutdown, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -122,16 +122,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("start", RunMode = RunMode.Async)]
|
[Command("start", RunMode = RunMode.Async)]
|
||||||
[Summary("Starts the server")]
|
[Summary("Starts the server")]
|
||||||
[Remarks("start profileId")]
|
[Remarks("start profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task StartServerAsync(string profileId)
|
public async Task StartServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Start, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Start, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -153,16 +153,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("stop", RunMode = RunMode.Async)]
|
[Command("stop", RunMode = RunMode.Async)]
|
||||||
[Summary("Forcibly stops the server")]
|
[Summary("Forcibly stops the server")]
|
||||||
[Remarks("stop profileId")]
|
[Remarks("stop profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task StopServerAsync(string profileId)
|
public async Task StopServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Stop, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Stop, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -184,16 +184,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("update", RunMode = RunMode.Async)]
|
[Command("update", RunMode = RunMode.Async)]
|
||||||
[Summary("Updates the server")]
|
[Summary("Updates the server")]
|
||||||
[Remarks("update profileId")]
|
[Remarks("update profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task UpdateServerAsync(string profileId)
|
public async Task UpdateServerAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Update, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Update, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
|
||||||
|
|
@ -38,16 +38,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("info", RunMode = RunMode.Async)]
|
[Command("info", RunMode = RunMode.Async)]
|
||||||
[Summary("Poll server for information")]
|
[Summary("Poll server for information")]
|
||||||
[Remarks("info profileId")]
|
[Remarks("info profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task ServerInfoAsync(string profileId)
|
public async Task ServerInfoAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Info, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Info, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
@ -109,16 +109,16 @@ namespace ServerManagerTool.DiscordBot.Modules
|
||||||
|
|
||||||
[Command("status", RunMode = RunMode.Async)]
|
[Command("status", RunMode = RunMode.Async)]
|
||||||
[Summary("Poll server for status")]
|
[Summary("Poll server for status")]
|
||||||
[Remarks("status profileId")]
|
[Remarks("status profileId|alias")]
|
||||||
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
[RequireBotPermission(ChannelPermission.ViewChannel | ChannelPermission.SendMessages)]
|
||||||
public async Task ServerStatusAsync(string profileId)
|
public async Task ServerStatusAsync(string profileIdOrAlias)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
var serverId = Context?.Guild?.Id.ToString() ?? string.Empty;
|
||||||
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
var channelId = Context?.Channel?.Id.ToString() ?? string.Empty;
|
||||||
|
|
||||||
var response = _handleCommandCallback?.Invoke(CommandType.Status, serverId, channelId, profileId, _serverManagerBot.Token);
|
var response = _handleCommandCallback?.Invoke(CommandType.Status, serverId, channelId, profileIdOrAlias, _serverManagerBot.Token);
|
||||||
if (response is null)
|
if (response is null)
|
||||||
{
|
{
|
||||||
await ReplyAsync("No servers associated with this channel.");
|
await ReplyAsync("No servers associated with this channel.");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue