Don't store passwords to DB in server mode. Fixed disconnecting from legacy network

This commit is contained in:
HanzZ 2011-04-03 21:15:14 +02:00
parent b5c026470f
commit 50bcfbf84c
4 changed files with 44 additions and 6 deletions

View file

@ -31,6 +31,7 @@ namespace Transport {
class Component;
class RosterManager;
class ConversationManager;
class UserManager;
struct UserInfo;
/// Represents online XMPP user.
@ -41,7 +42,7 @@ class User {
/// \param userInfo UserInfo struct with informations needed to connect
/// this user to legacy network
/// \param component Component associated with this user
User(const Swift::JID &jid, UserInfo &userInfo, Component * component);
User(const Swift::JID &jid, UserInfo &userInfo, Component * component, UserManager *userManager);
/// Destroyes User.
virtual ~User();
@ -72,7 +73,10 @@ class User {
/// \return language
const char *getLang() { return "en"; }
void handleDisconnected(const std::string &error);
boost::signal<void ()> onReadyToConnect;
boost::signal<void ()> onDisconnected;
private:
void onConnectingTimeout();
@ -80,6 +84,7 @@ class User {
Swift::JID m_jid;
Component *m_component;
RosterManager *m_rosterManager;
UserManager *m_userManager;
ConversationManager *m_conversationManager;
Swift::EntityCapsManager *m_entityCapsManager;
Swift::PresenceOracle *m_presenceOracle;

View file

@ -204,6 +204,30 @@ static PurpleConversationUiOps conversation_ui_ops =
NULL
};
static void connection_report_disconnect(PurpleConnection *gc, PurpleConnectionError reason, const char *text){
PurpleAccount *account = purple_connection_get_account(gc);
User *user = (User *) account->ui_data;
if (!user)
return;
user->handleDisconnected(text);
}
static PurpleConnectionUiOps conn_ui_ops =
{
NULL,
NULL,
NULL,//connection_disconnected,
NULL,
NULL,
NULL,
NULL,
connection_report_disconnect,
NULL,
NULL,
NULL
};
static void transport_core_ui_init(void)
{
purple_blist_set_ui_ops(&blistUiOps);
@ -211,7 +235,7 @@ static void transport_core_ui_init(void)
// purple_notify_set_ui_ops(&notifyUiOps);
// purple_request_set_ui_ops(&requestUiOps);
// purple_xfers_set_ui_ops(getXferUiOps());
// purple_connections_set_ui_ops(&conn_ui_ops);
purple_connections_set_ui_ops(&conn_ui_ops);
purple_conversations_set_ui_ops(&conversation_ui_ops);
// #ifndef WIN32
// purple_dnsquery_set_ui_ops(getDNSUiOps());

View file

@ -22,17 +22,19 @@
#include "transport/transport.h"
#include "transport/storagebackend.h"
#include "transport/rostermanager.h"
#include "transport/usermanager.h"
#include "transport/conversationmanager.h"
#include "Swiften/Swiften.h"
namespace Transport {
User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component) {
User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, UserManager *userManager) {
m_jid = jid;
m_component = component;
m_presenceOracle = component->m_presenceOracle;
m_entityCapsManager = component->m_entityCapsManager;
m_userManager = userManager;
m_userInfo = userInfo;
m_connected = false;
m_readyForConnect = false;
@ -45,6 +47,7 @@ User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component) {
}
User::~User(){
m_reconnectTimer->stop();
delete m_rosterManager;
delete m_conversationManager;
}
@ -100,4 +103,9 @@ void User::onConnectingTimeout() {
onReadyToConnect();
}
void User::handleDisconnected(const std::string &error) {
onDisconnected();
m_userManager->removeUser(this);
}
}

View file

@ -102,8 +102,9 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
if (res.uin.find_last_of("%") != std::string::npos) {
res.uin.replace(res.uin.find_last_of("%"), 1, "@");
}
m_storageBackend->setUser(res);
registered = m_storageBackend->getUser(userkey, res);
// m_storageBackend->setUser(res);
// registered = m_storageBackend->getUser(userkey, res);
registered = true;
}
if (!registered) {
@ -120,7 +121,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
// // }
// //
// //
user = new User(presence->getFrom(), res, m_component);
user = new User(presence->getFrom(), res, m_component, this);
// TODO: handle features somehow
// // user->setFeatures(isVip ? CONFIG().VIPFeatures : CONFIG().transportFeatures);
// // // if (c != NULL)