diff options
Diffstat (limited to 'Swiften/Server/ServerFromClientSession.cpp')
| -rw-r--r-- | Swiften/Server/ServerFromClientSession.cpp | 117 | 
1 files changed, 0 insertions, 117 deletions
diff --git a/Swiften/Server/ServerFromClientSession.cpp b/Swiften/Server/ServerFromClientSession.cpp deleted file mode 100644 index dbe9745..0000000 --- a/Swiften/Server/ServerFromClientSession.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include <Swiften/Server/ServerFromClientSession.h> - -#include <boost/bind.hpp> - -#include <Swiften/Elements/ProtocolHeader.h> -#include <Swiften/Server/UserRegistry.h> -#include <Swiften/Network/Connection.h> -#include <Swiften/StreamStack/XMPPLayer.h> -#include <Swiften/Elements/StreamFeatures.h> -#include <Swiften/Elements/ResourceBind.h> -#include <Swiften/Elements/StartSession.h> -#include <Swiften/Elements/IQ.h> -#include <Swiften/Elements/AuthSuccess.h> -#include <Swiften/Elements/AuthFailure.h> -#include <Swiften/Elements/AuthRequest.h> -#include <Swiften/SASL/PLAINMessage.h> - -namespace Swift { - -ServerFromClientSession::ServerFromClientSession( -		const std::string& id, -		boost::shared_ptr<Connection> connection,  -		PayloadParserFactoryCollection* payloadParserFactories,  -		PayloadSerializerCollection* payloadSerializers, -		UserRegistry* userRegistry) :  -			Session(connection, payloadParserFactories, payloadSerializers), -			id_(id), -			userRegistry_(userRegistry), -			authenticated_(false), -			initialized(false), -			allowSASLEXTERNAL(false) { -} - - -void ServerFromClientSession::handleElement(boost::shared_ptr<Element> element) { -	if (isInitialized()) { -		onElementReceived(element); -	} -	else { -		if (AuthRequest* authRequest = dynamic_cast<AuthRequest*>(element.get())) { -			if (authRequest->getMechanism() == "PLAIN" || (allowSASLEXTERNAL && authRequest->getMechanism() == "EXTERNAL")) { -				if (authRequest->getMechanism() == "EXTERNAL") { -						getXMPPLayer()->writeElement(boost::shared_ptr<AuthSuccess>(new AuthSuccess())); -						authenticated_ = true; -						getXMPPLayer()->resetParser(); -				} -				else { -					PLAINMessage plainMessage(authRequest->getMessage() ? *authRequest->getMessage() : createSafeByteArray("")); -					if (userRegistry_->isValidUserPassword(JID(plainMessage.getAuthenticationID(), getLocalJID().getDomain()), plainMessage.getPassword())) { -						getXMPPLayer()->writeElement(boost::shared_ptr<AuthSuccess>(new AuthSuccess())); -						user_ = plainMessage.getAuthenticationID(); -						authenticated_ = true; -						getXMPPLayer()->resetParser(); -					} -					else { -						getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure)); -						finishSession(AuthenticationFailedError); -					} -				} -			} -			else { -				getXMPPLayer()->writeElement(boost::shared_ptr<AuthFailure>(new AuthFailure)); -				finishSession(NoSupportedAuthMechanismsError); -			} -		} -		else if (IQ* iq = dynamic_cast<IQ*>(element.get())) { -			if (boost::shared_ptr<ResourceBind> resourceBind = iq->getPayload<ResourceBind>()) { -				setRemoteJID(JID(user_, getLocalJID().getDomain(), resourceBind->getResource())); -				boost::shared_ptr<ResourceBind> resultResourceBind(new ResourceBind()); -				resultResourceBind->setJID(getRemoteJID()); -				getXMPPLayer()->writeElement(IQ::createResult(JID(), iq->getID(), resultResourceBind)); -			} -			else if (iq->getPayload<StartSession>()) { -				getXMPPLayer()->writeElement(IQ::createResult(getRemoteJID(), iq->getID())); -				setInitialized(); -			} -		} -	} -} - -void ServerFromClientSession::handleStreamStart(const ProtocolHeader& incomingHeader) { -	setLocalJID(JID("", incomingHeader.getTo())); -	ProtocolHeader header; -	header.setFrom(incomingHeader.getTo()); -	header.setID(id_); -	getXMPPLayer()->writeHeader(header); - -	boost::shared_ptr<StreamFeatures> features(new StreamFeatures()); -	if (!authenticated_) { -		features->addAuthenticationMechanism("PLAIN"); -		if (allowSASLEXTERNAL) { -			features->addAuthenticationMechanism("EXTERNAL"); -		} -	} -	else { -		features->setHasResourceBind(); -		features->setHasSession(); -	} -	getXMPPLayer()->writeElement(features); -} - -void ServerFromClientSession::setInitialized() { -	initialized = true; -	onSessionStarted(); -} - -void ServerFromClientSession::setAllowSASLEXTERNAL() { -	allowSASLEXTERNAL = true; -} - -}  | 
 Swift