示例#1
0
        public static SSHConnection GetSSHConnection(string name)
        {
            ConnectionInfoStore store          = new ConnectionInfoStore();
            ConnectionInfo      connectionInfo = null;

            StoredConnectionInfo storedConnectionInfo = store.Connections.FirstOrDefault(connection =>
            {
                return(name.Equals(SSHPortSupplier.GetFormattedSSHConnectionName((ConnectionInfo)connection), StringComparison.OrdinalIgnoreCase));
            });

            if (storedConnectionInfo != null)
            {
                connectionInfo = (ConnectionInfo)storedConnectionInfo;
            }

            if (connectionInfo == null)
            {
                IVsConnectionManager     connectionManager = (IVsConnectionManager)ServiceProvider.GlobalProvider.GetService(typeof(IVsConnectionManager));
                IConnectionManagerResult result;
                if (string.IsNullOrWhiteSpace(name))
                {
                    result = connectionManager.ShowDialog();
                }
                else
                {
                    string userName;
                    string hostName;

                    int atSignIndex = name.IndexOf('@');
                    if (atSignIndex > 0)
                    {
                        userName = name.Substring(0, atSignIndex);

                        int hostNameStartPos = atSignIndex + 1;
                        hostName = hostNameStartPos < name.Length ? name.Substring(hostNameStartPos) : StringResources.HostName_PlaceHolder;
                    }
                    else
                    {
                        userName = string.Format(CultureInfo.CurrentCulture, StringResources.UserName_PlaceHolder);
                        hostName = name;
                    }
                    result = connectionManager.ShowDialog(new PasswordConnectionInfo(hostName, userName, new System.Security.SecureString()));
                }

                if ((result.DialogResult & ConnectionManagerDialogResult.Succeeded) == ConnectionManagerDialogResult.Succeeded)
                {
                    // Retrieve the newly added connection
                    store.Load();
                    connectionInfo = store.Connections.First(info => info.Id == result.StoredConnectionId);
                }
            }

            return(SSHHelper.CreateSSHConnectionFromConnectionInfo(connectionInfo));
        }
示例#2
0
 protected IConnection GetConnection()
 {
     if (this.sshConnection == null)
     {
         if (this.connectionInfo != null)
         {
             this.sshConnection = SSHHelper.CreateSSHConnectionFromConnectionInfo(connectionInfo);
         }
     }
     return(this.sshConnection);
 }
示例#3
0
 protected IConnection GetConnection()
 {
     ThreadHelper.ThrowIfNotOnUIThread();
     if (this.sshConnection == null)
     {
         if (this.connectionInfo != null)
         {
             this.sshConnection = SSHHelper.CreateSSHConnectionFromConnectionInfo(connectionInfo);
         }
     }
     return(this.sshConnection);
 }
示例#4
0
        public static SSHConnection GetSSHConnection(string name)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            ConnectionInfoStore store          = new ConnectionInfoStore();
            ConnectionInfo      connectionInfo = null;

            StoredConnectionInfo storedConnectionInfo = store.Connections.FirstOrDefault(connection =>
            {
                return(string.Equals(name, SSHPortSupplier.GetFormattedSSHConnectionName((ConnectionInfo)connection), StringComparison.OrdinalIgnoreCase));
            });

            if (storedConnectionInfo != null)
            {
                connectionInfo = (ConnectionInfo)storedConnectionInfo;
            }

            if (connectionInfo == null)
            {
                IVsConnectionManager connectionManager = (IVsConnectionManager)ServiceProvider.GlobalProvider.GetService(typeof(IVsConnectionManager));
                if (connectionManager != null)
                {
                    IConnectionManagerResult result;
                    if (string.IsNullOrWhiteSpace(name))
                    {
                        result = connectionManager.ShowDialog();
                    }
                    else
                    {
                        ParseSSHConnectionString(name, out string userName, out string hostName, out int port);

                        result = connectionManager.ShowDialog(new PasswordConnectionInfo(hostName, port, Timeout.InfiniteTimeSpan, userName, new System.Security.SecureString()));
                    }

                    if ((result.DialogResult & ConnectionManagerDialogResult.Succeeded) == ConnectionManagerDialogResult.Succeeded)
                    {
                        // Retrieve the newly added connection
                        store.Load();
                        connectionInfo = store.Connections.First(info => info.Id == result.StoredConnectionId);
                    }
                }
                else
                {
                    throw new InvalidOperationException("Why is IVsConnectionManager null?");
                }
            }

            return(SSHHelper.CreateSSHConnectionFromConnectionInfo(connectionInfo));
        }