X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.h;h=e6ee9d899408eeef51f26d3c63c19c6e93635443;hp=0b455aef1cb504cfbdb5408d608bb92281f3f3e6;hb=4e40c486dea949244b73beaf73d5ceb1ef591b5b;hpb=cc6e7c08709c4e761e2fd9c2e322751015497003 diff --git a/src/core/core.h b/src/core/core.h index 0b455aef..e6ee9d89 100644 --- a/src/core/core.h +++ b/src/core/core.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2019 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -27,27 +27,21 @@ #include #include +#include #include #include #include -#ifdef HAVE_SSL -# include - -# include "sslserver.h" -#else -# include -# include -#endif - #include "authenticator.h" #include "bufferinfo.h" #include "deferredptr.h" #include "identserver.h" #include "message.h" +#include "metricsserver.h" #include "oidentdconfiggenerator.h" #include "sessionthread.h" #include "singleton.h" +#include "sslserver.h" #include "storage.h" #include "types.h" @@ -125,6 +119,26 @@ public: return instance()->_storage->getUserAuthenticator(userid) == authenticator; } + //! Gets the authenticator configured for a user. + /** + * \param userName The user's name as a QString. + * \return String value corresponding to the user's configure dauthenticator. + */ + static inline QString getUserAuthenticator(const QString& userName) + { + return instance()->_storage->getUserAuthenticator(instance()->_storage->getUserId(userName)); + } + + //! Gets the user ID mapped to a username. This is necessary so that non-database auth methods can log in users properly. + /** + * \param userName The user's name as a QString. + * \return userId The user's ID. + */ + static inline UserId getUserId(const QString& userName) + { + return instance()->_storage->getUserId(userName); + } + //! Change a user's password /** * \param userId The user's ID @@ -173,7 +187,7 @@ public: static void removeIdentity(UserId user, IdentityId identityId) { instance()->_storage->removeIdentity(user, identityId); } - static QList identities(UserId user) { return instance()->_storage->identities(user); } + static std::vector identities(UserId user) { return instance()->_storage->identities(user); } //! Create a Network in the Storage and store it's Id in the given NetworkInfo /** \note This method is thredsafe. @@ -209,9 +223,9 @@ public: /** \note This method is thredsafe. * * \param user The core user - * \return QList. + * \return std::vector. */ - static inline QList networks(UserId user) { return instance()->_storage->networks(user); } + static inline std::vector networks(UserId user) { return instance()->_storage->networks(user); } //! Get a list of Networks to restore /** Return a list of networks the user was connected at the time of core shutdown @@ -219,7 +233,7 @@ public: * * \param user The User Id in question */ - static inline QList connectedNetworks(UserId user) { return instance()->_storage->connectedNetworks(user); } + static inline std::vector connectedNetworks(UserId user) { return instance()->_storage->connectedNetworks(user); } //! Update the connected state of a network /** \note This method is threadsafe @@ -386,7 +400,7 @@ public: * \param limit if != -1 limit the returned list to a max of \limit entries * \return The requested list of messages */ - static inline QList requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) + static inline std::vector requestMsgs(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, int limit = -1) { return instance()->_storage->requestMsgs(user, bufferId, first, last, limit); } @@ -399,7 +413,7 @@ public: * \param type The Message::Types that should be returned * \return The requested list of messages */ - static inline QList requestMsgsFiltered(UserId user, + static inline std::vector requestMsgsFiltered(UserId user, BufferId bufferId, MsgId first = -1, MsgId last = -1, @@ -410,13 +424,33 @@ public: return instance()->_storage->requestMsgsFiltered(user, bufferId, first, last, limit, type, flags); } + //! Request a certain number messages stored in a given buffer, matching certain filters, ascending + /** \param buffer The buffer we request messages from + * \param first if != -1 return only messages with a MsgId >= first + * \param last if != -1 return only messages with a MsgId < last + * \param limit if != -1 limit the returned list to a max of \limit entries + * \param type The Message::Types that should be returned + * \param flags The Message::Flags that should be returned + * \return The requested list of messages + */ + static inline std::vector requestMsgsForward(UserId user, + BufferId bufferId, + MsgId first = -1, + MsgId last = -1, + int limit = -1, + Message::Types type = Message::Types{-1}, + Message::Flags flags = Message::Flags{-1}) + { + return instance()->_storage->requestMsgsForward(user, bufferId, first, last, limit, type, flags); + } + //! Request a certain number of messages across all buffers /** \param first if != -1 return only messages with a MsgId >= first * \param last if != -1 return only messages with a MsgId < last * \param limit Max amount of messages * \return The requested list of messages */ - static inline QList requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) + static inline std::vector requestAllMsgs(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1) { return instance()->_storage->requestAllMsgs(user, first, last, limit); } @@ -428,7 +462,7 @@ public: * \param type The Message::Types that should be returned * \return The requested list of messages */ - static inline QList requestAllMsgsFiltered(UserId user, + static inline std::vector requestAllMsgsFiltered(UserId user, MsgId first = -1, MsgId last = -1, int limit = -1, @@ -445,7 +479,7 @@ public: * \param user The user whose buffers we request * \return A list of the BufferInfos for all buffers as requested */ - static inline QList requestBuffers(UserId user) { return instance()->_storage->requestBuffers(user); } + static inline std::vector requestBuffers(UserId user) { return instance()->_storage->requestBuffers(user); } //! Request a list of BufferIds for a given NetworkId /** \note This method is threadsafe. @@ -454,7 +488,7 @@ public: * \param networkId The NetworkId of the network in question * \return List of BufferIds belonging to the Network */ - static inline QList requestBufferIdsForNetwork(UserId user, NetworkId networkId) + static inline std::vector requestBufferIdsForNetwork(UserId user, NetworkId networkId) { return instance()->_storage->requestBufferIdsForNetwork(user, networkId); } @@ -515,6 +549,14 @@ public: */ QString strictSysIdent(UserId user) const; + //! Get a Hash of all last message ids + /** This Method is called when the Quassel Core is started to restore the lastMsgIds + * \note This method is threadsafe. + * + * \param user The Owner of the buffers + */ + static inline QHash bufferLastMsgIds(UserId user) { return instance()->_storage->bufferLastMsgIds(user); } + //! Get a Hash of all last seen message ids /** This Method is called when the Quassel Core is started to restore the lastSeenMsgIds * \note This method is threadsafe. @@ -635,6 +677,7 @@ public: inline OidentdConfigGenerator* oidentdConfigGenerator() const { return _oidentdConfigGenerator; } inline IdentServer* identServer() const { return _identServer; } + inline MetricsServer* metricsServer() const { return _metricsServer; } static const int AddClientEventId; @@ -751,11 +794,7 @@ private: QTimer _storageSyncTimer; -#ifdef HAVE_SSL SslServer _server, _v6server; -#else - QTcpServer _server, _v6server; -#endif OidentdConfigGenerator* _oidentdConfigGenerator{nullptr}; @@ -765,6 +804,7 @@ private: QDateTime _startTime; IdentServer* _identServer{nullptr}; + MetricsServer* _metricsServer{nullptr}; bool _initialized{false}; bool _configured{false};