X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcorenetwork.cpp;h=94854990ee05492669636b9153247d2e06bc9fbe;hp=ccb5600fdf2c01316e324645392a9f08b8bfcb5b;hb=ddeaf866099f56f42bf86b2bfc72a92763c733aa;hpb=6f0a153a674317d77233139fc50a2985af86e36e diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index ccb5600f..94854990 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -21,21 +21,17 @@ #include "corenetwork.h" #include "core.h" -#include "coresession.h" #include "coreidentity.h" #include "corenetworkconfig.h" - -#include "ircserverhandler.h" +#include "coresession.h" #include "coreuserinputhandler.h" -#include "ctcphandler.h" +#include "networkevent.h" INIT_SYNCABLE_OBJECT(CoreNetwork) CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session) : Network(networkid, session), _coreSession(session), - _ircServerHandler(new IrcServerHandler(this)), _userInputHandler(new CoreUserInputHandler(this)), - _ctcpHandler(new CtcpHandler(this)), _autoReconnectCount(0), _quitRequested(false), @@ -87,9 +83,7 @@ CoreNetwork::~CoreNetwork() { if(connectionState() != Disconnected && connectionState() != Network::Reconnecting) disconnectFromIrc(false); // clean up, but this does not count as requested disconnect! disconnect(&socket, 0, this, 0); // this keeps the socket from triggering events during clean up - delete _ircServerHandler; delete _userInputHandler; - delete _ctcpHandler; } QString CoreNetwork::channelDecode(const QString &bufferName, const QByteArray &string) const { @@ -277,6 +271,26 @@ void CoreNetwork::removeChannelKey(const QString &channel) { } #ifdef HAVE_QCA2 +Cipher *CoreNetwork::cipher(const QString &target) const { + if(target.isEmpty()) + return 0; + + QByteArray key = cipherKey(target); + if(key.isEmpty()) + return 0; + + CoreIrcChannel *channel = qobject_cast(ircChannel(target)); + if(channel) { + if(channel->cipher()->setKey(key)) + return channel->cipher(); + } else { + CoreIrcUser *user = qobject_cast(ircUser(target)); + if(user && user->cipher()->setKey(key)) + return user->cipher(); + } + return 0; +} + QByteArray CoreNetwork::cipherKey(const QString &recipient) const { return _cipherKeys.value(recipient.toLower(), QByteArray()); } @@ -307,7 +321,13 @@ void CoreNetwork::setMyNick(const QString &mynick) { void CoreNetwork::socketHasData() { while(socket.canReadLine()) { QByteArray s = socket.readLine().trimmed(); - ircServerHandler()->handleServerMsg(s); + NetworkDataEvent *event = new NetworkDataEvent(EventManager::NetworkIncoming, this, s); +#if QT_VERSION >= 0x040700 + event->setTimestamp(QDateTime::currentDateTimeUtc()); +#else + event->setTimestamp(QDateTime::currentDateTime().toUTC()); +#endif + coreSession()->eventManager()->sendEvent(event); } }