///////////////////////////////////////////////////////////////////////////////
// MuldeR's Utilities for Qt
-// Copyright (C) 2004-2021 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2022 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
return list;
}
-static const QHash<QString, QString> *initEnvVars(void)
+static const QHash<QString, QString> *initEnvVars(const QString &binCurl)
{
- const QString tempfolder = QDir::toNativeSeparators(MUtils::temp_folder());
QHash<QString, QString> *const environment = new QHash<QString, QString>();
+ const QString tempfolder = QDir::toNativeSeparators(MUtils::temp_folder());
environment->insert(QLatin1String("CURL_HOME"), tempfolder);
- environment->insert(QLatin1String("GNUPGHOME"), tempfolder);
+ const QFileInfo curlFile(binCurl);
+ environment->insert(QLatin1String("CURL_CA_BUNDLE"), QDir::toNativeSeparators(curlFile.absoluteDir().absoluteFilePath(QString("%1.crt").arg(curlFile.completeBaseName()))));
return environment;
}
// Constructor & Destructor
////////////////////////////////////////////////////////////
-MUtils::UpdateChecker::UpdateChecker(const QString &binCurl, const QString &binGnuPG, const QString &binKeys, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode)
+MUtils::UpdateChecker::UpdateChecker(const QString &binCurl, const QString &binVerify, const QString &applicationId, const quint32 &installedBuildNo, const bool betaUpdates, const bool testMode)
:
m_updateInfo(new UpdateCheckerInfo()),
m_binaryCurl(binCurl),
- m_binaryGnuPG(binGnuPG),
- m_binaryKeys(binKeys),
+ m_binaryVerify(binVerify),
+ m_environment(initEnvVars(binCurl)),
m_applicationId(applicationId),
m_installedBuildNo(installedBuildNo),
m_betaUpdates(betaUpdates),
m_testMode(testMode),
- m_maxProgress(MIN_CONNSCORE + 5),
- m_environment(initEnvVars())
+ m_maxProgress(MIN_CONNSCORE + 5)
{
m_status = UpdateStatus_NotStartedYet;
m_progress = 0;
- if(m_binaryCurl.isEmpty() || m_binaryGnuPG.isEmpty() || m_binaryKeys.isEmpty())
+ if(m_binaryCurl.isEmpty() || m_binaryVerify.isEmpty())
{
- MUTILS_THROW("Tools not initialized correctly!");
+ MUTILS_THROW("Required tools not initialized correctly!");
}
}
{
log( "Downloading signature file:", "");
setProgress(MIN_CONNSCORE + 3);
- if (getFile(QUrl(QString("%1%2.sig2").arg(url, MIRROR_URL_POSTFIX[m_betaUpdates ? 1 : 0])), outFileSign))
+ if (getFile(QUrl(QString("%1%2.rsa").arg(url, MIRROR_URL_POSTFIX[m_betaUpdates ? 1 : 0])), outFileSign))
{
return true; /*completed*/
}
}
}
- QStringList args(QLatin1String("-vsSNqkfL"));
+ QStringList args(QLatin1String("-vsSNqfL"));
args << "-m" << QString::number(DOWNLOAD_TIMEOUT / 1000);
args << "--max-redirs" << QString::number(maxRedir);
args << "-A" << USER_AGENT_STR;
return false;
}
- QString keyRingPath(m_binaryKeys);
- bool removeKeyring = false;
- if (QFileInfo(file).absolutePath().compare(QFileInfo(m_binaryKeys).absolutePath(), Qt::CaseInsensitive) != 0)
- {
- keyRingPath = make_temp_file(QFileInfo(file).absolutePath(), "gpg");
- removeKeyring = true;
- if (!QFile::copy(m_binaryKeys, keyRingPath))
- {
- qWarning("CheckSignature: Failed to copy the key-ring file!");
- return false;
- }
- }
-
QStringList args;
- args << QStringList() << "--homedir" << ".";
- args << "--keyring" << QFileInfo(keyRingPath).fileName();
- args << QFileInfo(signature).fileName();
- args << QFileInfo(file).fileName();
+ args << QDir::toNativeSeparators(file);
+ args << QDir::toNativeSeparators(signature);
- const int exitCode = execProcess(m_binaryGnuPG, args, QFileInfo(file).absolutePath(), DOWNLOAD_TIMEOUT);
+ const int exitCode = execProcess(m_binaryVerify, args, QFileInfo(file).absolutePath(), DOWNLOAD_TIMEOUT);
if (exitCode != INT_MAX)
{
log(QString().sprintf("Exited with code %d", exitCode));
}
- if (removeKeyring)
- {
- remove_file(keyRingPath);
- }
-
return (exitCode == 0); /*completed*/
}