Changeset - d94de26489f1
[Not reviewed]
0 6 0
Jan Kaluza - 14 years ago 2011-08-08 15:04:08
hanzz.k@gmail.com
Connect just from one resource (can be changed in config)
6 files changed with 21 insertions and 11 deletions:
0 comments (0 inline, 0 general)
include/Swiften/Server/ServerFromClientSession.cpp
Show inline comments
 
@@ -42,8 +42,6 @@ ServerFromClientSession::ServerFromClientSession(
 
			allowSASLEXTERNAL(false),
 
			tlsLayer(0),
 
			tlsConnected(false) {
 
	userRegistry->onPasswordValid.connect(boost::bind(&ServerFromClientSession::handlePasswordValid, this, _1));
 
	userRegistry->onPasswordInvalid.connect(boost::bind(&ServerFromClientSession::handlePasswordInvalid, this, _1));
 
}
 

	
 
ServerFromClientSession::~ServerFromClientSession() {
 
@@ -93,6 +91,9 @@ void ServerFromClientSession::handleElement(boost::shared_ptr<Element> element)
 
				else {
 
					PLAINMessage plainMessage(authRequest->getMessage() ? *authRequest->getMessage() : createSafeByteArray(""));
 
					user_ = plainMessage.getAuthenticationID();
 
					userRegistry_->onPasswordInvalid(JID(plainMessage.getAuthenticationID(), getLocalJID().getDomain()).toBare().toString());
 
					userRegistry_->onPasswordValid.connect(boost::bind(&ServerFromClientSession::handlePasswordValid, this, _1));
 
					userRegistry_->onPasswordInvalid.connect(boost::bind(&ServerFromClientSession::handlePasswordInvalid, this, _1));
 
					if (userRegistry_->isValidUserPassword(JID(plainMessage.getAuthenticationID(), getLocalJID().getDomain()), plainMessage.getPassword())) {
 
						// we're waiting for usermanager signal now
 
// 						authenticated_ = true;
include/transport/usermanager.h
Show inline comments
 
@@ -89,7 +89,7 @@ class UserManager {
 
		void handleGeneralPresenceReceived(Swift::Presence::ref presence);
 
		void handleProbePresence(Swift::Presence::ref presence);
 
		void handleSubscription(Swift::Presence::ref presence);
 
		void handleRemoveTimeout(const std::string jid);
 
		void handleRemoveTimeout(const std::string jid, bool reconnect);
 
// 		void handleDiscoInfoResponse(boost::shared_ptr<Swift::DiscoInfo> info, Swift::ErrorPayload::ref error, const Swift::JID& jid);
 
		void addUser(User *user);
 

	
spectrum/src/sample.cfg
Show inline comments
 
@@ -26,6 +26,6 @@ default_avatar=catmelonhead.jpg
 
#backend_config=backend_logging.cfg # log4cxx/log4j logging configuration file for backends
 

	
 
[database]
 
type = mysql # or "none" without database backend
 
#type = mysql # or "none" without database backend
 
database = test.sql
 
prefix=icq
src/config.cpp
Show inline comments
 
@@ -48,6 +48,7 @@ bool Config::load(const std::string &configfile, boost::program_options::options
 
		("service.admin_password", value<std::string>()->default_value(""), "Administrator password.")
 
		("service.reuse_old_backends", value<bool>()->default_value(true), "True if Spectrum should use old backends which were full in the past.")
 
		("service.idle_reconnect_time", value<int>()->default_value(4*3600), "Time in seconds after which idle users are reconnected to let their backend die.")
 
		("service.more_resources", value<bool>()->default_value(false), "Allow more resources to be connected in server mode at the same time.")
 
		("identity.name", value<std::string>()->default_value("Spectrum 2 Transport"), "Name showed in service discovery.")
 
		("identity.category", value<std::string>()->default_value("gateway"), "Disco#info identity category. 'gateway' by default.")
 
		("identity.type", value<std::string>()->default_value(""), "Type of transport ('icq','msn','gg','irc', ...)")
src/networkpluginserver.cpp
Show inline comments
 
@@ -631,7 +631,7 @@ void NetworkPluginServer::pingTimeout() {
 

	
 
		if ((*it)->users.size() == 0) {
 
			LOG4CXX_INFO(logger, "Disconnecting backend " << (*it) << ". There are no users.");
 
			(*it)->connection->disconnect();
 
// 			(*it)->connection->disconnect();
 
			(*it)->connection.reset();
 
		}
 
	}
src/usermanager.cpp
Show inline comments
 
@@ -188,7 +188,7 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
			Swift::Presence::ref highest = m_component->getPresenceOracle()->getHighestPriorityPresence(presence->getFrom().toBare());
 
			// There's no presence for this user, so disconnect
 
			if (!highest || (highest && highest->getType() == Swift::Presence::Unavailable)) {
 
				m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user->getJID().toBare().toString()));
 
				m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user->getJID().toBare().toString(), false));
 
				m_removeTimer->start();
 
			}
 
		}
 
@@ -199,12 +199,16 @@ void UserManager::handlePresence(Swift::Presence::ref presence) {
 
	}
 
}
 

	
 
void UserManager::handleRemoveTimeout(const std::string jid) {
 
	m_removeTimer->onTick.disconnect(boost::bind(&UserManager::handleRemoveTimeout, this, jid));
 
void UserManager::handleRemoveTimeout(const std::string jid, bool reconnect) {
 
	m_removeTimer->onTick.disconnect(boost::bind(&UserManager::handleRemoveTimeout, this, jid, reconnect));
 
	User *user = getUser(jid);
 
	if (user) {
 
		removeUser(user);
 
	}
 

	
 
	if (reconnect) {
 
		connectUser(jid);
 
	}
 
}
 

	
 
void UserManager::handleMessageReceived(Swift::Message::ref message) {
 
@@ -286,11 +290,15 @@ void UserManager::handleSubscription(Swift::Presence::ref presence) {
 

	
 
void UserManager::connectUser(const Swift::JID &user) {
 
	if (m_users.find(user.toBare().toString()) != m_users.end()) {
 
		std::cout << "FOUND\n";
 
		m_userRegistry->onPasswordValid(user);
 
		if (CONFIG_BOOL(m_component->getConfig(), "service.more_resources")) {
 
			m_userRegistry->onPasswordValid(user);
 
		}
 
		else {
 
			m_removeTimer->onTick.connect(boost::bind(&UserManager::handleRemoveTimeout, this, user.toBare().toString(), true));
 
			m_removeTimer->start();
 
		}
 
	}
 
	else {
 
		std::cout << "NOT FOUND - PRESENCe\n";
 
		Swift::Presence::ref response = Swift::Presence::create();
 
		response->setTo(m_component->getJID());
 
		response->setFrom(user);
0 comments (0 inline, 0 general)