X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoreuserinputhandler.cpp;h=37a785eae8bb17d734e75b1deecb44e2ae1185de;hp=24d5f8b8a9216dae94d9b3a55d228fc171b2d518;hb=0e80eb98d55efe53d280b38984426318317bcb1a;hpb=3972e140226f32760bb2606650f93132c188b2dc diff --git a/src/core/coreuserinputhandler.cpp b/src/core/coreuserinputhandler.cpp index 24d5f8b8..37a785ea 100644 --- a/src/core/coreuserinputhandler.cpp +++ b/src/core/coreuserinputhandler.cpp @@ -187,17 +187,17 @@ void CoreUserInputHandler::handleDelkey(const BufferInfo &bufferInfo, const QStr return; if (!Cipher::neededFeaturesAvailable()) { - emit displayMsg(Message::Error, bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); return; } QStringList parms = msg.split(' ', QString::SkipEmptyParts); - if (parms.isEmpty() && !bufferInfo.bufferName().isEmpty()) + if (parms.isEmpty() && !bufferInfo.bufferName().isEmpty() && bufferInfo.acceptsRegularMessages()) parms.prepend(bufferInfo.bufferName()); if (parms.isEmpty()) { - emit displayMsg(Message::Info, bufname, + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("[usage] /delkey deletes the encryption key for nick or channel or just /delkey when in a channel or query.")); return; } @@ -205,16 +205,16 @@ void CoreUserInputHandler::handleDelkey(const BufferInfo &bufferInfo, const QStr QString target = parms.at(0); if (network()->cipherKey(target).isEmpty()) { - emit displayMsg(Message::Info, bufname, tr("No key has been set for %1.").arg(target)); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("No key has been set for %1.").arg(target)); return; } network()->setCipherKey(target, QByteArray()); - emit displayMsg(Message::Info, bufname, tr("The key for %1 has been deleted.").arg(target)); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("The key for %1 has been deleted.").arg(target)); #else Q_UNUSED(msg) - emit displayMsg(Message::Error, bufname, tr("Error: Setting an encryption key requires Quassel to have been built " + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: Setting an encryption key requires Quassel to have been built " "with support for the Qt Cryptographic Architecture (QCA2) library. " "Contact your distributor about a Quassel package with QCA2 " "support, or rebuild Quassel with QCA2 present.")); @@ -358,38 +358,43 @@ void CoreUserInputHandler::handleKeyx(const BufferInfo &bufferInfo, const QStrin return; if (!Cipher::neededFeaturesAvailable()) { - emit displayMsg(Message::Error, bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); return; } QStringList parms = msg.split(' ', QString::SkipEmptyParts); - if (parms.count() == 0 && !bufferInfo.bufferName().isEmpty()) + if (parms.count() == 0 && !bufferInfo.bufferName().isEmpty() && bufferInfo.acceptsRegularMessages()) parms.prepend(bufferInfo.bufferName()); else if (parms.count() != 1) { - emit displayMsg(Message::Info, bufname, - tr("[usage] /keyx [] Initiates a DH1080 key exchange with the target.")); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, + tr("[usage] /keyx [] Initiates a DH1080 key exchange with the target.")); return; } QString target = parms.at(0); + if (network()->isChannelName(target)) { + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("It is only possible to exchange keys in a query buffer.")); + return; + } + Cipher *cipher = network()->cipher(target); if (!cipher) // happens when there is no CoreIrcChannel for the target return; QByteArray pubKey = cipher->initKeyExchange(); if (pubKey.isEmpty()) - emit displayMsg(Message::Error, bufname, tr("Failed to initiate key exchange with %1.").arg(target)); + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Failed to initiate key exchange with %1.").arg(target)); else { QList params; params << serverEncode(target) << serverEncode("DH1080_INIT ") + pubKey; emit putCmd("NOTICE", params); - emit displayMsg(Message::Info, bufname, tr("Initiated key exchange with %1.").arg(target)); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("Initiated key exchange with %1.").arg(target)); } #else Q_UNUSED(msg) - emit displayMsg(Message::Error, bufname, tr("Error: Setting an encryption key requires Quassel to have been built " + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: Setting an encryption key requires Quassel to have been built " "with support for the Qt Cryptographic Architecture (QCA) library. " "Contact your distributor about a Quassel package with QCA " "support, or rebuild Quassel with QCA present.")); @@ -430,7 +435,8 @@ void CoreUserInputHandler::handleList(const BufferInfo &bufferInfo, const QStrin void CoreUserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg) { - if (bufferInfo.bufferName().isEmpty()) return; // server buffer + if (bufferInfo.bufferName().isEmpty() || !bufferInfo.acceptsRegularMessages()) + return; // server buffer // FIXME make this a proper event coreNetwork()->coreSession()->ctcpParser()->query(coreNetwork(), bufferInfo.bufferName(), "ACTION", msg); emit displayMsg(Message::Action, bufferInfo.type(), bufferInfo.bufferName(), msg, network()->myNick(), Message::Self); @@ -493,7 +499,7 @@ void CoreUserInputHandler::handleNotice(const BufferInfo &bufferInfo, const QStr QList params; params << serverEncode(bufferName) << channelEncode(bufferInfo.bufferName(), payload); emit putCmd("NOTICE", params); - emit displayMsg(Message::Notice, bufferName, payload, network()->myNick(), Message::Self); + emit displayMsg(Message::Notice, typeByTarget(bufferName), bufferName, payload, network()->myNick(), Message::Self); } @@ -576,7 +582,7 @@ void CoreUserInputHandler::handleQuote(const BufferInfo &bufferInfo, const QStri void CoreUserInputHandler::handleSay(const BufferInfo &bufferInfo, const QString &msg) { - if (bufferInfo.bufferName().isEmpty()) + if (bufferInfo.bufferName().isEmpty() || !bufferInfo.acceptsRegularMessages()) return; // server buffer QByteArray encMsg = channelEncode(bufferInfo.bufferName(), msg); @@ -597,16 +603,16 @@ void CoreUserInputHandler::handleSetkey(const BufferInfo &bufferInfo, const QStr return; if (!Cipher::neededFeaturesAvailable()) { - emit displayMsg(Message::Error, bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); return; } QStringList parms = msg.split(' ', QString::SkipEmptyParts); - if (parms.count() == 1 && !bufferInfo.bufferName().isEmpty()) + if (parms.count() == 1 && !bufferInfo.bufferName().isEmpty() && bufferInfo.acceptsRegularMessages()) parms.prepend(bufferInfo.bufferName()); else if (parms.count() != 2) { - emit displayMsg(Message::Info, bufname, + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("[usage] /setkey sets the encryption key for nick or channel. " "/setkey when in a channel or query buffer sets the key for it.")); return; @@ -616,10 +622,10 @@ void CoreUserInputHandler::handleSetkey(const BufferInfo &bufferInfo, const QStr QByteArray key = parms.at(1).toLocal8Bit(); network()->setCipherKey(target, key); - emit displayMsg(Message::Info, bufname, tr("The key for %1 has been set.").arg(target)); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("The key for %1 has been set.").arg(target)); #else Q_UNUSED(msg) - emit displayMsg(Message::Error, bufname, tr("Error: Setting an encryption key requires Quassel to have been built " + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: Setting an encryption key requires Quassel to have been built " "with support for the Qt Cryptographic Architecture (QCA) library. " "Contact your distributor about a Quassel package with QCA " "support, or rebuild Quassel with QCA present.")); @@ -635,17 +641,17 @@ void CoreUserInputHandler::handleShowkey(const BufferInfo &bufferInfo, const QSt return; if (!Cipher::neededFeaturesAvailable()) { - emit displayMsg(Message::Error, bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: QCA provider plugin not found. It is usually provided by the qca-ossl plugin.")); return; } QStringList parms = msg.split(' ', QString::SkipEmptyParts); - if (parms.isEmpty() && !bufferInfo.bufferName().isEmpty()) + if (parms.isEmpty() && !bufferInfo.bufferName().isEmpty() && bufferInfo.acceptsRegularMessages()) parms.prepend(bufferInfo.bufferName()); if (parms.isEmpty()) { - emit displayMsg(Message::Info, bufname, tr("[usage] /showkey shows the encryption key for nick or channel or just /showkey when in a channel or query.")); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("[usage] /showkey shows the encryption key for nick or channel or just /showkey when in a channel or query.")); return; } @@ -653,15 +659,15 @@ void CoreUserInputHandler::handleShowkey(const BufferInfo &bufferInfo, const QSt QByteArray key = network()->cipherKey(target); if (key.isEmpty()) { - emit displayMsg(Message::Info, bufname, tr("No key has been set for %1.").arg(target)); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("No key has been set for %1.").arg(target)); return; } - emit displayMsg(Message::Info, bufname, tr("The key for %1 is %2:%3").arg(target, network()->cipherUsesCBC(target) ? "CBC" : "ECB", QString(key))); + emit displayMsg(Message::Info, typeByTarget(bufname), bufname, tr("The key for %1 is %2:%3").arg(target, network()->cipherUsesCBC(target) ? "CBC" : "ECB", QString(key))); #else Q_UNUSED(msg) - emit displayMsg(Message::Error, bufname, tr("Error: Setting an encryption key requires Quassel to have been built " + emit displayMsg(Message::Error, typeByTarget(bufname), bufname, tr("Error: Setting an encryption key requires Quassel to have been built " "with support for the Qt Cryptographic Architecture (QCA2) library. " "Contact your distributor about a Quassel package with QCA2 " "support, or rebuild Quassel with QCA2 present.")); @@ -671,7 +677,7 @@ void CoreUserInputHandler::handleShowkey(const BufferInfo &bufferInfo, const QSt void CoreUserInputHandler::handleTopic(const BufferInfo &bufferInfo, const QString &msg) { - if (bufferInfo.bufferName().isEmpty()) + if (bufferInfo.bufferName().isEmpty() || !bufferInfo.acceptsRegularMessages()) return; QList params;