Skip to content

Commit

Permalink
Improved logging of SSL errors for Metaverse API requests.
Browse files Browse the repository at this point in the history
  • Loading branch information
namark committed Mar 3, 2024
1 parent 9dc7b76 commit 48b7ed8
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 37 deletions.
40 changes: 3 additions & 37 deletions domain-server/src/DomainServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -190,43 +190,7 @@ bool DomainServer::forwardMetaverseAPIRequest(HTTPConnection* connection,
return true;
}

connect(reply, &QNetworkReply::sslErrors, this, [](auto& errors) {
for(auto&& error : errors)
{
qDebug() << "Got ssl error from metaverse server:" << error.errorString();
qDebug() << "Cert issuer:" << error.certificate().issuerDisplayName();

auto issuerInfo = error.certificate().issuerInfo(QSslCertificate::Organization);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer org:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::CommonName);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer name:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::LocalityName);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer locality name:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::OrganizationalUnitName);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer org unit name:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::CountryName);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer country name:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::StateOrProvinceName);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer state/province name:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::DistinguishedNameQualifier);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer name qualifier:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::SerialNumber);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer serial number:" << info; }

issuerInfo = error.certificate().issuerInfo(QSslCertificate::EmailAddress);
for(auto&& info : issuerInfo) { qDebug() << "Cert issuer email:" << info; }

qDebug() << "To Text:" << error.certificate().toText().toStdString().c_str();

}
});
connect(reply, &QNetworkReply::sslErrors, [reply](const auto& errors) { MetaverseAPI::logSslErrors(reply, errors); });

connect(reply, &QNetworkReply::finished, this, [reply, connection]() {
if (reply->error() != QNetworkReply::NoError) {
Expand Down Expand Up @@ -2752,6 +2716,8 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
req.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QNetworkReply* reply = NetworkAccessManager::getInstance().put(req, doc.toJson());

connect(reply, &QNetworkReply::sslErrors, [reply](const auto& errors) { MetaverseAPI::logSslErrors(reply, errors); });

connect(reply, &QNetworkReply::finished, this, [reply, connection]() {
if (reply->error() != QNetworkReply::NoError) {
qDebug() << "Got error response from metaverse server: " << reply->readAll();
Expand Down
1 change: 1 addition & 0 deletions libraries/networking/src/AccountManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ void AccountManager::sendRequest(const QString& path,
}
});

connect(networkReply, &QNetworkReply::sslErrors, [networkReply](const auto& errors) { MetaverseAPI::logSslErrors(networkReply, errors); });

if (callbackParams.isEmpty()) {
connect(networkReply, &QNetworkReply::finished, networkReply, &QNetworkReply::deleteLater);
Expand Down
17 changes: 17 additions & 0 deletions libraries/networking/src/MetaverseAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,15 @@
#include "MetaverseAPI.h"

#include <QUrl>
#include <QSslSocket>
#include <QSslCipher>
#include <QDebug>

#include <SettingHandle.h>
#include <DependencyManager.h>

#include "NetworkingConstants.h"
#include "NetworkLogging.h"
#include "NodeList.h"


Expand Down Expand Up @@ -98,4 +102,17 @@ namespace MetaverseAPI {

return path;
};

void logSslErrors(const QNetworkReply* reply, const QList<QSslError>& errors) {
for(auto&& error : errors)
{
qCDebug(networking_metaverse) << "Got SSL error from Metaverse server:" << error.errorString();
if (reply) {
qCDebug(networking_metaverse) << "Ciphers:" << reply->sslConfiguration().ciphers();
qCDebug(networking_metaverse) << "SSL session cipher:" << reply->sslConfiguration().sessionCipher();
qCDebug(networking_metaverse) << "Supported SSL Ciphers:" << QSslSocket::supportedCiphers();
}
qCDebug(networking_metaverse) << error.certificate().toText().toStdString().c_str();
}
}
} // namespace MetaverseAPI
4 changes: 4 additions & 0 deletions libraries/networking/src/MetaverseAPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

#include <QtCore/QProcessEnvironment>
#include <QtCore/QUrl>
#include <QSslError>
#include <QNetworkReply>

namespace MetaverseAPI {

Expand Down Expand Up @@ -45,6 +47,8 @@ namespace MetaverseAPI {

QUrl getCurrentMetaverseServerURL();
QString getCurrentMetaverseServerURLPath(bool appendForwardSlash = false);

void logSslErrors(const QNetworkReply* reply, const QList<QSslError>& errors);
}

#endif // athena_MetaverseAPI_h
1 change: 1 addition & 0 deletions libraries/networking/src/NetworkLogging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ Q_LOGGING_CATEGORY(resourceLog, "hifi.networking.resource")
Q_LOGGING_CATEGORY(asset_client, "hifi.networking.asset_client")
Q_LOGGING_CATEGORY(messages_client, "hifi.networking.messages_client")
Q_LOGGING_CATEGORY(networking_webrtc, "hifi.networking.webrtc")
Q_LOGGING_CATEGORY(networking_metaverse, "hifi.networking.metaverse")
1 change: 1 addition & 0 deletions libraries/networking/src/NetworkLogging.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,6 @@ Q_DECLARE_LOGGING_CATEGORY(networking_ice)
Q_DECLARE_LOGGING_CATEGORY(asset_client)
Q_DECLARE_LOGGING_CATEGORY(messages_client)
Q_DECLARE_LOGGING_CATEGORY(networking_webrtc)
Q_DECLARE_LOGGING_CATEGORY(networking_metaverse)

#endif // hifi_NetworkLogging_h

0 comments on commit 48b7ed8

Please sign in to comment.