diff options
Diffstat (limited to 'Swift/Controllers')
-rw-r--r-- | Swift/Controllers/MainController.cpp | 8 | ||||
-rw-r--r-- | Swift/Controllers/UIInterfaces/LoginWindow.h | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index f215dc6..f4fdff6 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -365,7 +365,7 @@ void MainController::performLoginFromCachedCredentials() { client_ = new Swift::Client(eventLoop_, &networkFactories_, jid_, password_, storages_); client_->setCertificateTrustChecker(certificateTrustChecker_); // FIXME: Remove this line to activate the trust checker - client_->setAlwaysTrustCertificates(); + //client_->setAlwaysTrustCertificates(); client_->onDataRead.connect(boost::bind(&XMLConsoleController::handleDataRead, xmlConsoleController_, _1)); client_->onDataWritten.connect(boost::bind(&XMLConsoleController::handleDataWritten, xmlConsoleController_, _1)); client_->onDisconnected.connect(boost::bind(&MainController::handleDisconnected, this, _1)); @@ -441,8 +441,10 @@ void MainController::handleDisconnected(const boost::optional<ClientError>& erro case ClientError::InvalidServerIdentityError: // FIXME: Popup a dialog message = "Certificate error (" + boost::lexical_cast<std::string>(error->getType()) + ")"; - // FIXME: Only do this if the user accepts the certificate - //certificateStorage_->addCertificate(certificateTrustChecker_->getLastCertificate()); + if (loginWindow_->askUserToTrustCertificatePermanently(message)) { + // FIXME: Only do this if the user accepts the certificate + certificateStorage_->addCertificate(certificateTrustChecker_->getLastCertificate()); + } break; } if (!rosterController_) { //hasn't been logged in yet diff --git a/Swift/Controllers/UIInterfaces/LoginWindow.h b/Swift/Controllers/UIInterfaces/LoginWindow.h index 54d8099..e9ea92f 100644 --- a/Swift/Controllers/UIInterfaces/LoginWindow.h +++ b/Swift/Controllers/UIInterfaces/LoginWindow.h @@ -26,6 +26,8 @@ namespace Swift { boost::signal<void (const String&, const String&, const String& /* certificateFile */, bool /* remember password*/, bool /* login automatically */)> onLoginRequest; virtual void setLoginAutomatically(bool loginAutomatically) = 0; virtual void quit() = 0; + /** Blocking request whether a cert should be permanently trusted.*/ + virtual bool askUserToTrustCertificatePermanently(const String& message) = 0; boost::signal<void ()> onCancelLoginRequest; boost::signal<void ()> onQuitRequest; |