private void RCON_Click(object sender, RoutedEventArgs e) { var window = new OpenRCONWindow(); window.Closed += Window_Closed; window.Owner = this; window.ShowDialog(); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; _globalizer = GlobalizedApplication.Instance; try { if (!string.IsNullOrWhiteSpace(Config.Default.CultureName)) { _globalizer.GlobalizationManager.SwitchLanguage(Config.Default.CultureName, true); } } catch (CultureNotFoundException ex) { // just output the exception message, it should default back to the fallback language. Debug.WriteLine(ex.Message); } if (!string.IsNullOrWhiteSpace(Config.Default.StyleName)) { _globalizer.StyleManager.SwitchStyle($"{Config.Default.StyleName}.xaml"); } Args = string.Join(" ", e.Args); // check if we are starting ASM for server restart if (e.Args.Any(a => a.Equals(ARG_BETA))) { BetaVersion = true; } var installPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); PluginHelper.Instance.BetaEnabled = BetaVersion; PluginHelper.Instance.LoadPlugins(installPath, true); // check if we are starting ASM for the old server restart - no longer supported if (e.Args.Any(a => a.StartsWith(ARG_AUTORESTART))) { // just exit Environment.Exit(0); } // check if we are starting ASM for server shutdown if (e.Args.Any(a => a.StartsWith(ARG_AUTOSHUTDOWN1))) { var arg = e.Args.FirstOrDefault(a => a.StartsWith(ARG_AUTOSHUTDOWN1)); var exitCode = ServerApp.PerformAutoShutdown(arg, ServerApp.ServerProcessType.AutoShutdown1); // once we are finished, just exit Environment.Exit(exitCode); } // check if we are starting ASM for server shutdown if (e.Args.Any(a => a.StartsWith(ARG_AUTOSHUTDOWN2))) { var arg = e.Args.FirstOrDefault(a => a.StartsWith(ARG_AUTOSHUTDOWN2)); var exitCode = ServerApp.PerformAutoShutdown(arg, ServerApp.ServerProcessType.AutoShutdown2); // once we are finished, just exit Environment.Exit(exitCode); } // check if we are starting ASM for server updating if (e.Args.Any(a => a.Equals(ARG_AUTOUPDATE))) { var exitCode = ServerApp.PerformAutoUpdate(); // once we are finished, just exit Environment.Exit(exitCode); } // check if we are starting ASM for server backups if (e.Args.Any(a => a.Equals(ARG_AUTOBACKUP))) { var exitCode = ServerApp.PerformAutoBackup(); // once we are finished, just exit Environment.Exit(exitCode); } // check if we are starting ASM for server updating if (e.Args.Any(a => a.Equals(ARG_RCON))) { var rcon = new OpenRCONWindow(); rcon.ShowInTaskbar = true; rcon.WindowStartupLocation = WindowStartupLocation.CenterScreen; rcon.ShowDialog(); Config.Default.Save(); // once we are finished, just exit Environment.Exit(0); } if (Config.Default.RunAsAdministratorPrompt && !SecurityUtils.IsAdministrator()) { var result = MessageBox.Show(_globalizer.GetResourceString("Application_RunAsAdministratorLabel"), _globalizer.GetResourceString("Application_RunAsAdministratorTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase); // The following properties run the new process as administrator processInfo.UseShellExecute = true; processInfo.Verb = "runas"; processInfo.Arguments = string.Join(" ", e.Args); // Start the new process try { Process.Start(processInfo); // Shut down the current process Application.Current.Shutdown(0); return; } catch (Exception) { // The user did not allow the application to run as administrator MessageBox.Show(_globalizer.GetResourceString("Application_RunAsAdministrator_FailedLabel"), _globalizer.GetResourceString("Application_RunAsAdministrator_FailedTitle"), MessageBoxButton.OK, MessageBoxImage.Error); } } } // check if application is already running if (ProcessUtils.IsAlreadyRunning()) { var result = MessageBox.Show(_globalizer.GetResourceString("Application_SingleInstanceLabel"), _globalizer.GetResourceString("Application_SingleInstanceTitle"), MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { if (ProcessUtils.SwitchToCurrentInstance()) { // Shut down the current process Application.Current.Shutdown(0); return; } MessageBox.Show(_globalizer.GetResourceString("Application_SingleInstance_FailedLabel"), _globalizer.GetResourceString("Application_SingleInstance_FailedTitle"), MessageBoxButton.OK, MessageBoxImage.Error); } } ApplicationStarted = true; // Initial configuration setting if (String.IsNullOrWhiteSpace(Config.Default.DataDir)) { MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectoryLabel"), _globalizer.GetResourceString("Application_DataDirectoryTitle"), MessageBoxButton.OK, MessageBoxImage.Information); while (String.IsNullOrWhiteSpace(Config.Default.DataDir)) { var dialog = new CommonOpenFileDialog(); dialog.EnsureFileExists = true; dialog.IsFolderPicker = true; dialog.Multiselect = false; dialog.Title = _globalizer.GetResourceString("Application_DataDirectory_DialogTitle"); dialog.InitialDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (dialog.ShowDialog() != CommonFileDialogResult.Ok) { Environment.Exit(0); } var confirm = MessageBox.Show(String.Format(_globalizer.GetResourceString("Application_DataDirectory_ConfirmLabel"), Path.Combine(dialog.FileName, Config.Default.ProfilesDir), Path.Combine(dialog.FileName, Config.Default.SteamCmdDir)), _globalizer.GetResourceString("Application_DataDirectory_ConfirmTitle"), MessageBoxButton.YesNoCancel, MessageBoxImage.Question); if (confirm == MessageBoxResult.Cancel) { Environment.Exit(0); } else if (confirm == MessageBoxResult.Yes) { Config.Default.DataDir = dialog.FileName; ReconfigureLogging(); break; } } } Config.Default.ConfigDirectory = Path.Combine(Config.Default.DataDir, Config.Default.ProfilesDir); System.IO.Directory.CreateDirectory(Config.Default.ConfigDirectory); Config.Default.Save(); // initialize all the game data GameData.Initialize(); DataFileDetails.PlayerFileExtension = Config.Default.PlayerFileExtension; DataFileDetails.TribeFileExtension = Config.Default.TribeFileExtension; Task.Factory.StartNew(async() => await App.DiscoverMachinePublicIP(forceOverride: true)); }