From 5b3c8aec11c131765d5e11cf979a58f7c96eb633 Mon Sep 17 00:00:00 2001 From: sudden6 Date: Wed, 23 Oct 2019 01:05:04 +0200 Subject: [PATCH] refactor: remove AppImage update bridge When re-evaluating our dependencies we decided that the update bridge has a high potential for security issues because it's not widely used. Additionally similar functionality is already present in qTox. --- CMakeLists.txt | 17 ------- appimage/build.sh | 19 -------- src/net/updatecheck.cpp | 64 -------------------------- src/net/updatecheck.h | 26 ----------- src/widget/form/settings/aboutform.cpp | 11 ----- src/widget/form/settings/aboutform.h | 6 --- 6 files changed, 143 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ef2e859bc..de4f22fb6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,7 +26,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) option(PLATFORM_EXTENSIONS "Enable platform specific extensions, requires extra dependencies" ON) option(USE_FILTERAUDIO "Enable the echo canceling backend" ON) option(UPDATE_CHECK "Enable automatic update check" ON) -option(APPIMAGE_UPDATER_BRIDGE "Use AppImageUpdaterBridge to do the update" OFF) option(USE_CCACHE "Use ccache when available" ON) option(SPELL_CHECK "Enable spell cheching support" ON) option(SVGZ_ICON "Compress the SVG icon of qTox" ON) @@ -56,11 +55,6 @@ if(APPLE) /usr/local/opt/openal-soft/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}) endif() -if(${APPIMAGE_UPDATER_BRIDGE}) - set(ENV{PKG_CONFIG_PATH} - /usr/local/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}) -endif() - execute_process( COMMAND brew --prefix qt5 OUTPUT_VARIABLE QT_PREFIX_PATH @@ -648,17 +642,6 @@ endif() if(${UPDATE_CHECK}) add_definitions(-DUPDATE_CHECK_ENABLED=1) - if(${APPIMAGE_UPDATER_BRIDGE}) - search_dependency(AIUB PACKAGE AppImageUpdaterBridge) - if(AIUB_FOUND) - message(STATUS "using AppImageUpdaterBridge") - add_definitions(-DAPPIMAGE_UPDATER_BRIDGE_ENABLED=1) - else() - message(STATUS "cannot find AppImageUpdaterBridge , ignoring cmake flag") - endif() - else() - message(STATUS "not using AppImageUpdaterBridge") - endif() set(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_SOURCES} src/net/updatecheck.cpp src/net/updatecheck.h) diff --git a/appimage/build.sh b/appimage/build.sh index 1ab2296fe..eaa80c31c 100755 --- a/appimage/build.sh +++ b/appimage/build.sh @@ -47,12 +47,6 @@ readonly APT_FLAGS="-y --no-install-recommends" readonly SNORE_GIT="https://github.com/KDE/snorenotify" # snorenotify build directory readonly SNORE_BUILD_DIR="$BUILD_DIR"/snorenotify -# "appimage updater bridge" becomes aub -readonly AUB_SRC_DIR="$BUILD_DIR"/aub -# aub source -readonly AUB_GIT="https://github.com/antony-jr/AppImageUpdaterBridge" -# aub build dir -readonly AUB_BUILD_DIR="$BUILD_DIR"/aub/build # update information to be embeded in AppImage if [ "cron" == "${TRAVIS_EVENT_TYPE:-}" ] @@ -110,18 +104,6 @@ LDFLAGS="-lcrypto" make make install -# build aub into a static library and later use it in -# qTox -git clone "$AUB_GIT" "$AUB_SRC_DIR" -cd "$AUB_SRC_DIR" # we need to checkout first -git checkout tags/v1.1.2 -mkdir $AUB_BUILD_DIR -cd $AUB_BUILD_DIR -cmake .. -DLOGGING_DISABLED=ON - -make -make install - # copy qtox source cp -r "$QTOX_SRC_DIR" "$QTOX_BUILD_DIR" cd "$QTOX_BUILD_DIR" @@ -138,7 +120,6 @@ cd _build # need to build with -DDESKTOP_NOTIFICATIONS=True for snorenotify cmake -DDESKTOP_NOTIFICATIONS=True \ -DUPDATE_CHECK=True \ - -DAPPIMAGE_UPDATER_BRIDGE=True \ ../ make diff --git a/src/net/updatecheck.cpp b/src/net/updatecheck.cpp index d7075150e..c5ad70452 100644 --- a/src/net/updatecheck.cpp +++ b/src/net/updatecheck.cpp @@ -19,14 +19,7 @@ #include "src/net/updatecheck.h" #include "src/persistence/settings.h" -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED #include -#else -#include -#include -#include -#include -#endif #include #include #include @@ -36,34 +29,16 @@ #include #include -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED namespace { const QString versionUrl{QStringLiteral("https://api.github.com/repos/qTox/qTox/releases/latest")}; } // namespace -#else -using AppImageUpdaterBridge::AppImageDeltaRevisioner; -using AppImageUpdaterBridge::AppImageUpdaterDialog; -#endif UpdateCheck::UpdateCheck(const Settings& settings) : settings(settings) { updateTimer.start(1000 * 60 * 60 * 24 /* 1 day */); connect(&updateTimer, &QTimer::timeout, this, &UpdateCheck::checkForUpdate); -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED connect(&manager, &QNetworkAccessManager::finished, this, &UpdateCheck::handleResponse); -#else - connect(&revisioner, &AppImageDeltaRevisioner::updateAvailable, this, &UpdateCheck::handleUpdate); - connect(&revisioner, &AppImageDeltaRevisioner::error, this, &UpdateCheck::updateCheckFailed, - Qt::DirectConnection); - - updateDialog.reset(new AppImageUpdaterDialog(QPixmap(":/img/icons/qtox.svg"))); - connect(updateDialog.data(), &AppImageUpdaterDialog::quit, QApplication::instance(), - &QApplication::quit, Qt::QueuedConnection); - connect(updateDialog.data(), &AppImageUpdaterDialog::canceled, this, &UpdateCheck::handleUpdateEnd); - connect(updateDialog.data(), &AppImageUpdaterDialog::finished, this, &UpdateCheck::handleUpdateEnd); - connect(updateDialog.data(), &AppImageUpdaterDialog::error, this, &UpdateCheck::handleUpdateEnd); -#endif } void UpdateCheck::checkForUpdate() @@ -72,30 +47,11 @@ void UpdateCheck::checkForUpdate() // still run the timer to check periodically incase setting changes return; } -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED manager.setProxy(settings.getProxy()); QNetworkRequest request{versionUrl}; manager.get(request); -#else - revisioner.clear(); - revisioner.setProxy(settings.getProxy()); - revisioner.checkForUpdate(); -#endif } -#ifdef APPIMAGE_UPDATER_BRIDGE_ENABLED -void UpdateCheck::initUpdate() -{ - disconnect(&revisioner, &AppImageDeltaRevisioner::updateAvailable, this, - &UpdateCheck::handleUpdate); - disconnect(&revisioner, &AppImageDeltaRevisioner::error, this, &UpdateCheck::updateCheckFailed); - updateDialog->move(QGuiApplication::primaryScreen()->geometry().center() - - updateDialog->rect().center()); - updateDialog->init(&revisioner); -} -#endif - -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED void UpdateCheck::handleResponse(QNetworkReply* reply) { assert(reply != nullptr); @@ -135,23 +91,3 @@ void UpdateCheck::handleResponse(QNetworkReply* reply) } reply->deleteLater(); } -#else -void UpdateCheck::handleUpdate(bool aval) -{ - if (aval) { - qInfo() << "Update available"; - emit updateAvailable(); - return; - } - qInfo() << "qTox is up to date"; - emit upToDate(); -} - -void UpdateCheck::handleUpdateEnd() -{ - connect(&revisioner, &AppImageDeltaRevisioner::error, this, &UpdateCheck::updateCheckFailed, - (Qt::ConnectionType)(Qt::DirectConnection | Qt::UniqueConnection)); - connect(&revisioner, &AppImageDeltaRevisioner::updateAvailable, this, - &UpdateCheck::handleUpdate, Qt::UniqueConnection); -} -#endif // APPIMAGE_UPDATER_BRIDGE_ENABLED diff --git a/src/net/updatecheck.h b/src/net/updatecheck.h index b732017cf..30edeedb9 100644 --- a/src/net/updatecheck.h +++ b/src/net/updatecheck.h @@ -20,12 +20,6 @@ #include #include -#ifdef APPIMAGE_UPDATER_BRIDGE_ENABLED -#include -#include -#include -#endif // APPIMAGE_UPDATER_BRIDGE_ENABLED - #include class Settings; @@ -41,35 +35,15 @@ public: void checkForUpdate(); signals: -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED void updateAvailable(QString latestVersion, QUrl link); -#else - void updateAvailable(); -#endif void upToDate(); void updateCheckFailed(); -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED private slots: void handleResponse(QNetworkReply* reply); -#endif - -#ifdef APPIMAGE_UPDATER_BRIDGE_ENABLED -public slots: - void initUpdate(); - -private slots: - void handleUpdate(bool); - void handleUpdateEnd(); -#endif private: -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED QNetworkAccessManager manager; -#else - AppImageUpdaterBridge::AppImageDeltaRevisioner revisioner; - QScopedPointer updateDialog; -#endif // APPIMAGE_UPDATER_BRIDGE_ENABLED QTimer updateTimer; const Settings& settings; }; diff --git a/src/widget/form/settings/aboutform.cpp b/src/widget/form/settings/aboutform.cpp index da2a7bbd5..4d1470d44 100644 --- a/src/widget/form/settings/aboutform.cpp +++ b/src/widget/form/settings/aboutform.cpp @@ -96,10 +96,6 @@ void AboutForm::replaceVersions() connect(updateCheck, &UpdateCheck::updateAvailable, this, &AboutForm::onUpdateAvailable); connect(updateCheck, &UpdateCheck::upToDate, this, &AboutForm::onUpToDate); connect(updateCheck, &UpdateCheck::updateCheckFailed, this, &AboutForm::onUpdateCheckFailed); -#ifdef APPIMAGE_UPDATER_BRIDGE_ENABLED - connect(bodyUI->updateAvailableButton, &QPushButton::clicked, updateCheck, - &UpdateCheck::initUpdate); -#endif } else { qWarning() << "AboutForm passed null UpdateCheck!"; } @@ -169,7 +165,6 @@ void AboutForm::replaceVersions() bodyUI->authorInfo->setText(authorInfo); } -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED void AboutForm::onUpdateAvailable(QString latestVersion, QUrl link) { QObject::disconnect(linkConnection); @@ -177,12 +172,6 @@ void AboutForm::onUpdateAvailable(QString latestVersion, QUrl link) [link]() { QDesktopServices::openUrl(link); }); bodyUI->updateStack->setCurrentIndex(static_cast(updateIndex::available)); } -#else -void AboutForm::onUpdateAvailable() -{ - bodyUI->updateStack->setCurrentIndex(static_cast(updateIndex::available)); -} -#endif void AboutForm::onUpToDate() { diff --git a/src/widget/form/settings/aboutform.h b/src/widget/form/settings/aboutform.h index 2163d4200..9a91066ca 100644 --- a/src/widget/form/settings/aboutform.h +++ b/src/widget/form/settings/aboutform.h @@ -45,11 +45,7 @@ public: } public slots: -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED void onUpdateAvailable(QString latestVersion, QUrl link); -#else - void onUpdateAvailable(); -#endif void onUpToDate(); void onUpdateCheckFailed(); @@ -62,9 +58,7 @@ private: Ui::AboutSettings* bodyUI; QTimer* progressTimer; UpdateCheck* updateCheck; -#ifndef APPIMAGE_UPDATER_BRIDGE_ENABLED QMetaObject::Connection linkConnection; -#endif }; #endif // ABOUTFORM_H