/// <summary> /// 本地服务器-保存集群当前配置 /// </summary> private void button_Cluster_SaveIni_Click(object sender, RoutedEventArgs e) { int indexLocal = listBox_LocalServer_ClusterFile.SelectedIndex; string nameLocal = ComboBox_LocalServer_SavesFolder.SelectedItem?.ToString(); if (tabItem_LocalServer.IsSelected) { if (indexLocal == -1) { return; } ExtendHelper.CopyAllProperties(UI, m_ClusterInfo_Local[indexLocal].ClusterSetting); SavesManager.SetClusterInfo(nameLocal, m_ClusterInfo_Local[indexLocal]); } SftpClient client = ServersManager.GetExistSftp(m_ServerConnect, UI.Location, UI.Username, UI.Password); int indexCloud = listBox_CloudServer_ClusterFile.SelectedIndex; string nameCloud = ComboBox_CloudServer_SavesFolder.SelectedItem?.ToString(); if (tabItem_CloudServer.IsSelected) { if (indexCloud == -1) { return; } if (client == null) { return; } ExtendHelper.CopyAllProperties(UI, m_ClusterInfo_Cloud[indexCloud].ClusterSetting); SavesManager.SetClusterInfo(nameCloud, m_ClusterInfo_Cloud[indexCloud], client); } }
/// <summary> /// 本地服务器-开启当前服务器集群 /// </summary> private void button_LocalServer_StartCluster_Click(object sender, RoutedEventArgs e) { int indexLocalFile = listBox_LocalServer_ClusterFile.SelectedIndex; int indexLocalPath = dataGrid_LocalServer_ServersPath.SelectedIndex; if (indexLocalFile == -1 || indexLocalPath == -1) { return; } //保存当前选中的集群配置 ExtendHelper.CopyAllProperties(UI, m_ClusterInfo_Local[indexLocalFile].ClusterSetting); SavesManager.SetClusterInfo(ComboBox_LocalServer_SavesFolder.SelectedItem?.ToString(), m_ClusterInfo_Local[indexLocalFile]); string confdir = ComboBox_LocalServer_SavesFolder.SelectedItem.ToString(); string cluster = listBox_LocalServer_ClusterFile.SelectedItem.ToString(); string exefile = (dataGrid_LocalServer_ServersPath.SelectedItem as DataRowView)[2].ToString(); bool isShell = (bool)radioButton_LocalServer_OpenType_1.IsChecked; //依次开启集群服务器 foreach (var server in m_ClusterInfo_Local[indexLocalFile].ClusterServers) { string shard = server.Setting.Shard_Master ? "Master" : "Caves"; string parameter = ServersManager.CreatParameter(confdir, cluster, shard); CreatNewProcess(exefile, parameter, isShell, server.Session); } }
/// <summary> /// 更新集群下所有服务器信息 /// </summary> /// <param name="clusterInfo">当前选定的集群信息</param> /// <param name="bindData">界面绑定的集群</param> private void RefreshServersData(ClusterInfo clusterInfo, ref UserInterfaceData bindData) { //将当前选定的集群信息赋值给界面绑定的类实例 ExtendHelper.CopyAllProperties(clusterInfo.ClusterSetting, bindData); //更新当前选定的集群服务器DataGrid信息 bindData.ClusterServersTable.Clear(); ExtendHelper.CopyAllProperties(clusterInfo, bindData); }
/// <summary> /// 保存服务器当前配置 /// </summary> private void button_Server_SaveIni_Click(object sender, RoutedEventArgs e) { int indexLocalServer_ClusterFile = listBox_LocalServer_ClusterFile.SelectedIndex; string nameSave = ComboBox_LocalServer_SavesFolder.SelectedItem?.ToString(); string nameCluster = listBox_LocalServer_ClusterFile.SelectedItem?.ToString(); ExtendHelper.CopyAllProperties(UI, m_ClusterInfo_Local[indexLocalServer_ClusterFile]); for (int i = 0; i < m_ClusterInfo_Local[indexLocalServer_ClusterFile].ClusterServers.Count; i++) { SavesManager.SetServerInfo(nameSave, nameCluster, m_ClusterInfo_Local[indexLocalServer_ClusterFile].ClusterServers[i]); } }
private void button_CloudServer_StartCluster_Click(object sender, RoutedEventArgs e) { SftpClient client = ServersManager.GetExistSftp(m_ServerConnect, UI.Location, UI.Username, UI.Password); string nameCloud = ComboBox_CloudServer_SavesFolder.SelectedItem?.ToString(); int indexCloud = listBox_CloudServer_ClusterFile.SelectedIndex; int indexCloudFile = listBox_CloudServer_ClusterFile.SelectedIndex; if (client == null) { return; } ExtendHelper.CopyAllProperties(UI, m_ClusterInfo_Cloud[indexCloud].ClusterSetting); SavesManager.SetClusterInfo(nameCloud, m_ClusterInfo_Cloud[indexCloud], client); string confdir = ComboBox_CloudServer_SavesFolder.SelectedItem.ToString(); string cluster = listBox_CloudServer_ClusterFile.SelectedItem.ToString(); string exefile = (dataGrid_CloudServer_ServersPath.SelectedItem as DataRowView)[2].ToString(); string exepath = exefile.Replace("/dontstarve_dedicated_server_nullrenderer", ""); List <string> screenList = ServersManager.GetExistScreens(UI.Location, UI.Username, UI.Password); foreach (var server in m_ClusterInfo_Cloud[indexCloudFile].ClusterServers) { string shard = server.Setting.Shard_Master ? "Master" : "Caves"; string parameter = ServersManager.CreatParameter(confdir, cluster, shard); string command = string.Empty; string screenName = cluster + "_" + server.Folder; if (screenList.Contains(screenName)) { command = $"screen -xr {screenName}"; } else { command += $"cd {exepath}\r"; command += $"screen -S {screenName} {"./dontstarve_dedicated_server_nullrenderer"} {parameter}"; } CreatNewScreens(UI.Location, UI.Username, UI.Password, command); } }