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); } } }
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 })); } }
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)); }
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))); } } }