More log4cxx
This commit is contained in:
parent
0498acd07a
commit
c00d5149d5
8 changed files with 75 additions and 17 deletions
|
@ -18,6 +18,7 @@
|
|||
#include "log4cxx/logger.h"
|
||||
#include "log4cxx/consoleappender.h"
|
||||
#include "log4cxx/patternlayout.h"
|
||||
#include "log4cxx/propertyconfigurator.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
|
@ -1031,8 +1032,13 @@ int main(int argc, char **argv) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
LoggerPtr root = log4cxx::Logger::getRootLogger();
|
||||
root->addAppender(new ConsoleAppender(new PatternLayout("%d %-5p %c: %m%n")));
|
||||
if (CONFIG_STRING(&config, "logging.backend_config").empty()) {
|
||||
LoggerPtr root = log4cxx::Logger::getRootLogger();
|
||||
root->addAppender(new ConsoleAppender(new PatternLayout("%d %-5p %c: %m%n")));
|
||||
}
|
||||
else {
|
||||
log4cxx::PropertyConfigurator::configure(CONFIG_STRING(&config, "logging.backend_config"));
|
||||
}
|
||||
|
||||
initPurple(config);
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@ backend_port=10001
|
|||
users_per_backend=2
|
||||
backend=../../backends/libpurple/spectrum_libpurple_backend
|
||||
#backend=../../backends/libircclient-qt/spectrum_libircclient-qt_backend
|
||||
#protocol=prpl-jabber
|
||||
protocol=prpl-msn
|
||||
protocol=prpl-jabber
|
||||
#protocol=prpl-msn
|
||||
#protocol=prpl-icq
|
||||
|
||||
[logging]
|
||||
|
|
|
@ -29,9 +29,14 @@
|
|||
#include "Swiften/Elements/RosterPayload.h"
|
||||
#include "Swiften/Elements/RosterItemPayload.h"
|
||||
#include "Swiften/Elements/RosterItemExchangePayload.h"
|
||||
#include "log4cxx/logger.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
namespace Transport {
|
||||
|
||||
static LoggerPtr logger = Logger::getLogger("RosterManager");
|
||||
|
||||
RosterManager::RosterManager(User *user, Component *component){
|
||||
m_rosterStorage = NULL;
|
||||
m_user = user;
|
||||
|
@ -88,7 +93,7 @@ void RosterManager::setBuddyCallback(Buddy *buddy) {
|
|||
buddy->onBuddyChanged.connect(boost::bind(&RosterStorage::storeBuddy, m_rosterStorage, buddy));
|
||||
}
|
||||
|
||||
std::cout << "ADDING " << buddy->getName() << "\n";
|
||||
LOG4CXX_INFO(logger, "Associating buddy " << buddy->getName() << " with " << m_user->getJID().toString());
|
||||
m_buddies[buddy->getName()] = buddy;
|
||||
onBuddySet(buddy);
|
||||
|
||||
|
@ -136,6 +141,7 @@ Buddy *RosterManager::getBuddy(const std::string &name) {
|
|||
void RosterManager::sendRIE() {
|
||||
m_RIETimer->stop();
|
||||
|
||||
LOG4CXX_INFO(logger, "Sending RIE stanza to " << m_user->getJID().toString());
|
||||
Swift::RosterItemExchangePayload::ref payload = Swift::RosterItemExchangePayload::ref(new Swift::RosterItemExchangePayload());
|
||||
for (std::map<std::string, Buddy *>::const_iterator it = m_buddies.begin(); it != m_buddies.end(); it++) {
|
||||
Buddy *buddy = (*it).second;
|
||||
|
@ -162,6 +168,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
|
|||
response->setFrom(presence->getTo());
|
||||
Buddy *buddy = getBuddy(Buddy::JIDToLegacyName(presence->getTo()));
|
||||
if (buddy) {
|
||||
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Subscription received and buddy " << Buddy::JIDToLegacyName(presence->getTo()) << " is already there => answering");
|
||||
switch (presence->getType()) {
|
||||
case Swift::Presence::Subscribe:
|
||||
response->setType(Swift::Presence::Subscribed);
|
||||
|
@ -185,6 +192,7 @@ void RosterManager::handleSubscription(Swift::Presence::ref presence) {
|
|||
buddyInfo.legacyName = Buddy::JIDToLegacyName(presence->getTo());
|
||||
buddyInfo.subscription = "both";
|
||||
buddyInfo.flags = 0;
|
||||
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Subscription received for new buddy " << buddyInfo.legacyName << " => adding to legacy network");
|
||||
|
||||
buddy = m_component->getFactory()->createBuddy(this, buddyInfo);
|
||||
setBuddy(buddy);
|
||||
|
@ -292,7 +300,7 @@ void RosterManager::setStorageBackend(StorageBackend *storageBackend) {
|
|||
|
||||
for (std::list<BuddyInfo>::const_iterator it = roster.begin(); it != roster.end(); it++) {
|
||||
Buddy *buddy = m_component->getFactory()->createBuddy(this, *it);
|
||||
std::cout << "CREATING BUDDY FROM DATABASE CACHE " << buddy->getName() << "\n";
|
||||
LOG4CXX_INFO(logger, m_user->getJID().toString() << ": Adding cached buddy " << buddy->getName() << " fom database");
|
||||
m_buddies[buddy->getName()] = buddy;
|
||||
buddy->onBuddyChanged.connect(boost::bind(&RosterStorage::storeBuddy, m_rosterStorage, buddy));
|
||||
onBuddySet(buddy);
|
||||
|
|
|
@ -28,12 +28,17 @@
|
|||
#include "transport/usermanager.h"
|
||||
#include "transport/rostermanager.h"
|
||||
#include "transport/buddy.h"
|
||||
#include "log4cxx/logger.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
using namespace Swift;
|
||||
using namespace boost;
|
||||
|
||||
namespace Transport {
|
||||
|
||||
static LoggerPtr logger = Logger::getLogger("RosterResponder");
|
||||
|
||||
RosterResponder::RosterResponder(Swift::IQRouter *router, UserManager *userManager) : Swift::Responder<RosterPayload>(router) {
|
||||
m_userManager = userManager;
|
||||
}
|
||||
|
@ -46,6 +51,7 @@ bool RosterResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
|
|||
// For now we send empty reponse, but TODO: Get buddies from database and send proper stored roster.
|
||||
User *user = m_userManager->getUser(from.toBare().toString());
|
||||
if (!user) {
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Sending roster");
|
||||
// Client can send jabber:iq:roster IQ before presence, so we do little hack here to
|
||||
// trigger logging in.
|
||||
// UserManager should create user now, if everything is OK.
|
||||
|
@ -62,6 +68,9 @@ bool RosterResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
|
|||
return true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in");
|
||||
}
|
||||
sendResponse(from, id, user->getRosterManager()->generateRosterPayload());
|
||||
return true;
|
||||
}
|
||||
|
@ -71,10 +80,12 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID&
|
|||
|
||||
User *user = m_userManager->getUser(from.toBare().toString());
|
||||
if (!user) {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (payload->getItems().size() == 0) {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": Roster push with no item");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -83,9 +94,11 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID&
|
|||
Buddy *buddy = user->getRosterManager()->getBuddy(Buddy::JIDToLegacyName(item.getJID()));
|
||||
if (buddy) {
|
||||
if (item.getSubscription() == Swift::RosterItemPayload::Remove) {
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Removing buddy " << buddy->getName());
|
||||
onBuddyRemoved(buddy);
|
||||
}
|
||||
else {
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Updating buddy " << buddy->getName());
|
||||
onBuddyUpdated(buddy, item);
|
||||
}
|
||||
}
|
||||
|
@ -97,6 +110,7 @@ bool RosterResponder::handleSetRequest(const Swift::JID& from, const Swift::JID&
|
|||
buddyInfo.legacyName = Buddy::JIDToLegacyName(item.getJID());
|
||||
buddyInfo.subscription = "both";
|
||||
buddyInfo.flags = 0;
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Adding buddy " << buddyInfo.legacyName);
|
||||
|
||||
buddy = user->getComponent()->getFactory()->createBuddy(user->getRosterManager(), buddyInfo);
|
||||
user->getRosterManager()->setBuddy(buddy);
|
||||
|
|
|
@ -77,7 +77,6 @@ Component::Component(Swift::EventLoop *loop, Config *config, Factory *factory) {
|
|||
log4cxx::PropertyConfigurator::configure(CONFIG_STRING(m_config, "logging.config"));
|
||||
}
|
||||
|
||||
|
||||
m_jid = Swift::JID(CONFIG_STRING(m_config, "service.jid"));
|
||||
|
||||
m_factories = new BoostNetworkFactories(loop);
|
||||
|
|
25
src/user.cpp
25
src/user.cpp
|
@ -28,9 +28,14 @@
|
|||
#include "Swiften/Server/ServerStanzaChannel.h"
|
||||
#include "Swiften/Elements/StreamError.h"
|
||||
#include "Swiften/Elements/MUCPayload.h"
|
||||
#include "log4cxx/logger.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
namespace Transport {
|
||||
|
||||
static LoggerPtr logger = Logger::getLogger("User");
|
||||
|
||||
User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, UserManager *userManager) {
|
||||
m_jid = jid;
|
||||
|
||||
|
@ -47,9 +52,11 @@ User::User(const Swift::JID &jid, UserInfo &userInfo, Component *component, User
|
|||
|
||||
m_rosterManager = new RosterManager(this, m_component);
|
||||
m_conversationManager = new ConversationManager(this, m_component);
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Created");
|
||||
}
|
||||
|
||||
User::~User(){
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Destroying");
|
||||
m_reconnectTimer->stop();
|
||||
delete m_rosterManager;
|
||||
delete m_conversationManager;
|
||||
|
@ -73,32 +80,35 @@ void User::handlePresence(Swift::Presence::ref presence) {
|
|||
boost::shared_ptr<Swift::CapsInfo> capsInfo = presence->getPayload<Swift::CapsInfo>();
|
||||
if (capsInfo && capsInfo->getHash() == "sha-1") {
|
||||
if (m_entityCapsManager->getCaps(presence->getFrom()) != Swift::DiscoInfo::ref()) {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network");
|
||||
m_readyForConnect = true;
|
||||
onReadyToConnect();
|
||||
}
|
||||
}
|
||||
else if (m_component->inServerMode()) {
|
||||
m_readyForConnect = true;
|
||||
onReadyToConnect();
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network");
|
||||
m_readyForConnect = true;
|
||||
onReadyToConnect();
|
||||
}
|
||||
else {
|
||||
m_reconnectTimer->start();
|
||||
}
|
||||
}
|
||||
}
|
||||
std::cout << "HANDLE PRESENCE\n";
|
||||
bool isMUC = presence->getPayload<Swift::MUCPayload>() != NULL || *presence->getTo().getNode().c_str() == '#';
|
||||
if (isMUC) {
|
||||
std::cout << "AAAAAAAAA\n";
|
||||
if (presence->getType() == Swift::Presence::Unavailable) {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to left room " << presence->getTo().getNode());
|
||||
onRoomLeft(presence->getTo().getNode());
|
||||
}
|
||||
else {
|
||||
// force connection to legacy network to let backend to handle auto-join on connect.
|
||||
if (!m_readyForConnect) {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Ready to be connected to legacy network");
|
||||
m_readyForConnect = true;
|
||||
onReadyToConnect();
|
||||
}
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Going to join room " << presence->getTo().getNode() << " as " << presence->getTo().getResource());
|
||||
onRoomJoined(presence->getTo().getNode(), presence->getTo().getResource(), "");
|
||||
}
|
||||
return;
|
||||
|
@ -108,6 +118,7 @@ void User::handlePresence(Swift::Presence::ref presence) {
|
|||
highest->setTo(presence->getFrom().toBare());
|
||||
highest->setFrom(m_component->getJID());
|
||||
m_component->getStanzaChannel()->sendPresence(highest);
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Changing legacy network presence to " << highest->getType());
|
||||
onPresenceChanged(highest);
|
||||
}
|
||||
else {
|
||||
|
@ -133,6 +144,12 @@ void User::onConnectingTimeout() {
|
|||
}
|
||||
|
||||
void User::handleDisconnected(const std::string &error) {
|
||||
if (error.empty()) {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Disconnected from legacy network");
|
||||
}
|
||||
else {
|
||||
LOG4CXX_INFO(logger, m_jid.toString() << ": Disconnected from legacy network with error " << error);
|
||||
}
|
||||
onDisconnected();
|
||||
|
||||
boost::shared_ptr<Swift::Message> msg(new Swift::Message());
|
||||
|
|
|
@ -25,9 +25,14 @@
|
|||
#include "transport/conversationmanager.h"
|
||||
#include "transport/rostermanager.h"
|
||||
#include "storageresponder.h"
|
||||
#include "log4cxx/logger.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
namespace Transport {
|
||||
|
||||
static LoggerPtr logger = Logger::getLogger("UserManager");
|
||||
|
||||
UserManager::UserManager(Component *component, StorageBackend *storageBackend) {
|
||||
m_cachedUser = NULL;
|
||||
m_onlineBuddies = 0;
|
||||
|
@ -130,6 +135,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
|
|||
}
|
||||
|
||||
if (!registered) {
|
||||
LOG4CXX_WARN(logger, "Unregistered user " << userkey << " tried to login");
|
||||
// TODO: logging
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -28,12 +28,17 @@
|
|||
#include "transport/usermanager.h"
|
||||
#include "transport/rostermanager.h"
|
||||
#include "transport/transport.h"
|
||||
#include "log4cxx/logger.h"
|
||||
|
||||
using namespace log4cxx;
|
||||
|
||||
using namespace Swift;
|
||||
using namespace boost;
|
||||
|
||||
namespace Transport {
|
||||
|
||||
static LoggerPtr logger = Logger::getLogger("VCardResponder");
|
||||
|
||||
VCardResponder::VCardResponder(Swift::IQRouter *router, UserManager *userManager) : Swift::Responder<VCard>(router) {
|
||||
m_id = 0;
|
||||
m_userManager = userManager;
|
||||
|
@ -43,12 +48,13 @@ VCardResponder::~VCardResponder() {
|
|||
}
|
||||
|
||||
void VCardResponder::sendVCard(unsigned int id, boost::shared_ptr<Swift::VCard> vcard) {
|
||||
std::cout << "RECEIVED VCARD FROM BACKEND\n";
|
||||
if (m_queries.find(id) == m_queries.end()) {
|
||||
std::cout << "ERROR\n";
|
||||
LOG4CXX_WARN(logger, "Unexpected VCard from legacy network with id " << id);
|
||||
return;
|
||||
}
|
||||
std::cout << "SENT " << m_queries[id].to << " " << m_queries[id].from << " " << m_queries[id].id << "\n";
|
||||
|
||||
LOG4CXX_INFO(logger, m_queries[id].from.toString() << ": Forwarding VCard of " << m_queries[id].to.toString() << " from legacy network");
|
||||
|
||||
sendResponse(m_queries[id].from, m_queries[id].to, m_queries[id].id, vcard);
|
||||
m_queries.erase(id);
|
||||
}
|
||||
|
@ -56,9 +62,9 @@ void VCardResponder::sendVCard(unsigned int id, boost::shared_ptr<Swift::VCard>
|
|||
bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr<Swift::VCard> payload) {
|
||||
// Get means we're in server mode and user wants to fetch his roster.
|
||||
// For now we send empty reponse, but TODO: Get buddies from database and send proper stored roster.
|
||||
std::cout << "VCARD\n";
|
||||
User *user = m_userManager->getUser(from.toBare().toString());
|
||||
if (!user) {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -66,7 +72,6 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
|
|||
|
||||
std::string name = to_.getUnescapedNode();
|
||||
if (name.empty()) {
|
||||
std::cout << "aaaa " << user->getComponent()->getJID().toString() << "\n";
|
||||
to_ = user->getJID();
|
||||
name = to_.getUnescapedNode();
|
||||
}
|
||||
|
@ -75,7 +80,7 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
|
|||
name.replace(name.find_last_of("%"), 1, "@");
|
||||
}
|
||||
|
||||
std::cout << "VCARD1 " << name << "\n";
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Requested VCard of " << name);
|
||||
|
||||
m_queries[m_id].from = from;
|
||||
m_queries[m_id].to = to_;
|
||||
|
@ -86,14 +91,17 @@ bool VCardResponder::handleGetRequest(const Swift::JID& from, const Swift::JID&
|
|||
|
||||
bool VCardResponder::handleSetRequest(const Swift::JID& from, const Swift::JID& to, const std::string& id, boost::shared_ptr<Swift::VCard> payload) {
|
||||
if (!to.getNode().empty()) {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": Tried to set VCard of somebody else");
|
||||
return false;
|
||||
}
|
||||
|
||||
User *user = m_userManager->getUser(from.toBare().toString());
|
||||
if (!user) {
|
||||
LOG4CXX_WARN(logger, from.toBare().toString() << ": User is not logged in");
|
||||
return false;
|
||||
}
|
||||
|
||||
LOG4CXX_INFO(logger, from.toBare().toString() << ": Setting VCard");
|
||||
onVCardUpdated(user, payload);
|
||||
|
||||
sendResponse(from, id, boost::shared_ptr<VCard>(new VCard()));
|
||||
|
|
Loading…
Add table
Reference in a new issue