From 0fbb49c5bcf6bd982f8ac59f9c000f3fd7321674 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Tue, 8 Sep 2026 09:04:02 +0300 Subject: [PATCH] Update User-Agent format IB-8979 Signed-off-by: Raul Metsma --- client/Application.cpp | 10 ++++++++-- client/Application.h | 1 + client/CheckConnection.cpp | 8 ++++---- client/DigiDoc.cpp | 13 ++----------- client/SslCertificate.cpp | 5 ++--- common | 2 +- 6 files changed, 18 insertions(+), 21 deletions(-) diff --git a/client/Application.cpp b/client/Application.cpp index 66b4107d5..4d95c72f0 100644 --- a/client/Application.cpp +++ b/client/Application.cpp @@ -359,6 +359,7 @@ Application::Application( int &argc, char **argv ) QFont f(QStringLiteral("Roboto, Helvetica")); f.setPixelSize(14); QToolTip::setFont(f); + Common::setLanguage(Settings::LANGUAGE); #ifdef CONFIG_URL d->conf = new Configuration(this); @@ -465,8 +466,7 @@ Application::Application( int &argc, char **argv ) d->signer = new QSigner(this); updateTSLCache(QDateTime::currentDateTimeUtc().addDays(-7)); - digidoc::initialize(applicationName().toUtf8().constData(), QStringLiteral("%1/%2 (%3)") - .arg(applicationName(), applicationVersion(), Common::applicationOs()).toUtf8().constData(), + digidoc::initialize(applicationName().toUtf8().constData(), userAgent().constData(), [](const digidoc::Exception *ex) { qDebug() << "TSL loading finished"; Q_EMIT qApp->TSLLoadingFinished(); @@ -675,6 +675,7 @@ void Application::loadTranslation( const QString &lang ) if( d->lang == lang ) return; Settings::LANGUAGE = d->lang = lang; + Common::setLanguage(lang); if(lang == QLatin1String("en")) QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedKingdom)); else QLocale::setDefault(QLocale(QLocale::Estonian, QLocale::Estonia)); @@ -970,6 +971,11 @@ void Application::showWarning(const QString &title, const digidoc::Exception &e) QSigner* Application::signer() const { return d->signer; } +QByteArray Application::userAgent(bool devices) +{ + return Common::userAgent(devices); +} + void Application::updateTSLCache(const QDateTime &tslTime) { QString cache = confValue(Application::TSLCache).toString(); diff --git a/client/Application.h b/client/Application.h index c458af40a..f3380db7d 100644 --- a/client/Application.h +++ b/client/Application.h @@ -75,6 +75,7 @@ class Application final: public BaseApplication static uint readTSLVersion(const QString &path); static void showClient(QStringList params = {}, bool crypto = false, bool sign = false, bool newWindow = false); static void updateTSLCache(const QDateTime &tslTime); + static QByteArray userAgent(bool devices = false); #if defined(Q_OS_MAC) static QString groupContainerPath(); #endif diff --git a/client/CheckConnection.cpp b/client/CheckConnection.cpp index ee6da2d30..feb55d57d 100644 --- a/client/CheckConnection.cpp +++ b/client/CheckConnection.cpp @@ -20,7 +20,6 @@ #include "CheckConnection.h" #include "Application.h" -#include "Common.h" #include #include @@ -33,7 +32,9 @@ bool CheckConnection::check(const QUrl &url) { QNetworkAccessManager nam; QEventLoop e; - QNetworkReply *reply = nam.head(QNetworkRequest(url)); + QNetworkRequest request(url); + request.setRawHeader("User-Agent", Application::userAgent()); + QNetworkReply *reply = nam.head(request); QObject::connect(reply, &QNetworkReply::sslErrors, reply, QOverload &>::of(&QNetworkReply::ignoreSslErrors)); QObject::connect(reply, &QNetworkReply::finished, &e, &QEventLoop::quit); @@ -92,8 +93,7 @@ class LimitedNAM final: public QNetworkAccessManager QNetworkAccessManager* CheckConnection::setupNAM(QNetworkRequest &req, const QByteArray &add) { req.setSslConfiguration(sslConfiguration(add)); - req.setRawHeader("User-Agent", QStringLiteral("%1/%2 (%3)") - .arg(Application::applicationName(), Application::applicationVersion(), Common::applicationOs()).toUtf8()); + req.setRawHeader("User-Agent", Application::userAgent()); auto *nam = new LimitedNAM(); QObject::connect(nam, &QNetworkAccessManager::sslErrors, nam, [](QNetworkReply *reply, const QList &errors) { QList ignore; diff --git a/client/DigiDoc.cpp b/client/DigiDoc.cpp index 8409b55b4..0f6af53a0 100644 --- a/client/DigiDoc.cpp +++ b/client/DigiDoc.cpp @@ -21,7 +21,6 @@ #include "Application.h" #include "CheckConnection.h" -#include "Common.h" #include "MainWindow.h" #include "QCryptoBackend.h" #include "QSigner.h" @@ -425,11 +424,7 @@ bool DigiDoc::extend() QWidget *parent = parentWidget(); try { auto *signer = qApp->signer(); - signer->setUserAgent(QStringLiteral("%1/%2 (%3) Devices: %4").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion(), - Common::applicationOs(), - Common::drivers().join(',')).toUtf8().constData()); + signer->setUserAgent(Application::userAgent(true).constData()); qApp->waitForTSL(fileName()); ServiceConfirmation cb(parent); QString current = m_fileName; @@ -778,11 +773,7 @@ bool DigiDoc::sign(const QString &city, const QString &state, const QString &zip roles.push_back(to(role)); signer->setSignerRoles(roles); signer->setProfile(Settings::DEFAULT_LTA ? "time-stamp-archive" : "time-stamp"); - signer->setUserAgent(QStringLiteral("%1/%2 (%3) Devices: %4").arg( - QCoreApplication::applicationName(), - QCoreApplication::applicationVersion(), - Common::applicationOs(), - Common::drivers().join(',')).toUtf8().constData()); + signer->setUserAgent(Application::userAgent(true).constData()); qApp->waitForTSL( fileName() ); digidoc::Signature *s = b->sign(signer); return modified = waitFor([&] { diff --git a/client/SslCertificate.cpp b/client/SslCertificate.cpp index f43e29df3..4ec762243 100644 --- a/client/SslCertificate.cpp +++ b/client/SslCertificate.cpp @@ -19,7 +19,7 @@ #include "SslCertificate.h" -#include "Common.h" +#include "Application.h" #include #include @@ -366,8 +366,7 @@ SslCertificate::Validity SslCertificate::validateOnline() const // Get issuer QNetworkRequest r(urls.values(SslCertificate::ad_CAIssuers).first()); - r.setRawHeader("User-Agent", QStringLiteral("%1/%2 (%3)") - .arg(QCoreApplication::applicationName(), QCoreApplication::applicationVersion(), Common::applicationOs()).toUtf8()); + r.setRawHeader("User-Agent", Application::userAgent()); QNetworkReply *repl = m.get(r); e.exec(); QSslCertificate issuer(repl->readAll(), QSsl::Der); diff --git a/common b/common index f74815645..82f76706a 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit f74815645e904557a09ae055885a658006811e89 +Subproject commit 82f76706aeb1fec4187215526b9f97a3ea748c98