aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-11-24 23:02:52 +0000
committersaturneric <[email protected]>2024-11-24 23:02:52 +0000
commit31410849cbb6c5a2214a51ee31532233fcd52dd6 (patch)
tree3d07f4e1408c599da3fdb689bb144ceb1c7002a5 /src
parentfeat: async gather_gnupg_info() (diff)
downloadModules-31410849cbb6c5a2214a51ee31532233fcd52dd6.tar.gz
Modules-31410849cbb6c5a2214a51ee31532233fcd52dd6.zip
feat: add email module and integrate vmime into it
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/m_email/CMakeLists.txt82
-rw-r--r--src/m_email/EMailModule.cpp83
-rw-r--r--src/m_email/EMailModule.h33
-rw-r--r--src/m_email/ts/ModuleEMail.de_DE.ts4
-rw-r--r--src/m_email/ts/ModuleEMail.en_US.ts4
-rw-r--r--src/m_email/ts/ModuleEMail.fr_FR.ts4
-rw-r--r--src/m_email/ts/ModuleEMail.it_iT.ts4
-rw-r--r--src/m_email/ts/ModuleEMail.zh_CN.ts4
-rw-r--r--src/m_email/ts/ModuleEMail.zh_TW.ts4
10 files changed, 224 insertions, 1 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9ce7323..2c3293f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,4 +29,5 @@ add_subdirectory(m_ver_check)
add_subdirectory(m_gpg_info)
add_subdirectory(m_pinentry)
add_subdirectory(m_paper_key)
-add_subdirectory(m_key_server_sync) \ No newline at end of file
+add_subdirectory(m_key_server_sync)
+add_subdirectory(m_email) \ No newline at end of file
diff --git a/src/m_email/CMakeLists.txt b/src/m_email/CMakeLists.txt
new file mode 100644
index 0000000..743145b
--- /dev/null
+++ b/src/m_email/CMakeLists.txt
@@ -0,0 +1,82 @@
+# Copyright (C) 2021-2024 Saturneric <[email protected]>
+#
+# This file is part of GpgFrontend.
+#
+# GpgFrontend is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GpgFrontend is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+#
+# The initial version of the source code is inherited from
+# the gpg4usb project, which is under GPL-3.0-or-later.
+#
+# All the source code of GpgFrontend was modified and released by
+# Saturneric <[email protected]> starting on May 12, 2021.
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+# com.bktus.gpgfrontend.module.integrated.gnupg_info_gathering
+
+set(INTEGRATED_MODULE_SOURCE "")
+aux_source_directory(. INTEGRATED_MODULE_SOURCE)
+
+# define libgpgfrontend_module
+add_library(mod_email SHARED ${INTEGRATED_MODULE_SOURCE})
+
+set(VMIME_INSTALL OFF CACHE BOOL "Build vmime static library")
+set(VMIME_BUILD_TESTS OFF CACHE BOOL "Build vmime static library")
+set(VMIME_HAVE_TLS_SUPPORT OFF CACHE BOOL "Build vmime static library")
+set(VMIME_HAVE_SASL_SUPPORT OFF CACHE BOOL "Build vmime static library")
+set(VMIME_BUILD_DOCUMENTATION OFF CACHE BOOL "Build vmime static library")
+set(VMIME_BUILD_STATIC_LIBRARY ON CACHE BOOL "Build vmime static library")
+set(VMIME_BUILD_SHARED_LIBRARY OFF CACHE BOOL "Build vmime static library")
+add_subdirectory(vmime "vmime" EXCLUDE_FROM_ALL)
+
+# install dir
+install(TARGETS mod_email
+ LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/modules")
+
+# vmime headers
+target_include_directories(mod_email PRIVATE
+ "${CMAKE_CURRENT_SOURCE_DIR}/vmime/src"
+ "${CMAKE_BINARY_DIR}/src/vmime"
+ "${CMAKE_BINARY_DIR}/src")
+
+# /Users/erich/Documents/Entwicklung/GpgFrontend/modules/build/src/vmime/config.hpp
+# /Users/erich/Documents/Entwicklung/GpgFrontend/modules/build
+message(STATUS "CMAKE_BINARY_DIR of module email: ${CMAKE_BINARY_DIR}")
+
+# link sdk
+target_link_libraries(mod_email PRIVATE
+ gpgfrontend_module_sdk)
+
+# link qt
+target_link_libraries(mod_email PRIVATE Qt::Core Qt::Widgets Qt::Concurrent)
+
+# link vmime
+target_link_libraries(mod_email PRIVATE vmime-static)
+
+# using std c++ 17
+target_compile_features(mod_email PRIVATE cxx_std_17)
+
+# i18n
+# set(LOCALE_TS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/ts)
+# set(TS_FILES "${LOCALE_TS_PATH}/ModuleEMail.en_US.ts"
+# "${LOCALE_TS_PATH}/ModuleEMail.de_DE.ts"
+# "${LOCALE_TS_PATH}/ModuleEMail.fr_FR.ts"
+# "${LOCALE_TS_PATH}/ModuleEMail.it_iT.ts"
+# "${LOCALE_TS_PATH}/ModuleEMail.zh_CN.ts"
+# "${LOCALE_TS_PATH}/ModuleEMail.zh_TW.ts")
+# qt_add_translations(mod_email
+# RESOURCE_PREFIX "/i18n"
+# TS_FILES ${TS_FILES}
+# SOURCES ${INTEGRATED_MODULE_SOURCE}
+# INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR}) \ No newline at end of file
diff --git a/src/m_email/EMailModule.cpp b/src/m_email/EMailModule.cpp
new file mode 100644
index 0000000..d5f426c
--- /dev/null
+++ b/src/m_email/EMailModule.cpp
@@ -0,0 +1,83 @@
+/**
+ * Copyright (C) 2021-2024 Saturneric <[email protected]>
+ *
+ * This file is part of GpgFrontend.
+ *
+ * GpgFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GpgFrontend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#include "EMailModule.h"
+
+#include <GFSDKBasic.h>
+#include <GFSDKBuildInfo.h>
+#include <GFSDKLog.h>
+
+// qt
+#include <QCoreApplication>
+#include <QCryptographicHash>
+#include <QFileInfo>
+#include <QJsonDocument>
+#include <QString>
+
+// vmime
+#define VMIME_STATIC
+#include <vmime/vmime.hpp>
+
+#include "GFModuleCommonUtils.hpp"
+#include "GFModuleDefine.h"
+
+GF_MODULE_API_DEFINE("com.bktus.gpgfrontend.module.email", "Email", "1.0.0",
+ "Everything related to E-Mails.", "Saturneric")
+
+DEFINE_TRANSLATIONS_STRUCTURE(ModuleEMail);
+
+extern auto CalculateBinaryChacksum(const QString &path)
+ -> std::optional<QString>;
+
+auto GFRegisterModule() -> int {
+ MLogDebug("email module registering...");
+
+ REGISTER_TRANS_READER();
+
+ vmime::datetime dl("Sat, 08 Oct 2005 14:07:52 +0200");
+ dl.getDay();
+
+ return 0;
+}
+
+auto GFActiveModule() -> int { return 0; }
+
+EXECUTE_MODULE() {
+ FLOG_DEBUG("email executing, event id: %1", event["event_id"]);
+
+ CB_SUCC(event);
+}
+END_EXECUTE_MODULE()
+
+auto GFDeactivateModule() -> int { return 0; }
+
+auto GFUnregisterModule() -> int {
+ MLogDebug("email module unregistering...");
+
+ return 0;
+}
diff --git a/src/m_email/EMailModule.h b/src/m_email/EMailModule.h
new file mode 100644
index 0000000..e021464
--- /dev/null
+++ b/src/m_email/EMailModule.h
@@ -0,0 +1,33 @@
+/**
+ * Copyright (C) 2021-2024 Saturneric <[email protected]>
+ *
+ * This file is part of GpgFrontend.
+ *
+ * GpgFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GpgFrontend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GpgFrontend. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from
+ * the gpg4usb project, which is under GPL-3.0-or-later.
+ *
+ * All the source code of GpgFrontend was modified and released by
+ * Saturneric <[email protected]> starting on May 12, 2021.
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#pragma once
+
+#include "GFModuleDeclare.h"
+
+GF_MODULE_API_DECLARE \ No newline at end of file
diff --git a/src/m_email/ts/ModuleEMail.de_DE.ts b/src/m_email/ts/ModuleEMail.de_DE.ts
new file mode 100644
index 0000000..15f5b44
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.de_DE.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de_DE">
+<TS/>
diff --git a/src/m_email/ts/ModuleEMail.en_US.ts b/src/m_email/ts/ModuleEMail.en_US.ts
new file mode 100644
index 0000000..c0603da
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.en_US.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en_US">
+<TS/>
diff --git a/src/m_email/ts/ModuleEMail.fr_FR.ts b/src/m_email/ts/ModuleEMail.fr_FR.ts
new file mode 100644
index 0000000..63d078d
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.fr_FR.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr_FR">
+<TS/>
diff --git a/src/m_email/ts/ModuleEMail.it_iT.ts b/src/m_email/ts/ModuleEMail.it_iT.ts
new file mode 100644
index 0000000..0c07c8a
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.it_iT.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<TS/>
diff --git a/src/m_email/ts/ModuleEMail.zh_CN.ts b/src/m_email/ts/ModuleEMail.zh_CN.ts
new file mode 100644
index 0000000..c993db4
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.zh_CN.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_CN">
+<TS/>
diff --git a/src/m_email/ts/ModuleEMail.zh_TW.ts b/src/m_email/ts/ModuleEMail.zh_TW.ts
new file mode 100644
index 0000000..9da77c6
--- /dev/null
+++ b/src/m_email/ts/ModuleEMail.zh_TW.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="zh_TW">
+<TS/>