File indexing completed on 2025-03-09 04:54:29
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "dkimmanager.h" 0008 #include "dkimcheckfulljob.h" 0009 #include "dkimmanagerkey.h" 0010 #include "dkimresultattribute.h" 0011 #include "messageviewer_dkimcheckerdebug.h" 0012 #include <Akonadi/AttributeFactory> 0013 0014 using namespace MessageViewer; 0015 DKIMManager::DKIMManager(QObject *parent) 0016 : QObject(parent) 0017 { 0018 // Initialize QCA 0019 MessageViewer::DKIMManagerKey::self(); 0020 Akonadi::AttributeFactory::registerAttribute<MessageViewer::DKIMResultAttribute>(); 0021 } 0022 0023 DKIMManager::~DKIMManager() = default; 0024 0025 DKIMManager *DKIMManager::self() 0026 { 0027 static DKIMManager s_self; 0028 return &s_self; 0029 } 0030 0031 void DKIMManager::clearInfoWidget() 0032 { 0033 Q_EMIT clearInfo(); 0034 } 0035 0036 DKIMCheckPolicy DKIMManager::policy() const 0037 { 0038 return mCheckPolicy; 0039 } 0040 0041 void DKIMManager::setPolicy(const DKIMCheckPolicy &policy) 0042 { 0043 mCheckPolicy = policy; 0044 } 0045 0046 void DKIMManager::recheckDKim(const Akonadi::Item &item) 0047 { 0048 checkFullInfo(item); 0049 } 0050 0051 void DKIMManager::checkDKim(const Akonadi::Item &item) 0052 { 0053 if (mCheckPolicy.saveDkimResult()) { 0054 if (item.hasAttribute<MessageViewer::DKIMResultAttribute>()) { 0055 const auto *const attr = item.attribute<MessageViewer::DKIMResultAttribute>(); 0056 if (attr) { 0057 DKIMCheckSignatureJob::CheckSignatureResult checkResult; 0058 checkResult.error = static_cast<DKIMCheckSignatureJob::DKIMError>(attr->error()); 0059 checkResult.warning = static_cast<DKIMCheckSignatureJob::DKIMWarning>(attr->warning()); 0060 checkResult.status = static_cast<DKIMCheckSignatureJob::DKIMStatus>(attr->status()); 0061 qCDebug(MESSAGEVIEWER_DKIMCHECKER_LOG) 0062 << "result : status " << checkResult.status << " error : " << checkResult.error << " warning " << checkResult.warning; 0063 Q_EMIT result(checkResult, item.id()); 0064 return; 0065 } 0066 } 0067 } 0068 checkFullInfo(item); 0069 } 0070 0071 void DKIMManager::checkFullInfo(const Akonadi::Item &item) 0072 { 0073 auto job = new DKIMCheckFullJob(this); 0074 job->setPolicy(mCheckPolicy); 0075 connect(job, &DKIMCheckFullJob::result, this, &DKIMManager::result); 0076 job->startCheckFullInfo(item); 0077 } 0078 0079 void DKIMManager::checkDKim(const KMime::Message::Ptr &message) 0080 { 0081 auto job = new DKIMCheckFullJob(this); 0082 job->setPolicy(mCheckPolicy); 0083 connect(job, &DKIMCheckFullJob::result, this, &DKIMManager::result); 0084 job->startCheckFullInfo(message); 0085 } 0086 0087 #include "moc_dkimmanager.cpp"