public void Save(ServerElement serverElement)
        {
            UISection config = ConfigurationManager.LoadConfiguration();

            foreach (ServerElement se in config.ServerCollection)
            {
                if (serverElement.Default && se.Name != serverElement.Name)
                {
                    se.Default = false;
                }
            }

            var server = (from ServerElement element in config.ServerCollection
                          where element.Name == serverElement.Name
                          select element).LastOrDefault();

            if (server != null)
            {
                config.ServerCollection.Remove(server);
            }

            config.ServerCollection.Add(serverElement);

            ConfigurationManager.SaveConfiguration(config);
        }
        private ConnectionDescription ReadConnection(ServerElement server)
        {
            var connection = _knownConnections.CreateFromProfile(server.Type.ConvertToString());

            if (connection != null)
            {
                connection.Name = server.Name;
                PatchCommonParameters(connection.Parameters,
                                      () => server.Host, () => server.Port, () => server.Username, () => server.Password);
            }
            return(connection);
        }
        public ServerSettingsControl()
        {
            if (App.Settings.Current.Servers.Count == 0)
            {
                var server = new ServerElement();
                server.Name = "New Server";
                server.Port = 6667;
                App.Settings.Current.Servers.Add(server);
            }

            InitializeComponent();

            lstServers.SelectedIndex = 0;
        }
Esempio n. 4
0
    void AddServer(string name, string adress, int playerCount, string mode)
    {
        ServerElement serverElement = Instantiate(serverElementPrefab).GetComponent <ServerElement>();

        serverElement.Init(name, adress, playerCount, serversContainer);

        Button serverButton = serverElement.GetComponent <Button>();

        serverButton.onClick.AddListener(() =>
        {
            ipAddress.text = adress;
            nat            = ((mode == "NAT") ? true : false);
            Connect();
        });
    }
