First tries of full MUC support
This commit is contained in:
parent
40d6781842
commit
7292a987c5
3 changed files with 41 additions and 5 deletions
|
@ -915,6 +915,41 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
|
|||
}
|
||||
}
|
||||
|
||||
void handleJoinRoomRequest(const std::string &user, const std::string &room, const std::string &nickname, const std::string &pasword) {
|
||||
PurpleAccount *account = m_sessions[user];
|
||||
if (!account) {
|
||||
return;
|
||||
}
|
||||
|
||||
PurpleConnection *gc = purple_account_get_connection(account);
|
||||
GHashTable *comps = NULL;
|
||||
|
||||
// Check if the PurpleChat is not stored in buddy list
|
||||
PurpleChat *chat = purple_blist_find_chat(account, room.c_str());
|
||||
if (chat) {
|
||||
comps = purple_chat_get_components(chat);
|
||||
}
|
||||
else if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) {
|
||||
comps = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, room.c_str());
|
||||
}
|
||||
|
||||
LOG4CXX_INFO(logger, user << ": Joining the room " << room);
|
||||
if (comps) {
|
||||
serv_join_chat(gc, comps);
|
||||
g_hash_table_destroy(comps);
|
||||
}
|
||||
}
|
||||
|
||||
void handleLeaveRoomRequest(const std::string &user, const std::string &room) {
|
||||
PurpleAccount *account = m_sessions[user];
|
||||
if (!account) {
|
||||
return;
|
||||
}
|
||||
|
||||
PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, room.c_str(), account);
|
||||
purple_conversation_destroy(conv);
|
||||
}
|
||||
|
||||
void handleFTStartRequest(const std::string &user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID) {
|
||||
PurpleXfer *xfer = m_unhandledXfers[user + fileName + buddyName];
|
||||
if (xfer) {
|
||||
|
|
|
@ -13,8 +13,8 @@ admin_password=test
|
|||
#cert=server.pfx #patch to PKCS#12 certificate
|
||||
#cert_password=test #password to that certificate if any
|
||||
users_per_backend=10
|
||||
#backend=/home/hanzz/code/libtransport/backends/libpurple/spectrum2_libpurple_backend
|
||||
backend=/home/hanzz/code/libtransport/backends/smstools3/spectrum2_smstools3_backend
|
||||
backend=/home/hanzz/code/libtransport/backends/libpurple/spectrum2_libpurple_backend
|
||||
#backend=/home/hanzz/code/libtransport/backends/smstools3/spectrum2_smstools3_backend
|
||||
#backend=/usr/bin/mono /home/hanzz/code/networkplugin-csharp/msnp-sharp-backend/bin/Debug/msnp-sharp-backend.exe
|
||||
#backend=/home/hanzz/code/libtransport/backends/frotz/spectrum2_frotz_backend
|
||||
#backend=/home/hanzz/code/libtransport/backends/libircclient-qt/spectrum2_libircclient-qt_backend
|
||||
|
@ -22,6 +22,7 @@ backend=/home/hanzz/code/libtransport/backends/smstools3/spectrum2_smstools3_bac
|
|||
protocol=any
|
||||
#protocol=prpl-icq
|
||||
irc_server=irc.freenode.org
|
||||
working_dir=./
|
||||
|
||||
[backend]
|
||||
#default_avatar=catmelonhead.jpg
|
||||
|
@ -33,7 +34,7 @@ incoming_dir=/var/spool/sms/incoming
|
|||
#backend_config=/home/hanzz/code/libtransport/spectrum/src/backend-logging.cfg # log4cxx/log4j logging configuration file for backends
|
||||
|
||||
[database]
|
||||
type = sqlite3 # or "none" without database backend
|
||||
type = none # or "none" without database backend
|
||||
database = test.sql
|
||||
prefix=icq
|
||||
#type = mysql # or "none" without database backend.......................................................................................................................
|
||||
|
|
|
@ -213,8 +213,8 @@ void User::handlePresence(Swift::Presence::ref presence) {
|
|||
bool isMUC = presence->getPayload<Swift::MUCPayload>() != NULL || *presence->getTo().getNode().c_str() == '#';
|
||||
if (isMUC) {
|
||||
if (presence->getType() == Swift::Presence::Unavailable) {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to left room " << presence->getTo().getNode());
|
||||
std::string room = Buddy::JIDToLegacyName(presence->getTo());
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to left room " << room);
|
||||
onRoomLeft(room);
|
||||
}
|
||||
else {
|
||||
|
@ -224,8 +224,8 @@ void User::handlePresence(Swift::Presence::ref presence) {
|
|||
m_readyForConnect = true;
|
||||
onReadyToConnect();
|
||||
}
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to join room " << presence->getTo().getNode() << " as " << presence->getTo().getResource());
|
||||
std::string room = Buddy::JIDToLegacyName(presence->getTo());
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to join room " << room << " as " << presence->getTo().getResource());
|
||||
std::string password = "";
|
||||
if (presence->getPayload<Swift::MUCPayload>() != NULL) {
|
||||
password = presence->getPayload<Swift::MUCPayload>()->getPassword() ? *presence->getPayload<Swift::MUCPayload>()->getPassword() : "";
|
||||
|
|
Loading…
Add table
Reference in a new issue