X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorenetwork.h;h=8093bb61c10f3e302745ccbbc36f5ca3500d4aa5;hp=a6d367805c7fdc0653e01eb42a1d1deac4ad542b;hb=9c15e81b15a20e861c707e240c2cfee56bdf4bc9;hpb=63bc3c3a34a0df70cad72b1f36d4fb7b8245d79c diff --git a/src/core/corenetwork.h b/src/core/corenetwork.h index a6d36780..8093bb61 100644 --- a/src/core/corenetwork.h +++ b/src/core/corenetwork.h @@ -23,6 +23,7 @@ #include "network.h" #include "coreircchannel.h" +#include "coreircuser.h" #include @@ -32,14 +33,18 @@ #else # include #endif +#include + +#ifdef HAVE_QCA2 +# include "cipher.h" +#endif #include "coresession.h" class CoreIdentity; -class IrcServerHandler; class CoreUserInputHandler; -class CtcpHandler; class CoreIgnoreListManager; +class Event; class CoreNetwork : public Network { SYNCABLE_OBJECT @@ -54,9 +59,7 @@ public: inline CoreSession *coreSession() const { return _coreSession; } inline CoreNetworkConfig *networkConfig() const { return coreSession()->networkConfig(); } - inline IrcServerHandler *ircServerHandler() const { return _ircServerHandler; } inline CoreUserInputHandler *userInputHandler() const { return _userInputHandler; } - inline CtcpHandler *ctcpHandler() const { return _ctcpHandler; } inline CoreIgnoreListManager *ignoreListManager() { return coreSession()->ignoreListManager(); } //! Decode a string using the server (network) decoding. @@ -83,6 +86,13 @@ public: inline UserId userId() const { return _coreSession->user(); } + inline QAbstractSocket::SocketState socketState() const { return socket.state(); } + inline bool socketConnected() const { return socket.state() == QAbstractSocket::ConnectedState; } + inline QHostAddress localAddress() const { return socket.localAddress(); } + inline QHostAddress peerAddress() const { return socket.peerAddress(); } + inline quint16 localPort() const { return socket.localPort(); } + inline quint16 peerPort() const { return socket.peerPort(); } + public slots: virtual void setMyNick(const QString &mynick); @@ -108,6 +118,13 @@ public slots: void addChannelKey(const QString &channel, const QString &key); void removeChannelKey(const QString &channel); + // Blowfish stuff +#ifdef HAVE_QCA2 + Cipher *cipher(const QString &recipient) const; + QByteArray cipherKey(const QString &recipient) const; + void setCipherKey(const QString &recipient, const QByteArray &key); +#endif + void setAutoWhoEnabled(bool enabled); void setAutoWhoInterval(int interval); void setAutoWhoDelay(int delay); @@ -136,8 +153,19 @@ signals: void quitRequested(NetworkId networkId); void sslErrors(const QVariant &errorData); + void newEvent(Event *event); + void socketInitialized(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); + void socketDisconnected(const CoreIdentity *identity, const QHostAddress &localAddress, quint16 localPort, const QHostAddress &peerAddress, quint16 peerPort); + protected: inline virtual IrcChannel *ircChannelFactory(const QString &channelname) { return new CoreIrcChannel(channelname, this); } + inline virtual IrcUser *ircUserFactory(const QString &hostmask) { return new CoreIrcUser(hostmask, this); } + +protected slots: + // TODO: remove cached cipher keys, when appropriate + //virtual void removeIrcUser(IrcUser *ircuser); + //virtual void removeIrcChannel(IrcChannel *ircChannel); + //virtual void removeChansAndUsers(); private slots: void socketHasData(); @@ -174,9 +202,7 @@ private: QTcpSocket socket; #endif - IrcServerHandler *_ircServerHandler; CoreUserInputHandler *_userInputHandler; - CtcpHandler *_ctcpHandler; QHash _channelKeys; // stores persistent channels and their passwords, if any @@ -209,6 +235,9 @@ private: QList _msgQueue; QString _requestedUserModes; // 2 strings separated by a '-' character. first part are requested modes to add, the second to remove + + // Blowfish key map + QHash _cipherKeys; }; #endif //CORENETWORK_H