Example #1
0
        public SshProxyCredentials(IPasswordManager passwordManager, DatabaseConnection connection)
        {
            _passwordManager = passwordManager;
            Username         = connection.SshUsername;
            UseSshKey        = connection.UseSshKey;
            if (connection.UseSsh)
            {
                this.PrivateKeyFile = null;
                if (connection.UseSshKey)
                {
                    if (connection.SshKeyFile != null)
                    {
                        var data = _passwordManager.GetSecret(SecretType.SshKeyFile.ToString() + "_" + connection.SshKeyFile.Id);
                        if (data != null)
                        {
                            this.PrivateKeyFile = new PrivateKeyFile(new MemoryStream(Convert.FromBase64String(data)));
                        }
                    }
                }
                else
                {
                    UseSshKey = false;

                    Password = _passwordManager.GetSecret(SecretType.SSHPassword.ToString() + "_" + connection.DatabaseConnectionID);
                }
            }
        }
Example #2
0
        public ActionResult TestConnection(int type, string server, int port, string username, string password, string databaseName, bool useSsh, string sshServer, int?sshPort, string sshUsername, string sshPassword, int?SshKeyFileID, bool UseSshKey, int?databaseConnectionId = null)
        {
            DatabaseType dbType = (DatabaseType)type;

            // When testing a saved connection, if no new passwords are entered, load the saved values
            if (databaseConnectionId.HasValue)
            {
                if (password == null)
                {
                    password = _passwordManager.GetSecret(SecretType.DatabasePassword + "_" + databaseConnectionId.Value);
                }

                if (sshPassword == null)
                {
                    sshPassword = _passwordManager.GetSecret(SecretType.SSHPassword + "_" + databaseConnectionId.Value);
                }
            }

            SshProxyCredentials credentials = null;

            if (useSsh)
            {
                if (UseSshKey)
                {
                    var key = db.SshKeyFiles.Where(s => s.Id == SshKeyFileID).First();
                    credentials = new SshProxyCredentials(_passwordManager, sshUsername, key);
                }
                else
                {
                    credentials = new SshProxyCredentials(_passwordManager, sshUsername, sshPassword);
                }
            }

            string error = null;

            if (_dbMgr.TryUseDbConnection(dbType, server, port, useSsh, sshServer, sshPort, credentials, username, password, databaseName, out error))
            {
                return(Json(new { Message = "Success" }));
            }
            else
            {
                return(Json(new { Message = error }));
            }
        }
Example #3
0
        public bool TryUseDbConnection(DatabaseConnection connection, Action <DbConnection> action, out string error)
        {
            string password = _passwordManager.GetSecret(SecretType.DatabasePassword.ToString() + "_" + connection.DatabaseConnectionID);
            SshProxyCredentials credentials = null;

            if (connection.UseSsh)
            {
                credentials = new SshProxyCredentials(_passwordManager, connection);
            }
            return(TryUseDbConnection(connection.Type, connection.Server, connection.Port, connection.UseSsh, connection.SshServer, connection.SshPort, credentials, connection.Username, password, connection.DatabaseName, action, out error));
        }
Example #4
0
        public SshProxyCredentials(IPasswordManager passwordManager, string username, SshKeyFile sshKeyFile)
        {
            _passwordManager = passwordManager;

            this.Username  = username;
            this.UseSshKey = true;

            this.PrivateKeyFile = null;
            if (sshKeyFile != null)
            {
                var data = _passwordManager.GetSecret(SecretType.SshKeyFile.ToString() + "_" + sshKeyFile.Id);
                if (data != null)
                {
                    this.PrivateKeyFile = new PrivateKeyFile(new MemoryStream(Convert.FromBase64String(data)));
                }
            }
        }