projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Mutate SignalProxy::AbstractPeer into a separate class Peer
[quassel.git]
/
src
/
core
/
corenetwork.cpp
diff --git
a/src/core/corenetwork.cpp
b/src/core/corenetwork.cpp
index
ed3b39e
..
101f527
100644
(file)
--- a/
src/core/corenetwork.cpp
+++ b/
src/core/corenetwork.cpp
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-201
2
by the Quassel Project *
+ * Copyright (C) 2005-201
3
by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-310,7
+310,7
@@
void CoreNetwork::removeChannelKey(const QString &channel)
#ifdef HAVE_QCA2
#ifdef HAVE_QCA2
-Cipher *CoreNetwork::cipher(const QString &target)
const
+Cipher *CoreNetwork::cipher(const QString &target)
{
if (target.isEmpty())
return 0;
{
if (target.isEmpty())
return 0;
@@
-318,39
+318,51
@@
Cipher *CoreNetwork::cipher(const QString &target) const
if (!Cipher::neededFeaturesAvailable())
return 0;
if (!Cipher::neededFeaturesAvailable())
return 0;
- QByteArray key = cipherKey(target);
- if (key.isEmpty())
- return 0;
-
CoreIrcChannel *channel = qobject_cast<CoreIrcChannel *>(ircChannel(target));
if (channel) {
CoreIrcChannel *channel = qobject_cast<CoreIrcChannel *>(ircChannel(target));
if (channel) {
- if (channel->cipher()->setKey(key))
- return channel->cipher();
+ return channel->cipher();
}
}
- else {
- CoreIrcUser *user = qobject_cast<CoreIrcUser *>(ircUser(target));
- if (user && user->cipher()->setKey(key))
- return user->cipher();
+ CoreIrcUser *user = qobject_cast<CoreIrcUser *>(ircUser(target));
+ if (user) {
+ return user->cipher();
+ } else if (!isChannelName(target)) {
+ return qobject_cast<CoreIrcUser*>(newIrcUser(target))->cipher();
}
return 0;
}
}
return 0;
}
-QByteArray CoreNetwork::cipherKey(const QString &
recipien
t) const
+QByteArray CoreNetwork::cipherKey(const QString &
targe
t) const
{
{
- return _cipherKeys.value(recipient.toLower(), QByteArray());
+ CoreIrcChannel *c = qobject_cast<CoreIrcChannel*>(ircChannel(target));
+ if (c)
+ return c->cipher()->key();
+
+ CoreIrcUser *u = qobject_cast<CoreIrcUser*>(ircUser(target));
+ if (u)
+ return u->cipher()->key();
+
+ return QByteArray();
}
}
-void CoreNetwork::setCipherKey(const QString &
recipien
t, const QByteArray &key)
+void CoreNetwork::setCipherKey(const QString &
targe
t, const QByteArray &key)
{
{
- if (!key.isEmpty())
- _cipherKeys[recipient.toLower()] = key;
- else
-
_cipherKeys.remove(recipient.toLower())
;
-}
+ CoreIrcChannel *c = qobject_cast<CoreIrcChannel*>(ircChannel(target));
+ if (c) {
+ c->setEncrypted(c->cipher()->setKey(key));
+
return
;
+
}
+ CoreIrcUser *u = qobject_cast<CoreIrcUser*>(ircUser(target));
+ if (!u && !isChannelName(target))
+ u = qobject_cast<CoreIrcUser*>(newIrcUser(target));
+ if (u) {
+ u->setEncrypted(u->cipher()->setKey(key));
+ return;
+ }
+}
#endif /* HAVE_QCA2 */
bool CoreNetwork::setAutoWhoDone(const QString &channel)
#endif /* HAVE_QCA2 */
bool CoreNetwork::setAutoWhoDone(const QString &channel)
@@
-375,7
+387,8
@@
void CoreNetwork::setMyNick(const QString &mynick)
void CoreNetwork::socketHasData()
{
while (socket.canReadLine()) {
void CoreNetwork::socketHasData()
{
while (socket.canReadLine()) {
- QByteArray s = socket.readLine().trimmed();
+ QByteArray s = socket.readLine();
+ s.chop(2);
NetworkDataEvent *event = new NetworkDataEvent(EventManager::NetworkIncoming, this, s);
#if QT_VERSION >= 0x040700
event->setTimestamp(QDateTime::currentDateTimeUtc());
NetworkDataEvent *event = new NetworkDataEvent(EventManager::NetworkIncoming, this, s);
#if QT_VERSION >= 0x040700
event->setTimestamp(QDateTime::currentDateTimeUtc());