Commit 791ee382 authored by Christian Kandeler's avatar Christian Kandeler

SSH: Support password input for private keys in non-GUI applications.

Change-Id: Ibd5e47409e92edb6909053d7f17e67b6fa72e642
Reviewed-on: http://codereview.qt.nokia.com/2384Reviewed-by: default avatarChristian Kandeler <christian.kandeler@nokia.com>
parent d0378580
......@@ -31,23 +31,34 @@
**************************************************************************/
#include "sshkeypasswordretriever_p.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QString>
#include <QtGui/QApplication>
#include <QtGui/QInputDialog>
#include <iostream>
namespace Utils {
namespace Internal {
std::string SshKeyPasswordRetriever::get_passphrase(const std::string &, const std::string &,
UI_Result &result) const
{
bool ok;
const QString &password = QInputDialog::getText(0,
QCoreApplication::translate("Utils::Ssh", "Password Required"),
QCoreApplication::translate("Utils::Ssh", "Please enter the password for your private key."),
QLineEdit::Password, QString(), &ok);
result = ok ? OK : CANCEL_ACTION;
return std::string(password.toLocal8Bit().data());
const bool hasGui = dynamic_cast<QApplication *>(QApplication::instance());
if (hasGui) {
bool ok;
const QString &password = QInputDialog::getText(0,
QCoreApplication::translate("Utils::Ssh", "Password Required"),
QCoreApplication::translate("Utils::Ssh", "Please enter the password for your private key."),
QLineEdit::Password, QString(), &ok);
result = ok ? OK : CANCEL_ACTION;
return std::string(password.toLocal8Bit().data());
} else {
result = OK;
std::string password;
std::cout << "Please enter the password for your private key (set echo off beforehand!): " << std::flush;
std::cin >> password;
return password;
}
}
} // namespace Internal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment