diff --git a/src/ARKServerManager/Lib/ServerProfile.cs b/src/ARKServerManager/Lib/ServerProfile.cs index df939a7c..fcea7349 100644 --- a/src/ARKServerManager/Lib/ServerProfile.cs +++ b/src/ARKServerManager/Lib/ServerProfile.cs @@ -3473,9 +3473,7 @@ namespace ServerManagerTool.Lib { InstallDirectory = folder; - LoadServerFileAdministrators(); - LoadServerFileExclusive(); - LoadServerFileWhitelisted(); + LoadServerFiles(true, true, true); SetupServerFilesWatcher(); } @@ -3561,9 +3559,7 @@ namespace ServerManagerTool.Lib settings.MutagenLevelBoostBred.Reset(); settings.PerLevelStatsMultiplier_Player.Reset(); settings.PlayerBaseStatMultipliers.Reset(); - settings.LoadServerFileAdministrators(); - settings.LoadServerFileExclusive(); - settings.LoadServerFileWhitelisted(); + settings.LoadServerFiles(true, true, true); settings.SetupServerFilesWatcher(); return settings; } @@ -4140,9 +4136,7 @@ namespace ServerManagerTool.Lib if (Config.Default.SectionPreventTransferOverridesEnabled) profile.PreventTransferForClassNames.RenderToView(); - profile.LoadServerFileAdministrators(); - profile.LoadServerFileExclusive(); - profile.LoadServerFileWhitelisted(); + profile.LoadServerFiles(true, true, true); profile.SetupServerFilesWatcher(); profile._lastSaveLocation = file; @@ -6364,18 +6358,24 @@ namespace ServerManagerTool.Lib #region Server Files private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e) { + var adminFile = false; + var exclusiveFile = false; + var whitelistFile = false; + if (e.Name.Equals(Config.Default.ArkAdminFile, StringComparison.OrdinalIgnoreCase)) { - TaskUtils.RunOnUIThreadAsync(() => LoadServerFileAdministrators()).DoNotWait(); + adminFile = true; } - else if (e.Name.Equals(Config.Default.ArkExclusiveFile, StringComparison.OrdinalIgnoreCase)) + if (e.Name.Equals(Config.Default.ArkExclusiveFile, StringComparison.OrdinalIgnoreCase)) { - TaskUtils.RunOnUIThreadAsync(() => LoadServerFileExclusive()).DoNotWait(); + exclusiveFile = true; } - else if (e.Name.Equals(Config.Default.ArkWhitelistFile, StringComparison.OrdinalIgnoreCase)) + if (e.Name.Equals(Config.Default.ArkWhitelistFile, StringComparison.OrdinalIgnoreCase)) { - TaskUtils.RunOnUIThreadAsync(() => LoadServerFileWhitelisted()).DoNotWait(); + whitelistFile = true; } + + TaskUtils.RunOnUIThreadAsync(() => LoadServerFiles(adminFile, exclusiveFile, whitelistFile)).DoNotWait(); } private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e) @@ -6447,74 +6447,76 @@ namespace ServerManagerTool.Lib _serverFilesWatcherSaved.EnableRaisingEvents = true; } - public void LoadServerFileAdministrators() + public void LoadServerFiles(bool adminFile, bool exclusiveFile, bool whitelistFile) { try { - var list = this.ServerFilesAdmins ?? new PlayerUserList(); + var list1 = this.ServerFilesAdmins ?? new PlayerUserList(); + var list2 = this.ServerFilesExclusive ?? new PlayerUserList(); + var list3 = this.ServerFilesWhitelisted ?? new PlayerUserList(); - var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile); - if (File.Exists(file)) + var allSteamIds = new List(); + string[] adminSteamIds = null; + string[] exclusiveSteamIds = null; + string[] whitelistSteamIds = null; + + if (adminFile) { - var steamIds = File.ReadAllLines(file); - var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); - - list = PlayerUserList.GetList(steamUsers, steamIds); + var file = Path.Combine(InstallDirectory, Config.Default.SavedRelativePath, Config.Default.ArkAdminFile); + if (File.Exists(file)) + { + adminSteamIds = File.ReadAllLines(file); + allSteamIds.AddRange(adminSteamIds); + } } - this.ServerFilesAdmins = list; + if (exclusiveFile) + { + var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkExclusiveFile); + if (File.Exists(file)) + { + exclusiveSteamIds = File.ReadAllLines(file); + allSteamIds.AddRange(exclusiveSteamIds); + } + } + + if (whitelistFile) + { + var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkWhitelistFile); + if (File.Exists(file)) + { + whitelistSteamIds = File.ReadAllLines(file); + allSteamIds.AddRange(whitelistSteamIds); + } + } + + // remove all duplicates + allSteamIds = allSteamIds.Distinct().ToList(); + + // fetch the details of all steam users in the list + var steamUsers = SteamUtils.GetSteamUserDetails(allSteamIds); + + if (adminFile && adminSteamIds != null) + { + list1 = PlayerUserList.GetList(steamUsers, adminSteamIds); + } + + if (exclusiveFile && exclusiveSteamIds != null) + { + list2 = PlayerUserList.GetList(steamUsers, exclusiveSteamIds); + } + + if (whitelistFile && whitelistSteamIds != null) + { + list3 = PlayerUserList.GetList(steamUsers, whitelistSteamIds); + } + + this.ServerFilesAdmins = list1; + this.ServerFilesExclusive = list2; + this.ServerFilesWhitelisted = list3; } catch (Exception ex) { - this.ServerFilesAdmins = new PlayerUserList(); - MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - } - - public void LoadServerFileExclusive() - { - try - { - var list = this.ServerFilesExclusive ?? new PlayerUserList(); - - var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkExclusiveFile); - if (File.Exists(file)) - { - var steamIds = File.ReadAllLines(file); - var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); - - list = PlayerUserList.GetList(steamUsers, steamIds); - } - - this.ServerFilesExclusive = list; - } - catch (Exception ex) - { - this.ServerFilesExclusive = new PlayerUserList(); - MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - } - - public void LoadServerFileWhitelisted() - { - try - { - var list = this.ServerFilesWhitelisted ?? new PlayerUserList(); - - var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ArkWhitelistFile); - if (File.Exists(file)) - { - var steamIds = File.ReadAllLines(file); - var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); - - list = PlayerUserList.GetList(steamUsers, steamIds); - } - - this.ServerFilesWhitelisted = list; - } - catch (Exception ex) - { - this.ServerFilesWhitelisted = new PlayerUserList(); MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); } } diff --git a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs index 4e39d153..f4bb2897 100644 --- a/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs +++ b/src/ARKServerManager/UserControls/ServerSettingsControl.xaml.cs @@ -2693,7 +2693,7 @@ namespace ServerManagerTool Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); await Task.Delay(500); - Settings.LoadServerFileAdministrators(); + Settings.LoadServerFiles(true, false, false); } catch (Exception ex) { @@ -2714,7 +2714,7 @@ namespace ServerManagerTool Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); await Task.Delay(500); - Settings.LoadServerFileExclusive(); + Settings.LoadServerFiles(false, true, false); } catch (Exception ex) { @@ -2735,7 +2735,7 @@ namespace ServerManagerTool Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); await Task.Delay(500); - Settings.LoadServerFileWhitelisted(); + Settings.LoadServerFiles(false, false, true); } catch (Exception ex) { diff --git a/src/ConanServerManager/Lib/ServerProfile.cs b/src/ConanServerManager/Lib/ServerProfile.cs index 9e6531e3..1fc71af3 100644 --- a/src/ConanServerManager/Lib/ServerProfile.cs +++ b/src/ConanServerManager/Lib/ServerProfile.cs @@ -688,8 +688,7 @@ namespace ServerManagerTool.Lib { InstallDirectory = folder; - LoadServerFileBlacklisted(); - LoadServerFileWhitelisted(); + LoadServerFiles(true, true); SetupServerFilesWatcher(); } @@ -759,8 +758,7 @@ namespace ServerManagerTool.Lib internal static ServerProfile FromDefaults() { var settings = new ServerProfile(); - settings.LoadServerFileBlacklisted(); - settings.LoadServerFileWhitelisted(); + settings.LoadServerFiles(true, true); settings.SetupServerFilesWatcher(); return settings; } @@ -949,8 +947,7 @@ namespace ServerManagerTool.Lib profile = LoadFromConfigFiles(serverConfigFile, profile); } - profile.LoadServerFileBlacklisted(); - profile.LoadServerFileWhitelisted(); + profile.LoadServerFiles(true, true); profile.SetupServerFilesWatcher(); profile._lastSaveLocation = file; @@ -1536,14 +1533,19 @@ namespace ServerManagerTool.Lib #region Server Files private void ServerFilesWatcher_Changed(object sender, FileSystemEventArgs e) { + var blacklistFile = false; + var whitelistFile = false; + if (e.Name.Equals(Config.Default.ServerBlacklistFile, StringComparison.OrdinalIgnoreCase)) { - TaskUtils.RunOnUIThreadAsync(() => LoadServerFileBlacklisted()).DoNotWait(); + blacklistFile = true; } if (e.Name.Equals(Config.Default.ServerWhitelistFile, StringComparison.OrdinalIgnoreCase)) { - TaskUtils.RunOnUIThreadAsync(() => LoadServerFileWhitelisted()).DoNotWait(); + whitelistFile = true; } + + TaskUtils.RunOnUIThreadAsync(() => LoadServerFiles(blacklistFile, whitelistFile)).DoNotWait(); } private void ServerFilesWatcher_Error(object sender, ErrorEventArgs e) @@ -1589,58 +1591,58 @@ namespace ServerManagerTool.Lib _serverFilesWatcher.EnableRaisingEvents = true; } - public void LoadServerFileBlacklisted() + public void LoadServerFiles(bool blacklistFile, bool whitelistFile) { try { - var list = this.ServerFilesBlacklisted ?? new PlayerUserList(); + var list1 = this.ServerFilesBlacklisted ?? new PlayerUserList(); + var list2 = this.ServerFilesWhitelisted ?? new PlayerUserList(); - var file = Path.Combine(InstallDirectory, Config.Default.SavedFilesRelativePath, Config.Default.ServerBlacklistFile); - if (File.Exists(file)) + var allSteamIds = new List(); + string[] blacklistSteamIds = null; + string[] whitelistSteamIds = null; + + if (blacklistFile) { - var steamIds = File.ReadAllLines(file); - var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); - - list = PlayerUserList.GetList(steamUsers, steamIds); + var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ServerBlacklistFile); + if (File.Exists(file)) + { + blacklistSteamIds = File.ReadAllLines(file); + allSteamIds.AddRange(blacklistSteamIds); + } } - this.ServerFilesBlacklisted = list; - } - catch (IOException) - { - // do nothing + if (whitelistFile) + { + var file = Path.Combine(InstallDirectory, Config.Default.ServerBinaryRelativePath, Config.Default.ServerWhitelistFile); + if (File.Exists(file)) + { + whitelistSteamIds = File.ReadAllLines(file); + allSteamIds.AddRange(whitelistSteamIds); + } + } + + // remove all duplicates + allSteamIds = allSteamIds.Distinct().ToList(); + + // fetch the details of all steam users in the list + var steamUsers = SteamUtils.GetSteamUserDetails(allSteamIds); + + if (blacklistFile && blacklistSteamIds != null) + { + list1 = PlayerUserList.GetList(steamUsers, blacklistSteamIds); + } + + if (whitelistFile && whitelistSteamIds != null) + { + list2 = PlayerUserList.GetList(steamUsers, whitelistSteamIds); + } + + this.ServerFilesBlacklisted = list1; + this.ServerFilesWhitelisted = list2; } catch (Exception ex) { - this.ServerFilesBlacklisted = new PlayerUserList(); - MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - } - - public void LoadServerFileWhitelisted() - { - try - { - var list = this.ServerFilesWhitelisted ?? new PlayerUserList(); - - var file = Path.Combine(InstallDirectory, Config.Default.SavedFilesRelativePath, Config.Default.ServerWhitelistFile); - if (File.Exists(file)) - { - var steamIds = File.ReadAllLines(file); - var steamUsers = SteamUtils.GetSteamUserDetails(steamIds.ToList()); - - list = PlayerUserList.GetList(steamUsers, steamIds); - } - - this.ServerFilesWhitelisted = list; - } - catch (IOException) - { - // do nothing - } - catch (Exception ex) - { - this.ServerFilesWhitelisted = new PlayerUserList(); MessageBox.Show(ex.Message, _globalizer.GetResourceString("ServerSettings_ServerFilesLoadErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); } } diff --git a/src/ConanServerManager/UserControls/ServerSettingsControl.xaml.cs b/src/ConanServerManager/UserControls/ServerSettingsControl.xaml.cs index 615db47b..622295a7 100644 --- a/src/ConanServerManager/UserControls/ServerSettingsControl.xaml.cs +++ b/src/ConanServerManager/UserControls/ServerSettingsControl.xaml.cs @@ -1130,7 +1130,7 @@ namespace ServerManagerTool Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); await Task.Delay(500); - Settings.LoadServerFileBlacklisted(); + Settings.LoadServerFiles(true, false); } catch (Exception ex) { @@ -1151,7 +1151,7 @@ namespace ServerManagerTool Application.Current.Dispatcher.Invoke(() => this.Cursor = Cursors.Wait); await Task.Delay(500); - Settings.LoadServerFileWhitelisted(); + Settings.LoadServerFiles(false, true); } catch (Exception ex) {