summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--user/kmailtransport/APKBUILD44
-rw-r--r--user/kmailtransport/degoogled.patch222
2 files changed, 266 insertions, 0 deletions
diff --git a/user/kmailtransport/APKBUILD b/user/kmailtransport/APKBUILD
new file mode 100644
index 000000000..1f862bce4
--- /dev/null
+++ b/user/kmailtransport/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kmailtransport
+pkgver=20.04.3
+pkgrel=0
+pkgdesc="KDE email transport library"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kcmutils-dev kmime-dev
+ kwallet-dev akonadi-dev akonadi-mime-dev ksmtp-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmailtransport-$pkgver.tar.xz
+ degoogled.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ # Akonadi tests require D-Bus.
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'akonadi-*'
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="c49b5d5a4f58aab8bcf7a7a5bdc10df38d91caa61b05501cc57530e09a68046d527cd2bfe2fc634d64fde7fb24f41fb2ae657a9eb3bbb4b2dea2fede0ccadf93 kmailtransport-20.04.3.tar.xz
+f775ef03389421b1818d5f781c65d45d4154ebcb28c3114164d698db7b7149ef56f7f5bd222ce49de143f06a8eb23b63ba69809791a010144075df42d4783385 degoogled.patch"
diff --git a/user/kmailtransport/degoogled.patch b/user/kmailtransport/degoogled.patch
new file mode 100644
index 000000000..1bb7086c5
--- /dev/null
+++ b/user/kmailtransport/degoogled.patch
@@ -0,0 +1,222 @@
+diff -Naur kmailtransport-20.04.3/CMakeLists.txt kmailtransport-degoogled/CMakeLists.txt
+--- kmailtransport-20.04.3/CMakeLists.txt 2020-07-18 22:38:18.572259714 +0000
++++ kmailtransport-degoogled/CMakeLists.txt 2020-07-18 22:38:06.963507959 +0000
+@@ -29,7 +29,6 @@
+ set(AKONADI_LIB_VERSION "5.14.3")
+ set(AKONADIMIME_LIB_VERSION "5.14.3")
+ set(KSMTP_LIB_VERSION "5.14.3")
+-set(KGAPI_LIB_VERSION "5.14.3")
+
+ set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5MailTransport")
+
+@@ -43,7 +42,6 @@
+ find_package(KF5Akonadi ${AKONADI_LIB_VERSION} CONFIG REQUIRED)
+ find_package(KF5AkonadiMime ${AKONADIMIME_LIB_VERSION} CONFIG REQUIRED)
+ find_package(KPimSMTP ${KSMTP_LIB_VERSION} CONFIG REQUIRED)
+-find_package(KPimGAPI ${KGAPI_LIB_VERSION} CONFIG REQUIRED)
+
+ option(KDEPIM_RUN_AKONADI_TEST "Enable autotest based on Akonadi." TRUE)
+ if (EXISTS "${CMAKE_SOURCE_DIR}/.git")
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/mailtransport.kcfg kmailtransport-degoogled/src/kmailtransport/mailtransport.kcfg
+--- kmailtransport-20.04.3/src/kmailtransport/mailtransport.kcfg 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/mailtransport.kcfg 2020-07-18 22:35:49.028339597 +0000
+@@ -79,7 +79,6 @@
+ <choice name="APOP" />
+ <choice name="CLEAR" />
+ <choice name="ANONYMOUS" />
+- <choice name="XOAUTH2" />
+ </choices>
+ <default>PLAIN</default>
+ </entry>
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/CMakeLists.txt kmailtransport-degoogled/src/kmailtransport/plugins/smtp/CMakeLists.txt
+--- kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/CMakeLists.txt 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/plugins/smtp/CMakeLists.txt 2020-07-18 22:37:43.696009823 +0000
+@@ -27,5 +27,4 @@
+ KF5::ConfigWidgets
+ KF5::KIOWidgets
+ KPim::SMTP
+- KPim::GAPICore
+ )
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/autotests/CMakeLists.txt kmailtransport-degoogled/src/kmailtransport/plugins/smtp/autotests/CMakeLists.txt
+--- kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/autotests/CMakeLists.txt 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/plugins/smtp/autotests/CMakeLists.txt 2020-07-18 22:37:50.785247545 +0000
+@@ -15,6 +15,5 @@
+ KF5::ConfigWidgets
+ KF5::KIOWidgets
+ KPim::SMTP
+- KPim::GAPICore
+ TEST_NAME smtpjobtest
+ )
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpconfigwidget.cpp kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpconfigwidget.cpp
+--- kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpconfigwidget.cpp 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpconfigwidget.cpp 2020-07-18 22:37:12.009416961 +0000
+@@ -70,8 +70,7 @@
+ << Transport::EnumAuthenticationType::CRAM_MD5
+ << Transport::EnumAuthenticationType::DIGEST_MD5
+ << Transport::EnumAuthenticationType::NTLM
+- << Transport::EnumAuthenticationType::GSSAPI
+- << Transport::EnumAuthenticationType::XOAUTH2;
++ << Transport::EnumAuthenticationType::GSSAPI;
+ sslCapa = tlsCapa = noEncCapa;
+ updateAuthCapbilities();
+ }
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpjob.cpp kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpjob.cpp
+--- kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpjob.cpp 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpjob.cpp 2020-07-18 22:37:25.447971965 +0000
+@@ -38,13 +38,6 @@
+ #include <KSMTP/LoginJob>
+ #include <KSMTP/SendJob>
+
+-#include <KGAPI/Account>
+-#include <KGAPI/AuthJob>
+-#include <KGAPI/AccountManager>
+-
+-#define GOOGLE_API_KEY QStringLiteral("554041944266.apps.googleusercontent.com")
+-#define GOOGLE_API_SECRET QStringLiteral("mdT1DjzohxN3npUUzkENT0gO")
+-
+ using namespace MailTransport;
+
+ class SessionPool
+@@ -196,50 +189,9 @@
+ return;
+ }
+
+- if (transport()->authenticationType() == TransportBase::EnumAuthenticationType::XOAUTH2) {
+- auto promise = KGAPI2::AccountManager::instance()->findAccount(
+- GOOGLE_API_KEY, transport()->userName(), { KGAPI2::Account::mailScopeUrl() });
+- connect(promise, &KGAPI2::AccountPromise::finished,
+- this, [forceRefresh, this](KGAPI2::AccountPromise *promise) {
+- if (promise->account()) {
+- if (forceRefresh) {
+- promise = KGAPI2::AccountManager::instance()->refreshTokens(
+- GOOGLE_API_KEY, GOOGLE_API_SECRET, transport()->userName());
+- } else {
+- onTokenRequestFinished(promise);
+- return;
+- }
+- } else {
+- promise = KGAPI2::AccountManager::instance()->getAccount(
+- GOOGLE_API_KEY, GOOGLE_API_SECRET, transport()->userName(),
+- { KGAPI2::Account::mailScopeUrl() });
+- }
+- connect(promise, &KGAPI2::AccountPromise::finished,
+- this, &SmtpJob::onTokenRequestFinished);
+- });
+- } else {
+- startLoginJob();
+- }
+-}
+-
+-void SmtpJob::onTokenRequestFinished(KGAPI2::AccountPromise *promise)
+-{
+- if (promise->hasError()) {
+- qCWarning(MAILTRANSPORT_SMTP_LOG) << "Error obtaining XOAUTH2 token:" << promise->errorText();
+- setError(KJob::UserDefinedError);
+- setErrorText(promise->errorText());
+- emitResult();
+- return;
+- }
+-
+- const auto account = promise->account();
+- const QString tokens = QStringLiteral("%1\001%2").arg(account->accessToken(),
+- account->refreshToken());
+- transport()->setPassword(tokens);
+ startLoginJob();
+ }
+
+-
+ void SmtpJob::startLoginJob()
+ {
+ if (!transport()->requiresAuthentication()) {
+@@ -281,11 +233,7 @@
+ }
+ }
+
+- if (transport()->authenticationType() == Transport::EnumAuthenticationType::XOAUTH2) {
+- passwd = passwd.left(passwd.indexOf(QLatin1Char('\001')));
+- } else {
+- passwd = transport()->password();
+- }
++ passwd = transport()->password();
+ login->setUserName(transport()->userName());
+ login->setPassword(passwd);
+ switch (transport()->authenticationType()) {
+@@ -298,9 +246,6 @@
+ case TransportBase::EnumAuthenticationType::CRAM_MD5:
+ login->setPreferedAuthMode(KSmtp::LoginJob::CramMD5);
+ break;
+- case TransportBase::EnumAuthenticationType::XOAUTH2:
+- login->setPreferedAuthMode(KSmtp::LoginJob::XOAuth2);
+- break;
+ case TransportBase::EnumAuthenticationType::DIGEST_MD5:
+ login->setPreferedAuthMode(KSmtp::LoginJob::DigestMD5);
+ break;
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpjob.h kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpjob.h
+--- kmailtransport-20.04.3/src/kmailtransport/plugins/smtp/smtpjob.h 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/plugins/smtp/smtpjob.h 2020-07-18 22:37:38.056616206 +0000
+@@ -31,10 +31,6 @@
+ class Slave;
+ }
+
+-namespace KGAPI2 {
+-class AccountPromise;
+-}
+-
+ class SmtpJobPrivate;
+
+ namespace MailTransport {
+@@ -74,7 +70,6 @@
+
+ private:
+ void startPasswordRetrieval(bool forceRefresh = false);
+- void onTokenRequestFinished(KGAPI2::AccountPromise *result);
+ void startSmtpJob();
+ void startLoginJob();
+ void startSendJob();
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/servertest.cpp kmailtransport-degoogled/src/kmailtransport/servertest.cpp
+--- kmailtransport-20.04.3/src/kmailtransport/servertest.cpp 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/servertest.cpp 2020-07-18 22:36:05.166604311 +0000
+@@ -80,10 +80,6 @@
+ bool handleNntpConversation(MailTransport::Socket *socket, int type, int *stage, const QString &response, bool *shouldStartTLS);
+ QVector<int> parseAuthenticationList(const QStringList &authentications);
+
+- inline bool isGmail(const QString &server) const {
+- return server.endsWith(QLatin1String("gmail.com")) || server.endsWith(QLatin1String("googlemail.com"));
+- }
+-
+ // slots
+ void slotNormalPossible();
+ void slotNormalNotPossible();
+@@ -156,10 +152,6 @@
+ result << Transport::EnumAuthenticationType::GSSAPI;
+ } else if (current == QLatin1String("ANONYMOUS")) {
+ result << Transport::EnumAuthenticationType::ANONYMOUS;
+- } else if (current == QLatin1String("XOAUTH2")) {
+- if (isGmail(server)) {
+- result << Transport::EnumAuthenticationType::XOAUTH2;
+- }
+ }
+ // APOP is handled by handlePopConversation()
+ }
+@@ -183,9 +175,6 @@
+ }
+
+ QStringList protocols;
+- if (isGmail(server)) {
+- protocols << QStringLiteral("XOAUTH2");
+- }
+
+ protocols << QStringLiteral("LOGIN")
+ << QStringLiteral("PLAIN") << QStringLiteral("CRAM-MD5")
+diff -Naur kmailtransport-20.04.3/src/kmailtransport/transport.cpp kmailtransport-degoogled/src/kmailtransport/transport.cpp
+--- kmailtransport-20.04.3/src/kmailtransport/transport.cpp 2020-06-18 06:30:31.000000000 +0000
++++ kmailtransport-degoogled/src/kmailtransport/transport.cpp 2020-07-18 22:35:40.749229818 +0000
+@@ -142,8 +142,6 @@
+ return QStringLiteral("APOP");
+ case EnumAuthenticationType::ANONYMOUS:
+ return i18nc("Authentication method", "Anonymous");
+- case EnumAuthenticationType::XOAUTH2:
+- return QStringLiteral("XOAUTH2");
+ }
+ Q_ASSERT(false);
+ return QString();