From 330fe2ce9372bace91ac03ae1b5401027509242a Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 2 Mar 2018 15:40:32 +0100 Subject: Revert "Support encrypted mails forwarding" This reverts commit f28ec43dca5b2915deb69d54fb942ddf1303f48c. That was pushed by accident. --- framework/src/domain/composercontroller.cpp | 21 ++++---- framework/src/domain/mime/mailtemplates.cpp | 83 +++-------------------------- 2 files changed, 16 insertions(+), 88 deletions(-) diff --git a/framework/src/domain/composercontroller.cpp b/framework/src/domain/composercontroller.cpp index 2286a71b..09d4c154 100644 --- a/framework/src/domain/composercontroller.cpp +++ b/framework/src/domain/composercontroller.cpp @@ -99,19 +99,19 @@ class AddresseeController : public Kube::ListPropertyController public: bool mFoundAllKeys = true; - QSet mMissingKeys; - AddresseeController() : Kube::ListPropertyController{{"name", "keyFound", "key"}} + AddresseeController() + : Kube::ListPropertyController{{"name", "keyFound", "key"}} { - QObject::connect( - this, &Kube::ListPropertyController::added, this, [this](const QByteArray &id, const QVariantMap &map) { - findKey(id, map.value("name").toString()); - }); - + QObject::connect(this, &Kube::ListPropertyController::added, this, [this] (const QByteArray &id, const QVariantMap &map) { + findKey(id, map.value("name").toString()); + }); QObject::connect(this, &Kube::ListPropertyController::removed, this, [this] (const QByteArray &id) { mMissingKeys.remove(id); setFoundAllKeys(mMissingKeys.isEmpty()); }); + + } bool foundAllKeys() @@ -133,13 +133,12 @@ public: mb.fromUnicodeString(addressee); SinkLog() << "Searching key for: " << mb.address(); - asyncRun>(this, - [mb] { + asyncRun>(this, [mb] { return MailCrypto::findKeys(QStringList{} << mb.address(), false, false, MailCrypto::OPENPGP); }, [this, addressee, id](const std::vector &keys) { if (!keys.empty()) { - if (keys.size() > 1) { + if (keys.size() > 1 ) { SinkWarning() << "Found more than one key, encrypting to all of them."; } SinkLog() << "Found key: " << keys.front().primaryFingerprint(); @@ -155,7 +154,7 @@ public: void set(const QStringList &list) { - for (const auto &email : list) { + for (const auto &email: list) { add({{"name", email}}); } } diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index 513f0353..8e644b34 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp @@ -53,18 +53,6 @@ static bool operator==(const KMime::Types::Mailbox &left, const KMime::Types::Ma return (left.addrSpec().asString() == right.addrSpec().asString()); } } - - Message* contentToMessage(Content* content) { - content->assemble(); - const auto encoded = content->encodedContent(); - - auto message = new Message(); - message->setContent(encoded); - message->parse(); - - return message; - } - } static KMime::Types::Mailbox::List stripMyAddressesFromAddressList(const KMime::Types::Mailbox::List &list, const KMime::Types::AddrSpecList me) @@ -235,19 +223,6 @@ KMime::Content *createMultipartAlternativeContent(const QString &plainBody, cons return multipartAlternative; } -KMime::Message *createMultipartMixedContent(QVector contents) -{ - KMime::Message *multiPartMixed = new KMime::Message(); - multiPartMixed->contentType()->setMimeType("multipart/mixed"); - multiPartMixed->contentType()->setBoundary(KMime::multiPartBoundary()); - - for (const auto &content : contents) { - multiPartMixed->addContent(content); - } - - return multiPartMixed; -} - void addProcessedBodyToMessage(const KMime::Message::Ptr &msg, const QString &plainBody, const QString &htmlBody, bool forward) { //FIXME @@ -889,73 +864,27 @@ void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::functio }); } -void MailTemplates::forward(const KMime::Message::Ptr &origMsg, - const std::function &callback) +void MailTemplates::forward(const KMime::Message::Ptr &origMsg, const std::function &callback) { KMime::Message::Ptr wrapperMsg(new KMime::Message); wrapperMsg->to()->clear(); wrapperMsg->cc()->clear(); - // Decrypt the original message, it will be encrypted again in the composer - // for the right recipient - KMime::Message::Ptr forwardedMessage; - if (isEncrypted(origMsg.data())) { - qDebug() << "Original message was encrypted, decrypting it"; - MimeTreeParser::ObjectTreeParser otp; - otp.parseObjectTree(origMsg.data()); - otp.decryptParts(); - - auto htmlContent = otp.htmlContent(); - KMime::Content *recreatedMsg = - htmlContent.isEmpty() ? createPlainPartContent(otp.plainTextContent()) : - createMultipartAlternativeContent(otp.plainTextContent(), htmlContent); + wrapperMsg->subject()->fromUnicodeString(forwardSubject(origMsg->subject()->asUnicodeString()), "utf-8"); - if (hasAttachment(origMsg.data())) { - QVector contents = {recreatedMsg}; - contents.append(origMsg->attachments()); - - auto msg = createMultipartMixedContent(contents); - - forwardedMessage.reset(KMime::contentToMessage(msg)); - } else { - forwardedMessage.reset(KMime::contentToMessage(recreatedMsg)); - } - - forwardedMessage->subject()->from7BitString(origMsg->subject()->as7BitString()); - - for (const auto &addr : origMsg->to()->mailboxes()) { - forwardedMessage->to()->addAddress(addr); - } - - for (const auto &addr : origMsg->cc()->mailboxes()) { - forwardedMessage->cc()->addAddress(addr); - } - - for (const auto &addr : origMsg->bcc()->mailboxes()) { - forwardedMessage->bcc()->addAddress(addr); - } - - } else { - qDebug() << "Original message was not encrypted, using it as-is"; - forwardedMessage = origMsg; - } - - wrapperMsg->subject()->fromUnicodeString( - forwardSubject(forwardedMessage->subject()->asUnicodeString()), "utf-8"); - - const QByteArray refStr = getRefStr(forwardedMessage); + const QByteArray refStr = getRefStr(origMsg); if (!refStr.isEmpty()) { wrapperMsg->references()->fromUnicodeString(QString::fromLocal8Bit(refStr), "utf-8"); } - KMime::Content *fwdAttachment = new KMime::Content; + KMime::Content* fwdAttachment = new KMime::Content; fwdAttachment->contentDisposition()->setDisposition(KMime::Headers::CDinline); fwdAttachment->contentType()->setMimeType("message/rfc822"); - fwdAttachment->contentDisposition()->setFilename(forwardedMessage->subject()->asUnicodeString() + ".eml"); + fwdAttachment->contentDisposition()->setFilename(origMsg->subject()->asUnicodeString() + ".eml"); // The mail was parsed in loadMessage before, so no need to assemble it - fwdAttachment->setBody(forwardedMessage->encodedContent()); + fwdAttachment->setBody(origMsg->encodedContent()); wrapperMsg->addContent(fwdAttachment); wrapperMsg->assemble(); -- cgit v1.2.3