diff options
author | Katja Marttila <katja.marttila@qt.io> | 2024-03-27 14:51:29 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2024-04-02 14:46:26 +0300 |
commit | 4cfd828179800951bb4d03d40cbbb7bde28db824 (patch) | |
tree | 8668644053ad8f6f49ea378601331ebb89d56791 /src | |
parent | d75f906bcfe69d024b1e5d6a2bdaed5c1e25d66a (diff) |
Fix proxy authentication login
Proxy authentication did not work with CLI installs as it tried to open
a dialog. Fixed it so that the username and password is asked from CLi
when proxy requires authentication instead of trying to open a dialog.
Change-Id: Iea92fa2934d103e4982f4792041512ea3f7b1033
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/metadatajob.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/libs/installer/metadatajob.cpp b/src/libs/installer/metadatajob.cpp index 536449ebd..dd222dd92 100644 --- a/src/libs/installer/metadatajob.cpp +++ b/src/libs/installer/metadatajob.cpp @@ -503,16 +503,25 @@ void MetadataJob::xmlTaskFinished() } } catch (const AuthenticationRequiredException &e) { if (e.type() == AuthenticationRequiredException::Type::Proxy) { - const QNetworkProxy proxy = e.proxy(); - ProxyCredentialsDialog proxyCredentials(proxy); qCWarning(QInstaller::lcInstallerInstallLog) << e.message(); - - if (proxyCredentials.exec() == QDialog::Accepted) { + QString username; + QString password; + const QNetworkProxy proxy = e.proxy(); + if (m_core->isCommandLineInstance()) { + qCDebug(QInstaller::lcInstallerInstallLog).noquote() << QString::fromLatin1("The proxy %1:%2 requires a username and password").arg(proxy.hostName(), proxy.port()); + askForCredentials(&username, &password, QLatin1String("Username: "), QLatin1String("Password: ")); + } else { + ProxyCredentialsDialog proxyCredentials(proxy); + if (proxyCredentials.exec() == QDialog::Accepted) { + username = proxyCredentials.userName(); + password = proxyCredentials.password(); + } + } + if (!username.isEmpty()) { qCDebug(QInstaller::lcInstallerInstallLog) << "Retrying with new credentials ..."; PackageManagerProxyFactory *factory = m_core->proxyFactory(); - factory->setProxyCredentials(proxy, proxyCredentials.userName(), - proxyCredentials.password()); + factory->setProxyCredentials(proxy, username, password); m_core->setProxyFactory(factory); status = XmlDownloadRetry; } else { |