summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-11-22 16:46:37 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-11-22 16:54:51 (GMT)
commit497dd9b099e5810057ebcd8a3f6755819cfecdef (patch)
treea65ecc29c3f86d2ed6b6050d4650708abceafa3d /Swift/Controllers/MainController.cpp
parentd9ca66fa828e99ec5b4067d954c97d882b9ab8fe (diff)
downloadswift-497dd9b099e5810057ebcd8a3f6755819cfecdef.zip
swift-497dd9b099e5810057ebcd8a3f6755819cfecdef.tar.bz2
Added auth success value support.
Diffstat (limited to 'Swift/Controllers/MainController.cpp')
-rw-r--r--Swift/Controllers/MainController.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 2ae110b..f05d42d 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -234,96 +234,97 @@ void MainController::handleInputNotIdle() {
queuedPresence_ = preIdlePresence_;
}
}
void MainController::handleIncomingPresence(boost::shared_ptr<Presence> presence) {
//FIXME: subscribe, subscribed
rosterController_->handleIncomingPresence(presence);
}
void MainController::handleLoginRequest(const String &username, const String &password, const String& certificateFile, bool remember) {
loginWindow_->setMessage("");
ProfileSettingsProvider* profileSettings = new ProfileSettingsProvider(username, settings_);
profileSettings->storeString("jid", username);
profileSettings->storeString("certificate", certificateFile);
profileSettings->storeString("pass", remember ? password : "");
loginWindow_->addAvailableAccount(profileSettings->getStringSetting("jid"), profileSettings->getStringSetting("pass"), profileSettings->getStringSetting("certificate"));
delete profileSettings;
jid_ = JID(username);
password_ = password;
certificateFile_ = certificateFile;
performLoginFromCachedCredentials();
}
void MainController::performLoginFromCachedCredentials() {
if (!client_) {
client_ = new Swift::Client(jid_, password_);
//client_->onDataRead.connect(&printIncomingData);
//client_->onDataWritten.connect(&printOutgoingData);
if (!certificateFile_.isEmpty()) {
client_->setCertificate(certificateFile_);
}
client_->onError.connect(boost::bind(&MainController::handleError, this, _1));
client_->onConnected.connect(boost::bind(&MainController::handleConnected, this));
client_->onMessageReceived.connect(boost::bind(&MainController::handleIncomingMessage, this, _1));
}
client_->connect();
}
void MainController::handleError(const ClientError& error) {
String message;
switch(error.getType()) {
case ClientError::UnknownError: message = "Unknown Error"; break;
case ClientError::DomainNameResolveError: message = "Unable to find server"; break;
case ClientError::ConnectionError: message = "Error connecting to server"; break;
case ClientError::ConnectionReadError: message = "Error while receiving server data"; break;
case ClientError::ConnectionWriteError: message = "Error while sending data to the server"; break;
case ClientError::XMLError: message = "Error parsing server data"; break;
case ClientError::AuthenticationFailedError: message = "Login/password invalid"; break;
+ case ClientError::ServerVerificationFailedError: message = "Server verification failed"; break;
case ClientError::NoSupportedAuthMechanismsError: message = "Authentication mechanisms not supported"; break;
case ClientError::UnexpectedElementError: message = "Unexpected response"; break;
case ClientError::ResourceBindError: message = "Error binding resource"; break;
case ClientError::SessionStartError: message = "Error starting session"; break;
case ClientError::TLSError: message = "Encryption error"; break;
case ClientError::ClientCertificateLoadError: message = "Error loading certificate (Invalid password?)"; break;
case ClientError::ClientCertificateError: message = "Certificate not authorized"; break;
}
if (!rosterController_) { //hasn't been logged in yet
signOut();
loginWindow_->setMessage(message);
}
logout();
if (rosterController_) {
//reconnectAfterError();
}
}
void MainController::handleCancelLoginRequest() {
signOut();
}
void MainController::signOut() {
logout();
idleDetector_->onInputIdle.connect(boost::bind(&MainController::handleInputIdle, this));
idleDetector_->onInputNotIdle.connect(boost::bind(&MainController::handleInputNotIdle, this));
loginWindow_->loggedOut();
foreach (JIDChatControllerPair controllerPair, chatControllers_) {
delete controllerPair.second;
}
chatControllers_.clear();
foreach (JIDMUCControllerPair controllerPair, mucControllers_) {
delete controllerPair.second;
}
mucControllers_.clear();
delete rosterController_;
rosterController_ = NULL;
resetClient();
}
void MainController::logout() {
if (client_ && client_->isAvailable()) {
client_->disconnect();
}
if (rosterController_) {
rosterController_->getWindow()->setMyStatusType(StatusShow::None);
rosterController_->getWindow()->setMyStatusText("");
}