diff options
author | Kevin Smith <git@kismith.co.uk> | 2010-12-13 15:49:19 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2010-12-13 18:48:24 (GMT) |
commit | c8603ee2ea4dfe9b881367198dbd259986345412 (patch) | |
tree | 66002456149a599038aebf2a8dfda8bc747e6e1d /Swift/Controllers | |
parent | ec277d0650b5a9b167d629a372562dda3b76be2e (diff) | |
download | swift-contrib-c8603ee2ea4dfe9b881367198dbd259986345412.zip swift-contrib-c8603ee2ea4dfe9b881367198dbd259986345412.tar.bz2 |
Initial cert confirmation
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; |