Esempio n. 5
0
        /// <summary>
        /// Method for launch WinSCP: SCP, FTP, SFTP Protocols
        /// </summary>
        /// <param name="protocol"> "scp://" or "ftp://" or "sftp://"</param>
        /// <param name="serverElement">Current selected server from Tree View</param>
        private static void LaunchWinScp(string protocol, ServerElement serverElement)
        {
            string[] winScpExtractPath = ExtractFilePath(Settings.Default.winscppath);
            string   winScpPath        = Environment.ExpandEnvironmentVariables(winScpExtractPath[0]);
            string   winScpArgs        = winScpExtractPath[1];

            if (File.Exists(winScpPath))
            {
                string host = serverElement.Host;
                string port = serverElement.Port != "" ? serverElement.Port : "";

                using (Process winScpProcess = new Process())
                {
                    winScpProcess.StartInfo.FileName  = Settings.Default.winscppath;
                    winScpProcess.StartInfo.Arguments = protocol;

                    if (serverElement.Username != "")
                    {
                        string[] s = { "%", " ", "+", "/", "@", "\"", ":", ";" };
                        serverElement.Username = OtherHelper.ReplaceU(s, serverElement.Username);
                        serverElement.Password = OtherHelper.ReplaceU(s, serverElement.Password);

                        winScpProcess.StartInfo.Arguments += serverElement.Username;
                        winScpProcess.StartInfo.Arguments += serverElement.Password != "" ? ":" + serverElement.Password : "";
                        winScpProcess.StartInfo.Arguments += "@";
                    }

                    winScpProcess.StartInfo.Arguments += (host != "" ? HttpUtility.UrlEncode(host) : "") ?? throw new InvalidOperationException();
                    winScpProcess.StartInfo.Arguments += port != "" ? ":" + port : "";
                    winScpProcess.StartInfo.Arguments += protocol == "ftp://" ? " /passive=" + (Settings.Default.winscppassive ? "on" : "off") : "";
                    winScpProcess.StartInfo.Arguments += Settings.Default.winscpkey && Settings.Default.winscpkeyfile != "" ? " /privatekey=\"" + Settings.Default.winscpkeyfile + "\"" : "";
                    winScpProcess.StartInfo.Arguments += winScpArgs != "" ? " " + winScpArgs : "";

                    winScpProcess.Start();
                }
            }
            else
            {
                if (MessageBox.Show(Resources.connectionHelper_LaunchVnc_M1 + winScpPath + Resources.connectionHelper_LaunchVnc_M2,
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    formMain.optionsForm.bWSCPPath_Click();
                }
            }
        }
Esempio n. 6
0
        public static void LaunchPlink(ServerElement currentServer, string command)
        {
            string plinkPath = Settings.Default.plinkpath;

            if (File.Exists(plinkPath))
            {
                string strCmdText = "/C " + plinkPath + " -ssh -l " + currentServer.Username + " -pw " + currentServer.Password + " " + currentServer.Host + " \"" + command + "\" &pause";
                Process.Start("CMD.exe", strCmdText);
            }
            else
            {
                if (MessageBox.Show("Could not find file \"" + plinkPath + "\"\nDo you want to change the configuration ?",
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    formMain.optionsForm.bNCPath_Click();
                }
            }
        }
        private void btnNew_Click(object sender, RoutedEventArgs e)
        {
            var server = new ServerElement();

            string newName = server.Name = "New Server";
            int    i       = 1;

            while (App.Settings.Current.Servers.OfType <ServerElement>().Any((s) => s.Name == (server.Name = string.Format(newName, i))))
            {
                if (++i == 2)
                {
                    newName += " {0}";
                }
            }
            server.Port = 6667;

            App.Settings.Current.Servers.Add(server);
            lstServers.Items.Refresh();
            lstServers.SelectedItem = server;
        }
Esempio n. 8
0
        private static void LaunchAmmyAdmin(ServerElement serverElement, XmlHelper xmlHelper)
        {
            var model = new AmmyAdminOptionsViewModel(xmlHelper);

            if (!File.Exists(model.AppPath))
            {
                if (MessageBox.Show("Could not find file \"" + model.AppPath + "\"\nDo you want to change the configuration ?",
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    if (!model.ChangeAppPath())
                    {
                        return;
                    }
                }
            }

            string strCmdText = string.Format("/C \"{0}\" -connect {1} -password {2}", model.AppPath, serverElement.Host, serverElement.Password);

            Process.Start("CMD.exe", strCmdText);
        }
Esempio n. 9
0
        private static void LaunchTelnet(ServerElement serverElement)
        {
            string[] puttyExtractPath = ExtractFilePath(Settings.Default.puttypath);
            string   puttyPath        = Environment.ExpandEnvironmentVariables(puttyExtractPath[0]);

            if (File.Exists(puttyPath))
            {
                string host = serverElement.Host;
                string port = serverElement.Port != "" ? serverElement.Port : "22";

                using (Process puttyProcess = new Process())
                {
                    puttyProcess.StartInfo.FileName   = Settings.Default.puttypath;
                    puttyProcess.StartInfo.Arguments  = "-telnet ";
                    puttyProcess.StartInfo.Arguments += serverElement.Username != "" ? serverElement.Username + "@" : "";

                    puttyProcess.StartInfo.Arguments += host != "" ? host : "";
                    puttyProcess.StartInfo.Arguments += port != "" ? " " + port : "";

                    puttyProcess.Start();

                    Thread.Sleep(1500);

                    IntPtr h = puttyProcess.MainWindowHandle;

                    SetForegroundWindow(h);
                    SendKeys.SendWait(serverElement.Username);
                    SendKeys.SendWait("~");
                    SendKeys.SendWait(serverElement.Password);
                    SendKeys.SendWait("~");
                }
            }
            else
            {
                if (MessageBox.Show(Resources.connectionHelper_LaunchVnc_M1 + puttyPath + Resources.connectionHelper_LaunchVnc_M2,
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    formMain.optionsForm.bPuTTYPath_Click();
                }
            }
        }
Esempio n. 10
0
        public void ConnectionChanged(ServerElement currentServer)
        {
            if (currentServer == null || currentServer.Type != ConnectionType.Rdp)
            {
                return;
            }

            connection = currentServer;

            gbRDP.Text = currentServer.Name;

            tabSettings.TabPages.Clear();
            tabSettings.TabPages.Add(tabPages[currentServer.Type]);

            FirstRead = true;

            cbRDPAdmin.Checked   = false;
            cbRDPDrivers.Checked = false;
            cbRDPSpan.Checked    = false;

            if (File.Exists(Settings.Default.cfgpath))
            {
                bool value;
                if (bool.TryParse(MainForm.XmlHelper.configGet(connection.Id + "_rdadmin"), out value))
                {
                    cbRDPAdmin.Checked = value;
                }

                if (bool.TryParse(MainForm.XmlHelper.configGet(connection.Id + "_rddrives"), out value))
                {
                    cbRDPDrivers.Checked = value;
                }
                if (bool.TryParse(MainForm.XmlHelper.configGet(connection.Id + "_rdspan"), out value))
                {
                    cbRDPSpan.Checked = value;
                }
                cbRDPSize.Text = MainForm.XmlHelper.configGet(connection.Id + "_rdsize");
            }
            FirstRead = false;
        }
Esempio n. 11
0
        /// <summary>
        /// Method for launch PuTTy
        /// </summary>
        /// <param name="serverElement">Current selected server from Tree View<</param>
        private static void LaunchPuTTy(ServerElement serverElement)
        {
            string[] puttyExtractPath = ExtractFilePath(Settings.Default.puttypath);
            string   puttyPath        = Environment.ExpandEnvironmentVariables(puttyExtractPath[0]);
            string   puttyArgs        = puttyExtractPath[1];

            if (File.Exists(puttyPath))
            {
                string host = serverElement.Host;
                string port = serverElement.Port != "" ? serverElement.Port : "22";

                using (Process puttyProcess = new Process())
                {
                    puttyProcess.StartInfo.FileName   = Settings.Default.puttypath;
                    puttyProcess.StartInfo.Arguments  = "-ssh ";
                    puttyProcess.StartInfo.Arguments += serverElement.Username != "" ? serverElement.Username + "@" : "";

                    puttyProcess.StartInfo.Arguments += host != "" ? host : "";
                    puttyProcess.StartInfo.Arguments += port != "" ? " " + port : "";
                    puttyProcess.StartInfo.Arguments += serverElement.Username != "" && serverElement.Password != "" ? " -pw \"" + OtherHelper.ReplaceA(passs, passr, serverElement.Password) + "\"" : "";
                    puttyProcess.StartInfo.Arguments += Settings.Default.puttyexecute && Settings.Default.puttycommand != "" ? " -m \"" + Settings.Default.puttycommand + "\"" : "";
                    puttyProcess.StartInfo.Arguments += Settings.Default.puttykey && Settings.Default.puttykeyfile != "" ? " -i \"" + Settings.Default.puttykeyfile + "\"" : "";
                    puttyProcess.StartInfo.Arguments += Settings.Default.puttyforward ? " -X" : "";

                    puttyProcess.StartInfo.Arguments += puttyArgs != "" ? " " + puttyArgs + "@" : "";

                    puttyProcess.Start();
                }
            }
            else
            {
                if (MessageBox.Show(Resources.connectionHelper_LaunchVnc_M1 + puttyPath + Resources.connectionHelper_LaunchVnc_M2,
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    formMain.optionsForm.bPuTTYPath_Click();
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// get all data from xml config
        /// </summary>
        /// <returns>arraylist with groupelement</returns>
        public ArrayList getAllData()
        {
            if (!File.Exists(Settings.Default.cfgpath))
            {
                return(new ArrayList());
            }

            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(Settings.Default.cfgpath);

            ArrayList groups = new ArrayList();

            XmlNodeList groupNodes = xmlDocument.SelectNodes("//*[@GroupName]");

            if (groupNodes != null)
            {
                if (groupNodes.Count > 0)
                {
                    foreach (XmlElement groupNode in groupNodes)
                    {
                        string groupName = groupNode.GetAttribute("GroupName");

                        string groupDefaulHostname  = "";
                        string groupDefaultPort     = "";
                        string groupDefaultUsername = "";
                        string groupDefaultPassword = "";

                        ArrayList servers = new ArrayList();

                        foreach (XmlElement childNode in groupNode.ChildNodes)
                        {
                            switch (childNode.Name)
                            {
                            case "DefaultHost":
                                groupDefaulHostname = CryptHelper.Decrypt(childNode.InnerText);
                                break;

                            case "DefaultPort":
                                groupDefaultPort = CryptHelper.Decrypt(childNode.InnerText);
                                break;

                            case "DefaultUsername":
                                groupDefaultUsername = CryptHelper.Decrypt(childNode.InnerText);
                                break;

                            case "DefaultPassword":
                                groupDefaultPassword = CryptHelper.Decrypt(childNode.InnerText);
                                break;

                            case "Server":
                                string serverName = childNode.GetAttribute("Name").Trim();

                                string serverHost     = "";
                                string serverPort     = "";
                                string serverUsername = "";
                                string serverPassword = "";
                                string serverType     = "";
                                bool   serverChecks   = false;
                                Guid   id             = Guid.Empty;
                                foreach (XmlElement serverElement in childNode.ChildNodes)
                                {
                                    switch (serverElement.Name)
                                    {
                                    case "Host":
                                        serverHost = CryptHelper.Decrypt(serverElement.InnerText);
                                        break;

                                    case "Port":
                                        serverPort = CryptHelper.Decrypt(serverElement.InnerText);
                                        break;

                                    case "Username":
                                        serverUsername = CryptHelper.Decrypt(serverElement.InnerText);
                                        break;

                                    case "Password":
                                        serverPassword = CryptHelper.Decrypt(serverElement.InnerText);
                                        break;

                                    case "Type":
                                        serverType = CryptHelper.Decrypt(serverElement.InnerText);
                                        break;

                                    case "Checks":
                                        serverChecks = Boolean.Parse(serverElement.InnerText);
                                        break;

                                    case "Id":
                                        Guid.TryParse(serverElement.InnerText, out id);
                                        break;
                                    }
                                }
                                var server = new ServerElement(serverName, serverHost, serverPort, serverUsername, serverPassword, serverType, serverChecks);
                                server.Id = id;
                                servers.Add(server);
                                break;
                            }
                        }

                        groups.Add(new GroupElement(groupName, groupDefaulHostname,
                                                    groupDefaultPort, groupDefaultUsername, groupDefaultPassword, servers));
                    }
                }
                else
                {
                    return(new ArrayList());
                }
            }

            return(groups);
        }
Esempio n. 13
0
 public ModifyServerForm()
 {
     InitializeComponent();
     ServerElement = new ServerElement();
     _presenter    = new ModifyServerPresenter(this);
 }
Esempio n. 14
0
        /// <summary>
        /// Method for launch user VNC client like a TinyVNC, UltraVNC or ReadlVNC
        /// </summary>
        /// <param name="serverElement">Current selected server from Tree View</param>
        private static void LaunchVnc(ServerElement serverElement)
        {
            string[] vncExtractPath = ExtractFilePath(Settings.Default.vncpath);
            string   vncPath        = Environment.ExpandEnvironmentVariables(vncExtractPath[0]);
            string   vncArgs        = vncExtractPath[1];

            if (File.Exists(vncPath))
            {
                string host = serverElement.Host;
                string port = serverElement.Port != "" ? serverElement.Port : "5900";

                _vncOutPath = "";

                if (Settings.Default.vncfilespath != "" && OtherHelper.ReplaceA(ps, pr, Settings.Default.vncfilespath) != "\\")
                {
                    _vncOutPath = OtherHelper.ReplaceA(ps, pr, Settings.Default.vncfilespath + "\\");

                    if (!Directory.Exists(_vncOutPath))
                    {
                        Directory.CreateDirectory(_vncOutPath);
                    }
                }

                TextWriter vncFile = new StreamWriter(_vncOutPath + OtherHelper.ReplaceU(f, serverElement.Name) + ".vnc");

                vncFile.WriteLine("[Connection]");
                vncFile.WriteLine(host != "" ? "host=" + host : "");
                vncFile.WriteLine(port != "" ? "port=" + port : "");
                vncFile.WriteLine(serverElement.Username != "" ? "username="******"");
                vncFile.WriteLine(serverElement.Password != "" ? "password="******"");

                vncFile.WriteLine("[Options]");
                vncFile.WriteLine(Settings.Default.vncfullscreen ? "fullscreen=1" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "viewonly=1" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "sendptrevents=0" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "sendkeyevents=0" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "sendcuttext=0" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "acceptcuttext=0" : "");
                vncFile.WriteLine(Settings.Default.vncviewonly ? "sharefiles=0" : "");

                vncFile.WriteLine(serverElement.Password != "" && serverElement.Password.Length > 8 ? "protocol3.3=1" : ""); // f****n vnc 4.0 auth

                vncFile.Close();

                Process myProc = new Process
                {
                    StartInfo =
                    {
                        FileName  = Settings.Default.vncpath,
                        Arguments = "-config \"" + _vncOutPath + OtherHelper.ReplaceU(f, serverElement.Name) +
                                    ".vnc\"" + (vncArgs != "" ? " " + vncArgs : "")
                    }
                };

                myProc.Start();
            }
            else
            {
                if (MessageBox.Show(Resources.connectionHelper_LaunchVnc_M1 + vncPath + Resources.connectionHelper_LaunchVnc_M2,
                                    Resources.connectionHelper_LaunchVnc_Error, MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)
                {
                    formMain.optionsForm.bVNCPath_Click();
                }
            }
        }
Esempio n. 15
0
        /// <summary>
        /// Method for launch default RDP client (mstcs.exe)
        /// </summary>
        /// <param name="serverElement">Server data for launching</param>
        private static void LaunchRdp(ServerElement serverElement, XmlHelper xmlHelper)
        {
            string[] rdpExtractFilePath = ExtractFilePath(Settings.Default.rdpath);
            string   rdpPath            = Environment.ExpandEnvironmentVariables(rdpExtractFilePath[0]);
            string   rdpLaunchArgs      = rdpExtractFilePath[1];

            if (File.Exists(rdpPath))
            {
                var size = xmlHelper.configGet(serverElement.Id + "_rdsize");

                if (string.IsNullOrEmpty(size))
                {
                    size = Settings.Default.rdsize;
                }

                string[] sizes = size.Split('x');

                _rdpOutPath = "";

                if (Settings.Default.rdfilespath != "" && OtherHelper.ReplaceA(ps, pr, Settings.Default.rdfilespath) != "\\")
                {
                    _rdpOutPath = OtherHelper.ReplaceA(ps, pr, Settings.Default.rdfilespath + "\\");

                    //TODO: add try for exception
                    if (!Directory.Exists(_rdpOutPath))
                    {
                        Directory.CreateDirectory(_rdpOutPath);
                    }
                }

                var rddrives = Settings.Default.rddrives;
                bool.TryParse(xmlHelper.configGet(serverElement.Id + "_rddrives"), out rddrives);

                var rdadmin = Settings.Default.rdadmin;
                bool.TryParse(xmlHelper.configGet(serverElement.Id + "_rdadmin"), out rdadmin);

                var rdspan = Settings.Default.rdspan;
                bool.TryParse(xmlHelper.configGet(serverElement.Id + "_rdspan"), out rdspan);

                TextWriter rdpFileWriter = new StreamWriter(path: _rdpOutPath + OtherHelper.ReplaceU(f, serverElement.Name) + ".rdp");

                //TODO: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

                rdpFileWriter.WriteLine(size == "Full screen" ? "screen mode id:i:2" : "screen mode id:i:1");
                rdpFileWriter.WriteLine(sizes.Length == 2 ? "desktopwidth:i:" + sizes[0] : "");
                rdpFileWriter.WriteLine(sizes.Length == 2 ? "desktopheight:i:" + sizes[1] : "");
                rdpFileWriter.WriteLine(serverElement.HostWithPort != "" ? "full address:s:" + serverElement.HostWithPort : "");
                rdpFileWriter.WriteLine(serverElement.Username != "" ? "username:s:" + serverElement.Username : "");
                rdpFileWriter.WriteLine(serverElement.Username != "" && serverElement.Password != "" ? "password 51:b:" + CryptHelper.encryptpw(serverElement.Password) : "");
                rdpFileWriter.WriteLine(rddrives ? "redirectdrives:i:1" : "");
                rdpFileWriter.WriteLine(rdadmin ? "administrative session:i:1" : "");
                rdpFileWriter.WriteLine(rdspan ? "use multimon:i:1" : "");

                rdpFileWriter.Close();

                Process myProc = new Process
                {
                    StartInfo =
                    {
                        FileName  = rdpPath,
                        Arguments = "\"" + _rdpOutPath + OtherHelper.ReplaceU(f,serverElement.Name) + ".rdp\"" + (rdpLaunchArgs != null ? " " + rdpLaunchArgs : ""),
                    }
                };

                myProc.Start();
            }
            else
            {
                if (MessageBox.Show(Resources.connectionHelper_LaunchVnc_M1 + rdpPath + Resources.connectionHelper_LaunchVnc_M2, Resources.connectionHelper_LaunchVnc_Error,
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Error) == DialogResult.OK)

                {
                    formMain.optionsForm.bRDPath_Click();
                }
            }
        }
Esempio n. 16
0
        /// <summary>
        /// Get server data by group and server name
        /// </summary>
        /// <param name="groupName">group name</param>
        /// <param name="serverName">server name</param>
        /// <returns></returns>
        public static ServerElement getServerByName(string groupName, string serverName)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(Settings.Default.cfgpath);

            XmlNode xmlGroup = xmlDocument.SelectSingleNode("//*[@GroupName='" + groupName + "']");

            if (xmlGroup != null)
            {
                foreach (XmlElement xmlElement in xmlGroup)
                {
                    switch (xmlElement.Name)
                    {
                    case "Server":
                        string foundedServerName = xmlElement.GetAttribute("Name");

                        if (!foundedServerName.Equals(serverName))
                        {
                            continue;
                        }

                        string serverHost     = "";
                        string serverPort     = "";
                        string serverUsername = "";
                        string serverPassword = "";
                        string serverType     = "";
                        bool   serverChecks   = false;
                        Guid   id             = Guid.Empty;

                        foreach (XmlElement serverElements in xmlElement.ChildNodes)
                        {
                            switch (serverElements.Name)
                            {
                            case "Host":
                                serverHost = CryptHelper.Decrypt(serverElements.InnerText);
                                break;

                            case "Port":
                                serverPort = CryptHelper.Decrypt(serverElements.InnerText);
                                break;

                            case "Username":
                                serverUsername = CryptHelper.Decrypt(serverElements.InnerText);
                                break;

                            case "Password":
                                serverPassword = CryptHelper.Decrypt(serverElements.InnerText);
                                break;

                            case "Type":
                                serverType = CryptHelper.Decrypt(serverElements.InnerText);
                                break;

                            case "Checks":
                                serverChecks = Boolean.Parse(serverElements.InnerText);
                                break;

                            case "Id":
                                Guid.TryParse(serverElements.InnerText, out id);
                                break;
                            }
                        }

                        ServerElement currentServer = new ServerElement(foundedServerName, serverHost, serverPort,
                                                                        serverUsername, serverPassword, serverType, serverChecks);
                        currentServer.Id = id;

                        return(currentServer);
                    }
                }
            }

            //TODO: Fix return null
            return(null);
        }
Esempio n. 17
0
        /// <summary>
        /// modify all server data by group name and old server name
        /// </summary>
        /// <param name="groupName">group name</param>
        /// <param name="oldServerName">old server name</param>
        /// <param name="serverElement">new server data</param>
        public void modifyServer(string groupName, string oldServerName, ServerElement serverElement)
        {
            XmlDocument xmldoc = new XmlDocument();

            xmldoc.Load(Settings.Default.cfgpath);

            XmlNode xmlGroup = xmldoc.SelectSingleNode("//*[@GroupName='" + groupName + "']");

            if (xmlGroup != null)
            {
                foreach (XmlElement xmlElement in xmlGroup)
                {
                    switch (xmlElement.Name)
                    {
                    case "Server":
                        string foundedServerName = xmlElement.GetAttribute("Name");

                        if (!foundedServerName.Equals(oldServerName))
                        {
                            continue;
                        }

                        xmlElement.Attributes["Name"].Value = serverElement.Name;

                        bool existHost     = false;
                        bool existPort     = false;
                        bool existUsername = false;
                        bool existPassword = false;
                        bool existChecks   = false;

                        foreach (XmlElement subElements in xmlElement.ChildNodes)
                        {
                            switch (subElements.Name)
                            {
                            case "Host":
                                subElements.InnerText = CryptHelper.Encrypt(serverElement.Host);
                                existHost             = true;
                                break;

                            case "Port":
                                subElements.InnerText = CryptHelper.Encrypt(serverElement.Port);
                                existPort             = true;
                                break;

                            case "Username":
                                subElements.InnerText = CryptHelper.Encrypt(serverElement.Username);
                                existUsername         = true;
                                break;

                            case "Password":
                                subElements.InnerText = CryptHelper.Encrypt(serverElement.Password);
                                existPassword         = true;
                                break;

                            case "Type":
                                subElements.InnerText =
                                    CryptHelper.Encrypt(((int)serverElement.Type).ToString());
                                break;

                            case "Checks":
                                subElements.InnerText = serverElement.AutoChecks.ToString();
                                existChecks           = true;
                                break;
                            }
                        }

                        if (!existHost)
                        {
                            XmlElement newElement = xmldoc.CreateElement("Host");
                            newElement.InnerText = CryptHelper.Encrypt(serverElement.Host);
                            xmlElement.AppendChild(newElement);
                        }

                        if (!existPort)
                        {
                            XmlElement newElement = xmldoc.CreateElement("Port");
                            newElement.InnerText = CryptHelper.Encrypt(serverElement.Port);
                            xmlElement.AppendChild(newElement);
                        }

                        if (!existUsername)
                        {
                            XmlElement newElement = xmldoc.CreateElement("Username");
                            newElement.InnerText = CryptHelper.Encrypt(serverElement.Username);
                            xmlElement.AppendChild(newElement);
                        }

                        if (!existPassword)
                        {
                            XmlElement newElement = xmldoc.CreateElement("Password");
                            newElement.InnerText = CryptHelper.Encrypt(serverElement.Password);
                            xmlElement.AppendChild(newElement);
                        }

                        if (!existChecks)
                        {
                            XmlElement newElement = xmldoc.CreateElement("Checks");
                            newElement.InnerText = serverElement.AutoChecks.ToString();
                            xmlElement.AppendChild(newElement);
                        }

                        break;
                    }

                    try
                    {
                        xmldoc.Save(Settings.Default.cfgpath);
                    }
                    catch (UnauthorizedAccessException)
                    {
                        OtherHelper.Error(
                            "Could not write to configuration file :'(\rModifications will not be saved\rPlease check your user permissions.");
                    }
                }
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Start connection method
        /// В зависимости от переданного типа запускает нужный софт
        /// </summary>
        /// <param name="selectedNode">Current selected node from Tree View</param>
        public static void StartConnect(TreeNode selectedNode, XmlHelper xmlHelper)
        {
            Environment.CurrentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException();

            if (selectedNode?.Parent == null)
            {
                return;
            }

            _currentGroup  = selectedNode.Parent.Text;
            _currentServer = selectedNode.Text;

            ServerElement serverElement = XmlHelper.getServerByName(_currentGroup, _currentServer);

            if (serverElement == null)
            {
                return;
            }

            string plinkCommand = "";

            if (serverElement.Type == ConnectionType.Plink)
            {
                plinkCommand = XmlHelper.getServerParamByServerId(_currentGroup, _currentServer, "plinkCommand");

                if (plinkCommand == "")
                {
                    InputBoxItem[] items = new InputBoxItem[] {
                        new InputBoxItem("Command")
                    };

                    InputBox input = InputBox.Show("Enter new Plink command", items, InputBoxButtons.OKCancel);
                    if (input.Result == InputBoxResult.OK)
                    {
                        plinkCommand = input.Items["Command"];
                        XmlHelper.setServerParamByServerId(_currentGroup, _currentServer, "plinkCommand", input.Items["Command"]);
                    }
                    else
                    {
                        return;
                    }
                }
            }

            switch (serverElement.Type)
            {
            case ConnectionType.Rdp:     //RDP
                LaunchRdp(serverElement, xmlHelper);
                break;

            case ConnectionType.Vnc:     //VNC
                LaunchVnc(serverElement);
                break;

            case ConnectionType.Scp:     //WinSCP (SCP)
                LaunchWinScp("scp://", serverElement);
                break;

            case ConnectionType.Sftp:     //WinSCP (SFTP)
                LaunchWinScp("sftp://", serverElement);
                break;

            case ConnectionType.Ftp:     //WinSCP (FTP)
                LaunchWinScp("ftp://", serverElement);
                break;

            case ConnectionType.Telnet:
                LaunchTelnet(serverElement);
                break;

            case ConnectionType.Plink:
                LaunchPlink(serverElement, plinkCommand);
                break;

            case ConnectionType.AmmyAdmin:
                LaunchAmmyAdmin(serverElement, xmlHelper);
                break;

            case ConnectionType.RAdmin:
                LaunchRAdmin(serverElement, xmlHelper);
                break;

            case ConnectionType.TeamViewer:
                LaunchTeamViewer(serverElement, xmlHelper);
                break;

            default:
                LaunchPuTTy(serverElement);
                break;
            }
        }