From f8ef69b88a4fa7bc5ebf07bd38869fbbf169c783 Mon Sep 17 00:00:00 2001 From: "vladimir.kuznetsov" Date: Tue, 4 Apr 2023 13:32:37 +0300 Subject: [PATCH] removed setPassphraseCallback() function from ServerController and libssh::Client --- client/core/servercontroller.cpp | 9 ++------- client/core/servercontroller.h | 3 +-- client/core/sshclient.cpp | 8 ++------ client/core/sshclient.h | 3 +-- client/ui/pages_logic/StartPageLogic.cpp | 12 ++++++------ 5 files changed, 12 insertions(+), 23 deletions(-) diff --git a/client/core/servercontroller.cpp b/client/core/servercontroller.cpp index 0963f0e1..8324fa79 100644 --- a/client/core/servercontroller.cpp +++ b/client/core/servercontroller.cpp @@ -735,13 +735,8 @@ ErrorCode ServerController::getAlreadyInstalledContainers(const ServerCredential return ErrorCode::NoError; } -void ServerController::setPassphraseCallback(const std::function &callback) +ErrorCode ServerController::getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey, const std::function &callback) { - m_sshClient.setPassphraseCallback(callback); -} - -ErrorCode ServerController::getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey) -{ - auto error = m_sshClient.getDecryptedPrivateKey(credentials, decryptedPrivateKey); + auto error = m_sshClient.getDecryptedPrivateKey(credentials, decryptedPrivateKey, callback); return error; } diff --git a/client/core/servercontroller.h b/client/core/servercontroller.h index 431104e7..2aaf4018 100644 --- a/client/core/servercontroller.h +++ b/client/core/servercontroller.h @@ -55,8 +55,7 @@ public: void setCancelInstallation(const bool cancel); - void setPassphraseCallback(const std::function &callback); - ErrorCode getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey); + ErrorCode getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey, const std::function &callback); private: ErrorCode installDockerWorker(const ServerCredentials &credentials, DockerContainer container); ErrorCode prepareHostWorker(const ServerCredentials &credentials, DockerContainer container, const QJsonObject &config = QJsonObject()); diff --git a/client/core/sshclient.cpp b/client/core/sshclient.cpp index db3ca9f5..3a7896da 100644 --- a/client/core/sshclient.cpp +++ b/client/core/sshclient.cpp @@ -338,12 +338,13 @@ namespace libssh { } } - ErrorCode Client::getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey) + ErrorCode Client::getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey, const std::function &passphraseCallback) { int authResult = SSH_ERROR; ErrorCode errorCode = ErrorCode::NoError; ssh_key privateKey; + m_passphraseCallback = passphraseCallback; authResult = ssh_pki_import_privkey_base64(credentials.password.toStdString().c_str(), nullptr, callback, nullptr, &privateKey); if (authResult == SSH_OK) { char* key = new char[65535]; @@ -363,9 +364,4 @@ namespace libssh { ssh_key_free(privateKey); return errorCode; } - - void Client::setPassphraseCallback(const std::function &callback) - { - m_passphraseCallback = callback; - } } diff --git a/client/core/sshclient.h b/client/core/sshclient.h index 25f181b6..db22d0dd 100644 --- a/client/core/sshclient.h +++ b/client/core/sshclient.h @@ -36,8 +36,7 @@ namespace libssh { const std::string& localPath, const std::string& remotePath, const std::string& fileDesc); - ErrorCode getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey); - void setPassphraseCallback(const std::function &callback); + ErrorCode getDecryptedPrivateKey(const ServerCredentials &credentials, QString &decryptedPrivateKey, const std::function &passphraseCallback); private: ErrorCode closeChannel(); ErrorCode closeSftpSession(); diff --git a/client/ui/pages_logic/StartPageLogic.cpp b/client/ui/pages_logic/StartPageLogic.cpp index 6708a276..09b6711c 100644 --- a/client/ui/pages_logic/StartPageLogic.cpp +++ b/client/ui/pages_logic/StartPageLogic.cpp @@ -143,19 +143,19 @@ void StartPageLogic::onPushButtonConnect() return m_privateKeyPassphrase; }; - serverController.setPassphraseCallback(passphraseCallback); - } - QString output = serverController.checkSshConnection(serverCredentials, &errorCode); - - if (pushButtonConnectKeyChecked()) { QString decryptedPrivateKey; - errorCode = serverController.getDecryptedPrivateKey(serverCredentials, decryptedPrivateKey); + errorCode = serverController.getDecryptedPrivateKey(serverCredentials, decryptedPrivateKey, passphraseCallback); if (errorCode == ErrorCode::NoError) { serverCredentials.password = decryptedPrivateKey; } } + QString output; + if (errorCode == ErrorCode::NoError) { + output = serverController.checkSshConnection(serverCredentials, &errorCode); + } + bool ok = true; if (errorCode) { set_labelWaitInfoVisible(true);