diff options
author | saturneric <[email protected]> | 2024-11-27 20:22:45 +0000 |
---|---|---|
committer | saturneric <[email protected]> | 2024-11-27 20:22:55 +0000 |
commit | 4b846455b7c232b7db63f95c6a1943ccbc7ce15b (patch) | |
tree | f9609ef2a7fb5d6221baa11ff1ed154f32befe80 /src/m_email/EMailModule.cpp | |
parent | fix: target_link_libraries with a target (diff) | |
download | Modules-4b846455b7c232b7db63f95c6a1943ccbc7ce15b.tar.gz Modules-4b846455b7c232b7db63f95c6a1943ccbc7ce15b.zip |
feat: support signing email
Diffstat (limited to 'src/m_email/EMailModule.cpp')
-rw-r--r-- | src/m_email/EMailModule.cpp | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/m_email/EMailModule.cpp b/src/m_email/EMailModule.cpp index 582542a..1262c75 100644 --- a/src/m_email/EMailModule.cpp +++ b/src/m_email/EMailModule.cpp @@ -39,6 +39,8 @@ #include <QJsonDocument> #include <QString> +#include "EMailMetaDataDialog.h" + // vmime #define VMIME_STATIC #include <vmime/vmime.hpp> @@ -51,6 +53,7 @@ // #include "EMailHelper.h" +#include "EMailMetaDataDialog.h" GF_MODULE_API_DEFINE_V2("com.bktus.gpgfrontend.module.email", "Email", "1.0.0", "Everything related to E-Mails.", "Saturneric") @@ -62,7 +65,7 @@ auto GFRegisterModule() -> int { LISTEN("EMAIL_VERIFY_EML_DATA"); LISTEN("EMAIL_DECRYPT_EML_DATA"); - + LISTEN("EMAIL_EXPORT_EML_DATA"); return 0; } @@ -185,6 +188,9 @@ REGISTER_EVENT_HANDLER(EMAIL_VERIFY_EML_DATA, [](const MEvent& event) -> int { FLOG_DEBUG("mime part of raw content hash: %1", part_mime_content_hash.toHex()); + FLOG_DEBUG("mime part of raw content: %1", part_mime_content_text); + qDebug().noquote() << "\n" << part_mime_content_text; + if (part_mime_content_text.isEmpty()) CB_ERR(event, -2, "mime raw data part is empty"); @@ -399,6 +405,46 @@ REGISTER_EVENT_HANDLER(EMAIL_DECRYPT_EML_DATA, [](const MEvent& event) -> int { return 0; }); +REGISTER_EVENT_HANDLER(EMAIL_EXPORT_EML_DATA, [](const MEvent& event) -> int { + if (event["body_data"].isEmpty()) CB_ERR(event, -1, "body_data is empty"); + if (event["channel"].isEmpty()) CB_ERR(event, -1, "channel is empty"); + if (event["sign_key"].isEmpty()) CB_ERR(event, -1, "sign_key is empty"); + + auto channel = event.value("channel", "0").toInt(); + auto sign_key = event.value("sign_key", ""); + + FLOG_DEBUG("eml sign key: %1", sign_key); + + auto data = QByteArray::fromBase64(QString(event["body_data"]).toLatin1()); + + auto* dialog = GUI_OBJECT(CreateEMailMetaDataDialog, {data}); + auto* r_dialog = + qobject_cast<EMailMetaDataDialog*>(static_cast<QObject*>(dialog)); + if (r_dialog == nullptr) + CB_ERR(event, -1, "convert dialog to r_dialog failed"); + r_dialog->SetChannel(channel); + r_dialog->SetSignKey(sign_key); + + GFUIShowDialog(dialog, nullptr); + + QObject::connect(r_dialog, &EMailMetaDataDialog::SignalEMLDataGenerateSuccess, + r_dialog, [=](QString eml_data) { + // callback + CB(event, GFGetModuleID(), + { + {"ret", QString::number(0)}, + {"eml_data", eml_data}, + }); + }); + + QObject::connect(r_dialog, &EMailMetaDataDialog::SignalEMLDataGenerateFailed, + r_dialog, [=](QString error) { + // callback + CB_ERR(event, -1, "Generate EML Data Failed: " + error); + }); + + return 0; +}); auto GFDeactivateModule() -> int { return 0; } auto GFUnregisterModule() -> int { |