#include "corenetwork.h"
+#include "ctcphandler.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 "ircserverhandler.h"
+#include "networkevent.h"
INIT_SYNCABLE_OBJECT(CoreNetwork)
CoreNetwork::CoreNetwork(const NetworkId &networkid, CoreSession *session)
}
#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<CoreIrcChannel *>(ircChannel(target));
+ if(channel) {
+ if(channel->cipher()->setKey(key))
+ return channel->cipher();
+ } else {
+ CoreIrcUser *user = qobject_cast<CoreIrcUser *>(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());
}
void CoreNetwork::socketHasData() {
while(socket.canReadLine()) {
QByteArray s = socket.readLine().trimmed();
- ircServerHandler()->handleServerMsg(s);
+ ircServerHandler()->handleServerMsg(s); // FIXME remove with events
+
+ 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);
}
}