mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-10-13 14:01:03 -04:00
moved pgp passphrase handling to RsLoginHandler and removed irrelevant notify handles
This commit is contained in:
parent
5592c667ae
commit
670475b67d
7 changed files with 40 additions and 30 deletions
|
@ -656,7 +656,7 @@ void GenCertDialog::genPerson()
|
||||||
// Normally we should clear the cached passphrase as soon as possible. However,some other GUI components may still need it at start.
|
// Normally we should clear the cached passphrase as soon as possible. However,some other GUI components may still need it at start.
|
||||||
// (csoler) This is really bad: we have to guess that 30 secs will be enough. I have no better way to do this.
|
// (csoler) This is really bad: we have to guess that 30 secs will be enough. I have no better way to do this.
|
||||||
|
|
||||||
QTimer::singleShot(30000, []() { rsNotify->clearPgpPassphrase(); } );
|
QTimer::singleShot(30000, []() { RsLoginHelper::clearPgpPassphrase(); } );
|
||||||
|
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
@ -664,7 +664,7 @@ void GenCertDialog::genPerson()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Now clear the cached passphrase
|
// Now clear the cached passphrase
|
||||||
rsNotify->clearPgpPassphrase();
|
RsLoginHelper::clearPgpPassphrase();
|
||||||
|
|
||||||
/* Message Dialog */
|
/* Message Dialog */
|
||||||
QMessageBox::warning(this,
|
QMessageBox::warning(this,
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
#include "retroshare/rsidentity.h"
|
#include "retroshare/rsidentity.h"
|
||||||
#include "retroshare/rspeers.h"
|
#include "retroshare/rspeers.h"
|
||||||
|
#include "retroshare/rsinit.h"
|
||||||
#include "gui/common/FilesDefs.h"
|
#include "gui/common/FilesDefs.h"
|
||||||
#include "util/imageutil.h"
|
#include "util/imageutil.h"
|
||||||
#include "util/RsQtVersion.h"
|
#include "util/RsQtVersion.h"
|
||||||
|
@ -596,9 +597,9 @@ void IdEditDialog::createId()
|
||||||
std::string gpg_name = rsPeers->getGPGName(rsPeers->getGPGOwnId());
|
std::string gpg_name = rsPeers->getGPGName(rsPeers->getGPGOwnId());
|
||||||
bool cancelled;
|
bool cancelled;
|
||||||
|
|
||||||
rsNotify->clearPgpPassphrase(); // just in case
|
RsLoginHelper::clearPgpPassphrase(); // just in case
|
||||||
|
|
||||||
if(!NotifyQt::getInstance()->askForPassword(tr("Profile password needed.").toStdString(),
|
if(!RsLoginHelper::askForPassword(tr("Profile password needed.").toStdString(),
|
||||||
gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")",
|
gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")",
|
||||||
false,
|
false,
|
||||||
gpg_password,cancelled))
|
gpg_password,cancelled))
|
||||||
|
@ -670,9 +671,9 @@ void IdEditDialog::updateId()
|
||||||
std::string gpg_name = rsPeers->getGPGName(rsPeers->getGPGOwnId());
|
std::string gpg_name = rsPeers->getGPGName(rsPeers->getGPGOwnId());
|
||||||
bool cancelled;
|
bool cancelled;
|
||||||
|
|
||||||
rsNotify->clearPgpPassphrase(); // just in case
|
RsLoginHelper::clearPgpPassphrase(); // just in case
|
||||||
|
|
||||||
if(!NotifyQt::getInstance()->askForPassword(tr("Profile password needed.").toStdString(),
|
if(!RsLoginHelper::askForPassword(tr("Profile password needed.").toStdString(),
|
||||||
gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")",
|
gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")",
|
||||||
false,
|
false,
|
||||||
gpg_password,cancelled))
|
gpg_password,cancelled))
|
||||||
|
|
|
@ -119,13 +119,11 @@ void StartDialog::loadPerson()
|
||||||
RsPeerId accountId = RsPeerId((data.toString()).toStdString());
|
RsPeerId accountId = RsPeerId((data.toString()).toStdString());
|
||||||
|
|
||||||
// Cache the passphrase, so that it is not asked again.
|
// Cache the passphrase, so that it is not asked again.
|
||||||
rsNotify->cachePgpPassphrase(ui.password_input->text().toUtf8().constData()) ;
|
RsLoginHelper::cachePgpPassphrase(ui.password_input->text().toUtf8().constData()) ;
|
||||||
rsNotify->setDisableAskPassword(true);
|
|
||||||
|
|
||||||
bool res = RsApplication::loadCertificate(accountId, ui.autologin_checkbox->isChecked()) ;
|
bool res = RsApplication::loadCertificate(accountId, ui.autologin_checkbox->isChecked()) ;
|
||||||
|
|
||||||
rsNotify->setDisableAskPassword(false);
|
RsLoginHelper::clearPgpPassphrase();
|
||||||
rsNotify->clearPgpPassphrase();
|
|
||||||
|
|
||||||
if(res)
|
if(res)
|
||||||
accept();
|
accept();
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include "gui/msgs/MessageComposer.h"
|
#include "gui/msgs/MessageComposer.h"
|
||||||
|
|
||||||
#include <retroshare/rsiface.h>
|
#include <retroshare/rsiface.h>
|
||||||
|
#include <retroshare/rsinit.h>
|
||||||
#include <retroshare/rsbanlist.h>
|
#include <retroshare/rsbanlist.h>
|
||||||
#include <retroshare/rsconfig.h>
|
#include <retroshare/rsconfig.h>
|
||||||
|
|
||||||
|
@ -767,7 +768,7 @@ void ConnectFriendWizard::accept()
|
||||||
bool cancelled;
|
bool cancelled;
|
||||||
std::string pgp_password;
|
std::string pgp_password;
|
||||||
|
|
||||||
if(!NotifyQt::getInstance()->askForPassword(tr("Profile password needed.").toStdString(), pgp_name + " (" + rsPeers->getOwnId().toStdString() + ")", prev_is_bad, pgp_password,cancelled))
|
if(!RsLoginHelper::askForPassword(tr("Profile password needed.").toStdString(), pgp_name + " (" + rsPeers->getOwnId().toStdString() + ")", prev_is_bad, pgp_password,cancelled))
|
||||||
{
|
{
|
||||||
QMessageBox::critical(NULL,tr("Identity creation failed"),tr("Cannot create an identity linked to your profile without your profile password."));
|
QMessageBox::critical(NULL,tr("Identity creation failed"),tr("Cannot create an identity linked to your profile without your profile password."));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <retroshare/rspeers.h>
|
#include <retroshare/rspeers.h>
|
||||||
#include <retroshare/rsdisc.h>
|
#include <retroshare/rsdisc.h>
|
||||||
#include <retroshare/rsmsgs.h>
|
#include <retroshare/rsmsgs.h>
|
||||||
|
#include <retroshare/rsinit.h>
|
||||||
|
|
||||||
#include <retroshare-gui/mainpage.h>
|
#include <retroshare-gui/mainpage.h>
|
||||||
|
|
||||||
|
@ -364,13 +365,13 @@ void PGPKeyDialog::signGPGKey()
|
||||||
bool cancelled;
|
bool cancelled;
|
||||||
std::string gpg_password;
|
std::string gpg_password;
|
||||||
|
|
||||||
if(!NotifyQt::getInstance()->askForPassword(tr("Profile password needed.").toStdString(), gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")", false, gpg_password,cancelled))
|
if(!RsLoginHelper::askForPassword(tr("Profile password needed.").toStdString(), gpg_name + " (" + rsPeers->getOwnId().toStdString() + ")", false, gpg_password,cancelled))
|
||||||
{
|
{
|
||||||
QMessageBox::critical(NULL,tr("Identity creation failed"),tr("Cannot create an identity linked to your profile without your profile password."));
|
QMessageBox::critical(NULL,tr("Identity creation failed"),tr("Cannot create an identity linked to your profile without your profile password."));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
rsNotify->clearPgpPassphrase(); // just in case
|
RsLoginHelper::clearPgpPassphrase(); // just in case
|
||||||
|
|
||||||
if(!rsPeers->signGPGCertificate(pgpId,gpg_password))
|
if(!rsPeers->signGPGCertificate(pgpId,gpg_password))
|
||||||
QMessageBox::warning ( NULL, tr("Signature Failure"), tr("Check the password!"), QMessageBox::Ok);
|
QMessageBox::warning ( NULL, tr("Signature Failure"), tr("Check the password!"), QMessageBox::Ok);
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <retroshare/rspeers.h>
|
#include <retroshare/rspeers.h>
|
||||||
#include <retroshare/rsidentity.h>
|
#include <retroshare/rsidentity.h>
|
||||||
#include <retroshare/rsmsgs.h>
|
#include <retroshare/rsmsgs.h>
|
||||||
|
#include <retroshare/rsinit.h>
|
||||||
#include <util/rsdir.h>
|
#include <util/rsdir.h>
|
||||||
#include <util/qtthreadsutils.h>
|
#include <util/qtthreadsutils.h>
|
||||||
|
|
||||||
|
@ -231,27 +232,25 @@ void NotifyQt::handleSignatureEvent()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NotifyQt::graphical_askForPassword(const std::string& title, const std::string& key_details, bool prev_is_bad, std::string& password,bool& cancelled)
|
||||||
|
|
||||||
bool NotifyQt::askForPassword(const std::string& title, const std::string& key_details, bool prev_is_bad, std::string& password,bool& cancelled)
|
|
||||||
{
|
{
|
||||||
RsAutoUpdatePage::lockAllEvents() ;
|
RsAutoUpdatePage::lockAllEvents() ;
|
||||||
|
|
||||||
QString windowTitle;
|
QString windowTitle;
|
||||||
if (title == "") {
|
if (title == "")
|
||||||
windowTitle = tr("Passphrase required");
|
windowTitle = tr("Passphrase required");
|
||||||
} else if (title == "AuthSSLimpl::SignX509ReqWithGPG()") {
|
else if (title == "AuthSSLimpl::SignX509ReqWithGPG()")
|
||||||
windowTitle = tr("You need to sign your node's certificate.");
|
windowTitle = tr("You need to sign your node's certificate.");
|
||||||
} else if (title == "p3IdService::service_CreateGroup()") {
|
else if (title == "p3IdService::service_CreateGroup()")
|
||||||
windowTitle = tr("You need to sign your forum/chatrooms identity.");
|
windowTitle = tr("You need to sign your forum/chatrooms identity.");
|
||||||
} else {
|
else
|
||||||
windowTitle = QString::fromStdString(title);
|
windowTitle = QString::fromStdString(title);
|
||||||
}
|
|
||||||
|
|
||||||
QString labelText = ( prev_is_bad ? QString("%1<br/><br/>").arg(tr("Wrong password !")) : QString() )
|
QString labelText = ( prev_is_bad ? QString("%1<br/><br/>").arg(tr("Wrong password !")) : QString() )
|
||||||
+ QString("<b>%1</b><br/>Profile: <i>%2</i>\n")
|
+ QString("<b>%1</b><br/>Profile: <i>%2</i>\n")
|
||||||
.arg( tr("Please enter your Retroshare passphrase")
|
.arg( tr("Please enter your Retroshare passphrase")
|
||||||
, QString::fromUtf8(key_details.c_str()) );
|
, QString::fromUtf8(key_details.c_str()) );
|
||||||
|
|
||||||
QLineEdit::EchoMode textEchoMode = QLineEdit::Password;
|
QLineEdit::EchoMode textEchoMode = QLineEdit::Password;
|
||||||
bool modal = true;
|
bool modal = true;
|
||||||
|
|
||||||
|
@ -267,12 +266,12 @@ bool NotifyQt::askForPassword(const std::string& title, const std::string& key_d
|
||||||
, Q_ARG(QLineEdit::EchoMode, textEchoMode)
|
, Q_ARG(QLineEdit::EchoMode, textEchoMode)
|
||||||
, Q_ARG(bool, modal)
|
, Q_ARG(bool, modal)
|
||||||
);
|
);
|
||||||
|
|
||||||
cancelled = false ;
|
cancelled = false ;
|
||||||
|
|
||||||
RsAutoUpdatePage::unlockAllEvents() ;
|
RsAutoUpdatePage::unlockAllEvents() ;
|
||||||
|
|
||||||
if (ret.execReturn == QDialog::Rejected) {
|
if (ret.execReturn == QDialog::Rejected) {
|
||||||
|
RsLoginHelper::clearPgpPassphrase();
|
||||||
password.clear() ;
|
password.clear() ;
|
||||||
cancelled = true ;
|
cancelled = true ;
|
||||||
return true ;
|
return true ;
|
||||||
|
@ -280,10 +279,12 @@ bool NotifyQt::askForPassword(const std::string& title, const std::string& key_d
|
||||||
|
|
||||||
if (ret.execReturn == QDialog::Accepted) {
|
if (ret.execReturn == QDialog::Accepted) {
|
||||||
password = ret.textValue.toUtf8().constData();
|
password = ret.textValue.toUtf8().constData();
|
||||||
return true;
|
RsLoginHelper::cachePgpPassphrase(password);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
RsLoginHelper::clearPgpPassphrase();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
bool NotifyQt::askForPluginConfirmation(const std::string& plugin_file_name, const std::string& plugin_file_hash, bool first_time)
|
bool NotifyQt::askForPluginConfirmation(const std::string& plugin_file_name, const std::string& plugin_file_hash, bool first_time)
|
||||||
{
|
{
|
||||||
|
@ -835,25 +836,33 @@ void NotifyQt::handleIncomingEvent(std::shared_ptr<const RsEvent> event)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ev6 = dynamic_cast<const RsSystemErrorEvent*>(event.get());
|
auto ev6 = dynamic_cast<const RsSystemEvent*>(event.get());
|
||||||
|
|
||||||
if(ev6)
|
if(ev6)
|
||||||
{
|
{
|
||||||
switch(ev6->mEventCode)
|
switch(ev6->mEventCode)
|
||||||
{
|
{
|
||||||
case RsSystemErrorEventCode::TIME_SHIFT_PROBLEM:
|
case RsSystemEventCode::TIME_SHIFT_PROBLEM:
|
||||||
displayErrorMessage(RS_SYS_WARNING,tr("System time mismatch"),tr("Time shift problem notification. Make sure your machine is on time, because it will break chat rooms."));
|
displayErrorMessage(RS_SYS_WARNING,tr("System time mismatch"),tr("Time shift problem notification. Make sure your machine is on time, because it will break chat rooms."));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RsSystemErrorEventCode::DISK_SPACE_ERROR:
|
case RsSystemEventCode::DISK_SPACE_ERROR:
|
||||||
displayDiskSpaceWarning(ev6->mDiskErrorLocation,ev6->mDiskErrorSizeLimit);
|
displayDiskSpaceWarning(ev6->mDiskErrorLocation,ev6->mDiskErrorSizeLimit);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RsSystemErrorEventCode::DATA_STREAMING_ERROR:
|
case RsSystemEventCode::DATA_STREAMING_ERROR:
|
||||||
case RsSystemErrorEventCode::GENERAL_ERROR:
|
case RsSystemEventCode::GENERAL_ERROR:
|
||||||
displayErrorMessage(RS_SYS_WARNING,tr("Internal error"),QString::fromUtf8(ev6->mErrorMsg.c_str()));
|
displayErrorMessage(RS_SYS_WARNING,tr("Internal error"),QString::fromUtf8(ev6->mErrorMsg.c_str()));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RsSystemEventCode::PASSWORD_REQUESTED:
|
||||||
|
{
|
||||||
|
std::string password;
|
||||||
|
bool cancelled;
|
||||||
|
graphical_askForPassword(ev6->passwd_request_title, ev6->passwd_request_key_details, ev6->passwd_request_prev_is_bad, password,cancelled);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -86,7 +86,7 @@ class NotifyQt: public QObject, public NotifyClient
|
||||||
// virtual void notifyHistoryChanged(uint32_t msgId, int type);
|
// virtual void notifyHistoryChanged(uint32_t msgId, int type);
|
||||||
|
|
||||||
// virtual void notifyDiscInfoChanged() ;
|
// virtual void notifyDiscInfoChanged() ;
|
||||||
virtual bool askForPassword(const std::string& title, const std::string& key_details, bool prev_is_bad, std::string& password, bool &cancelled);
|
virtual bool graphical_askForPassword(const std::string& title, const std::string& key_details, bool prev_is_bad, std::string& password, bool &cancelled);
|
||||||
virtual bool askForPluginConfirmation(const std::string& plugin_filename, const std::string& plugin_file_hash,bool first_time);
|
virtual bool askForPluginConfirmation(const std::string& plugin_filename, const std::string& plugin_file_hash,bool first_time);
|
||||||
|
|
||||||
/* Notify from GUI */
|
/* Notify from GUI */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue