OSDN Git Service

Updated copyright year.
[mutilities/MUtilities.git] / src / UpdateChecker.cpp
index a29f0cc..45b6e23 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // 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
@@ -102,12 +102,13 @@ static QQueue<QString> buildRandomList(const char *const *values)
        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;
 }
 
@@ -146,25 +147,24 @@ bool MUtils::UpdateCheckerInfo::isComplete(void)
 // 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!");
        }
 }
 
@@ -457,7 +457,7 @@ bool MUtils::UpdateChecker::getUpdateInfo(const QString &url, const QString &out
                {
                        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*/
                        }
@@ -605,7 +605,7 @@ bool MUtils::UpdateChecker::getFile(const QUrl &url, const QString &outFile, con
                }
        }
        
-       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;
@@ -635,36 +635,16 @@ bool MUtils::UpdateChecker::checkSignature(const QString &file, const QString &s
                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*/
 }