From 3bb5d462b6d8d1d34f41f637c669a8239727e6c3 Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina Date: Thu, 8 Jan 2026 09:16:44 +0200 Subject: [PATCH 1/6] Added ssl error logging in mergin api --- core/merginapi.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index e751c9922..62577b463 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -1887,6 +1887,28 @@ void MerginApi::pingMergin() request.setUrl( url ); QNetworkReply *reply = mManager->get( request ); + connect( reply, &QNetworkReply::sslErrors, this, [url]( const QList &errors ) + { + CoreUtils::log( "URL attempting to access:", url.toString() ); + + for ( const auto &error : errors ) + { + CoreUtils::log( "Error Description:", error.errorString() ); + + // Get the certificate causing the error + QSslCertificate cert = error.certificate(); + if ( !cert.isNull() ) + { + CoreUtils::log( "Subject (Common Name):", cert.subjectInfo( QSslCertificate::CommonName ).join( "," ) ); + CoreUtils::log( "Issuer (Common Name):", cert.issuerInfo( QSslCertificate::CommonName ).join( "," ) ); + CoreUtils::log( "Organization:", cert.subjectInfo( QSslCertificate::Organization ).join( "," ) ); + CoreUtils::log( "Valid From:", cert.effectiveDate().toString() ); + CoreUtils::log( "Expires On:", cert.expiryDate().toString() ); + CoreUtils::log( "Fingerprint (SHA256):", cert.digest( QCryptographicHash::Sha256 ).toHex() ); + } + } + } ); + CoreUtils::log( "ping", QStringLiteral( "Requesting: " ) + url.toString() ); connect( reply, &QNetworkReply::finished, this, &MerginApi::pingMerginReplyFinished ); } From 6472932470e893b24a89eb57e072d5bf8ee369c6 Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina Date: Thu, 8 Jan 2026 12:35:28 +0200 Subject: [PATCH 2/6] Updated implementation Added flags for iOS build --- core/merginapi.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index 62577b463..a2ded98ab 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -1887,14 +1887,13 @@ void MerginApi::pingMergin() request.setUrl( url ); QNetworkReply *reply = mManager->get( request ); +#ifndef QT_NO_SSL connect( reply, &QNetworkReply::sslErrors, this, [url]( const QList &errors ) { CoreUtils::log( "URL attempting to access:", url.toString() ); - for ( const auto &error : errors ) { CoreUtils::log( "Error Description:", error.errorString() ); - // Get the certificate causing the error QSslCertificate cert = error.certificate(); if ( !cert.isNull() ) @@ -1908,7 +1907,7 @@ void MerginApi::pingMergin() } } } ); - +#endif CoreUtils::log( "ping", QStringLiteral( "Requesting: " ) + url.toString() ); connect( reply, &QNetworkReply::finished, this, &MerginApi::pingMerginReplyFinished ); } From 939d9a584d2d943b8e0fa175d672d89e29104120 Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina Date: Mon, 19 Jan 2026 09:14:41 +0200 Subject: [PATCH 3/6] Implemented code findings --- core/merginapi.cpp | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index a2ded98ab..a396c851a 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -112,6 +112,17 @@ MerginApi::MerginApi( LocalProjectsManager &localProjects, QObject *parent ) } } ); +#ifndef QT_NO_SSL + QObject::connect(mManager, &QNetworkAccessManager::sslErrors, this, []( QNetworkReply *reply, const QList &errors ) + { + CoreUtils::log( "URL attempting to access:", reply->url().toString()); + for ( const auto &error : errors ) + { + CoreUtils::log( "Error Description:", error.errorString() ); + } + } ); +#endif + // // check if the cache is up to date: // - server url and type @@ -1887,27 +1898,6 @@ void MerginApi::pingMergin() request.setUrl( url ); QNetworkReply *reply = mManager->get( request ); -#ifndef QT_NO_SSL - connect( reply, &QNetworkReply::sslErrors, this, [url]( const QList &errors ) - { - CoreUtils::log( "URL attempting to access:", url.toString() ); - for ( const auto &error : errors ) - { - CoreUtils::log( "Error Description:", error.errorString() ); - // Get the certificate causing the error - QSslCertificate cert = error.certificate(); - if ( !cert.isNull() ) - { - CoreUtils::log( "Subject (Common Name):", cert.subjectInfo( QSslCertificate::CommonName ).join( "," ) ); - CoreUtils::log( "Issuer (Common Name):", cert.issuerInfo( QSslCertificate::CommonName ).join( "," ) ); - CoreUtils::log( "Organization:", cert.subjectInfo( QSslCertificate::Organization ).join( "," ) ); - CoreUtils::log( "Valid From:", cert.effectiveDate().toString() ); - CoreUtils::log( "Expires On:", cert.expiryDate().toString() ); - CoreUtils::log( "Fingerprint (SHA256):", cert.digest( QCryptographicHash::Sha256 ).toHex() ); - } - } - } ); -#endif CoreUtils::log( "ping", QStringLiteral( "Requesting: " ) + url.toString() ); connect( reply, &QNetworkReply::finished, this, &MerginApi::pingMerginReplyFinished ); } From 391e6f817b883a5419c5204f197b78ed59e0b73c Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina Date: Mon, 19 Jan 2026 09:16:58 +0200 Subject: [PATCH 4/6] Formatted code --- core/merginapi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index a396c851a..b067fa9ea 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -113,9 +113,9 @@ MerginApi::MerginApi( LocalProjectsManager &localProjects, QObject *parent ) } ); #ifndef QT_NO_SSL - QObject::connect(mManager, &QNetworkAccessManager::sslErrors, this, []( QNetworkReply *reply, const QList &errors ) + QObject::connect( mManager, &QNetworkAccessManager::sslErrors, this, []( QNetworkReply * reply, const QList &errors ) { - CoreUtils::log( "URL attempting to access:", reply->url().toString()); + CoreUtils::log( "URL attempting to access:", reply->url().toString() ); for ( const auto &error : errors ) { CoreUtils::log( "Error Description:", error.errorString() ); From 911f1c2468800da70df6699361bc11e6bd968f38 Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina <80618569+gabriel-bolbotina@users.noreply.github.com> Date: Mon, 19 Jan 2026 17:44:56 +0200 Subject: [PATCH 5/6] Update core/merginapi.cpp Co-authored-by: Matej Bagar --- core/merginapi.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index b067fa9ea..af892784a 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -113,12 +113,12 @@ MerginApi::MerginApi( LocalProjectsManager &localProjects, QObject *parent ) } ); #ifndef QT_NO_SSL - QObject::connect( mManager, &QNetworkAccessManager::sslErrors, this, []( QNetworkReply * reply, const QList &errors ) + QObject::connect( mManager, &QNetworkAccessManager::sslErrors, this, []( const QNetworkReply *reply, const QList &errors ) { - CoreUtils::log( "URL attempting to access:", reply->url().toString() ); + CoreUtils::log( QStringLiteral( "SSL error" ), QStringLiteral( "URL attempting to access: " ) + reply->url().toString() ); for ( const auto &error : errors ) { - CoreUtils::log( "Error Description:", error.errorString() ); + CoreUtils::log( QStringLiteral( "SSL error" ), QStringLiteral( "Error Description:" ) + error.errorString() ); } } ); #endif From 932d10018c092f086cf4130d28d8039aa38fa0fc Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina Date: Mon, 19 Jan 2026 18:03:29 +0200 Subject: [PATCH 6/6] Formatted code --- core/merginapi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/merginapi.cpp b/core/merginapi.cpp index af892784a..b3f8caf6b 100644 --- a/core/merginapi.cpp +++ b/core/merginapi.cpp @@ -113,7 +113,7 @@ MerginApi::MerginApi( LocalProjectsManager &localProjects, QObject *parent ) } ); #ifndef QT_NO_SSL - QObject::connect( mManager, &QNetworkAccessManager::sslErrors, this, []( const QNetworkReply *reply, const QList &errors ) + QObject::connect( mManager, &QNetworkAccessManager::sslErrors, this, []( const QNetworkReply * reply, const QList &errors ) { CoreUtils::log( QStringLiteral( "SSL error" ), QStringLiteral( "URL attempting to access: " ) + reply->url().toString() ); for ( const auto &error : errors )