X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcorenetwork.cpp;h=b7ec55d253fff98e5e2bb07f23fa9d7fe04855db;hb=1dbf78385e2904b3a9a3de48b85381c312c74ef8;hp=76a9d5592c7e1ec61ad7b152ca13935a804a49ad;hpb=63bc3c3a34a0df70cad72b1f36d4fb7b8245d79c;p=quassel.git diff --git a/src/core/corenetwork.cpp b/src/core/corenetwork.cpp index 76a9d559..b7ec55d2 100644 --- a/src/core/corenetwork.cpp +++ b/src/core/corenetwork.cpp @@ -276,6 +276,39 @@ void CoreNetwork::removeChannelKey(const QString &channel) { _channelKeys.remove(channel.toLower()); } +#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()); +} + +void CoreNetwork::setCipherKey(const QString &recipient, const QByteArray &key) { + if(!key.isEmpty()) + _cipherKeys[recipient.toLower()] = key; + else + _cipherKeys.remove(recipient.toLower()); +} +#endif /* HAVE_QCA2 */ + bool CoreNetwork::setAutoWhoDone(const QString &channel) { QString chan = channel.toLower(); if(_autoWhoPending.value(chan, 0) <= 0) @@ -632,7 +665,7 @@ void CoreNetwork::sendPing() { uint now = QDateTime::currentDateTime().toTime_t(); if(_pingCount != 0) { qDebug() << "UserId:" << userId() << "Network:" << networkName() << "missed" << _pingCount << "pings." - << "BA:" << socket.bytesAvailable() << "BTW:" << socket.bytesToWrite(); + << "BA:" << socket.bytesAvailable() << "BTW:" << socket.bytesToWrite(); } if((int)_pingCount >= networkConfig()->maxPingCount() && now - _lastPingTime <= (uint)(_pingTimer.interval() / 1000) + 1) { // the second check compares the actual elapsed time since the last ping and the pingTimer interval