X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.h;h=c71dfa8c37ae77e195600857430a547605dbf8e2;hp=045b8f3c67b4567accd7251a82a8816218a640b8;hb=0dfaab93892aee333f7b838658ef85b9ff270ba7;hpb=694f9bfbf7f1af19108461c7e00d133e55082bce diff --git a/src/core/core.h b/src/core/core.h index 045b8f3c..c71dfa8c 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2014 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef CORE_H @@ -41,10 +41,11 @@ #include "storage.h" #include "types.h" +class CoreAuthHandler; class CoreSession; +struct NetworkInfo; class SessionThread; class SignalProxy; -struct NetworkInfo; class AbstractSqlMigrationReader; class AbstractSqlMigrationWriter; @@ -63,6 +64,16 @@ public: /*** Storage access ***/ // These methods are threadsafe. + //! Validate user + /** + * \param userName The user's login name + * \param password The user's uncrypted password + * \return The user's ID if valid; 0 otherwise + */ + static inline UserId validateUser(const QString &userName, const QString &password) { + return instance()->_storage->validateUser(userName, password); + } + //! Store a user setting persistently /** * \param userId The users Id @@ -471,7 +482,12 @@ public: } - const QDateTime &startTime() const { return _startTime; } + static inline QDateTime startTime() { return instance()->_startTime; } + static inline bool isConfigured() { return instance()->_configured; } + static bool sslSupported(); + static QVariantList backendInfo(); + + static QString setup(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData); static inline QTimer &syncTimer() { return instance()->_storageSyncTimer; } @@ -484,14 +500,15 @@ public slots: /** \note This method is threadsafe. */ void syncStorage(); - void setupInternalClientSession(SignalProxy *proxy); + void setupInternalClientSession(InternalPeer *clientConnection); + QString setupCore(const QString &adminUser, const QString &adminPassword, const QString &backend, const QVariantMap &setupData); signals: //! Sent when a BufferInfo is updated in storage. void bufferInfoUpdated(UserId user, const BufferInfo &info); - //! Relay From CoreSession::sessionState(const QVariant &). Used for internal connection only - void sessionState(const QVariant &); + //! Relay from CoreSession::sessionState(). Used for internal connection only + void sessionState(const Protocol::SessionState &sessionState); protected: virtual void customEvent(QEvent *event); @@ -500,16 +517,12 @@ private slots: bool startListening(); void stopListening(const QString &msg = QString()); void incomingConnection(); - void clientHasData(); void clientDisconnected(); - bool initStorage(const QString &backend, QVariantMap settings, bool setup = false); - bool initStorage(QVariantMap dbSettings, bool setup = false); + bool initStorage(const QString &backend, const QVariantMap &settings, bool setup = false); -#ifdef HAVE_SSL - void sslErrors(const QList &errors); -#endif - void socketError(QAbstractSocket::SocketError); + void socketError(QAbstractSocket::SocketError err, const QString &errorString); + void setupClientSession(RemotePeer *, UserId); private: Core(); @@ -518,12 +531,9 @@ private: static Core *instanceptr; SessionThread *createSession(UserId userId, bool restoreState = false); - void setupClientSession(QTcpSocket *socket, UserId uid); - void addClientHelper(QTcpSocket *socket, UserId uid); - void processClientMessage(QTcpSocket *socket, const QVariantMap &msg); + void addClientHelper(RemotePeer *peer, UserId uid); //void processCoreSetup(QTcpSocket *socket, QVariantMap &msg); QString setupCoreForInternalUsage(); - QString setupCore(QVariantMap setupData); void registerStorageBackends(); bool registerStorageBackend(Storage *); @@ -535,6 +545,8 @@ private: void saveBackendSettings(const QString &backend, const QVariantMap &settings); QVariantMap promptForSettings(const Storage *storage); +private: + QSet _connectingClients; QHash sessions; Storage *_storage; QTimer _storageSyncTimer; @@ -547,9 +559,6 @@ private: OidentdConfigGenerator *_oidentdConfigGenerator; - QHash blocksizes; - QHash clientInfo; - QHash _storageBackends; QDateTime _startTime;