Don't store passwords to DB in server mode. Fixed disconnecting from legacy network
This commit is contained in:
parent
b5c026470f
commit
50bcfbf84c
4 changed files with 44 additions and 6 deletions
|
@ -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;
|
||||
|
|
|
@ -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(¬ifyUiOps);
|
||||
// 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());
|
||||
|
|
10
src/user.cpp
10
src/user.cpp
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue