diff --git a/include/Swiften/Server/ServerFromClientSession.h b/include/Swiften/Server/ServerFromClientSession.h new file mode 100644 index 0000000000000000000000000000000000000000..6483e3a0c823ecb0d076a1fe1ee4a8ddd2e7529e --- /dev/null +++ b/include/Swiften/Server/ServerFromClientSession.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010 Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#pragma once + +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace Swift { + class ProtocolHeader; + class Element; + class Stanza; + class PayloadParserFactoryCollection; + class PayloadSerializerCollection; + class StreamStack; + class UserRegistry; + class XMPPLayer; + class ConnectionLayer; + class Connection; + class TLSServerLayer; + class TLSServerContextFactory; + class PKCS12Certificate; + + class ServerFromClientSession : public Session { + public: + ServerFromClientSession( + const std::string& id, + boost::shared_ptr connection, + PayloadParserFactoryCollection* payloadParserFactories, + PayloadSerializerCollection* payloadSerializers, + UserRegistry* userRegistry); + ~ServerFromClientSession(); + + boost::signal onSessionStarted; + void setAllowSASLEXTERNAL(); + const std::string &getUser() { + return user_; + } + + void addTLSEncryption(TLSServerContextFactory* tlsContextFactory, const PKCS12Certificate& cert); + + private: + void handleElement(boost::shared_ptr); + void handleStreamStart(const ProtocolHeader& header); + void handlePasswordValid(const std::string &user); + void handlePasswordInvalid(const std::string &user); + + void setInitialized(); + bool isInitialized() const { + return initialized; + } + + void handleTLSError() { } + void handleTLSConnected() { tlsConnected = true; } + + private: + std::string id_; + UserRegistry* userRegistry_; + bool authenticated_; + bool initialized; + bool allowSASLEXTERNAL; + std::string user_; + TLSServerLayer* tlsLayer; + bool tlsConnected; + }; +}