From 7d0d51efb54a28180cbfece805c64a75f307b242 Mon Sep 17 00:00:00 2001 From: Yuriy Puchkov Date: Tue, 6 Oct 2020 15:57:45 +0300 Subject: [PATCH] Ability to lock switching between s3 and imgur and use s3 only --- src/config/uploadstorageconfig.cpp | 8 ++++++++ .../s3/amazon-server-side/doc/config.ini.example | 7 ++++++- src/tools/storage/storagemanager.cpp | 16 ++++++++++++++++ src/tools/storage/storagemanager.h | 1 + src/utils/confighandler.cpp | 15 ++++++++++++++- 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/config/uploadstorageconfig.cpp b/src/config/uploadstorageconfig.cpp index cf2d20bb..bd3d3c6b 100644 --- a/src/config/uploadstorageconfig.cpp +++ b/src/config/uploadstorageconfig.cpp @@ -17,6 +17,7 @@ #include "uploadstorageconfig.h" #include "src/tools/storage/imgstorages.h" +#include "src/tools/storage/storagemanager.h" #include "src/utils/confighandler.h" #include @@ -46,6 +47,13 @@ UploadStorageConfig::UploadStorageConfig(QWidget* parent) ConfigHandler().setUploadStorage(SCREENSHOT_STORAGE_TYPE_S3); }); + StorageManager storageManager; + if (storageManager.storageLocked()) { + ConfigHandler().setUploadStorage(storageManager.storageDefault()); + storageImgUr->setDisabled(true); + storageImgS3->setDisabled(true); + } + // set current storage radiobutton active if (ConfigHandler().uploadStorage() == SCREENSHOT_STORAGE_TYPE_IMGUR) { storageImgUr->setChecked(true); diff --git a/src/tools/storage/s3/amazon-server-side/doc/config.ini.example b/src/tools/storage/s3/amazon-server-side/doc/config.ini.example index db4fcb9d..f30538ce 100644 --- a/src/tools/storage/s3/amazon-server-side/doc/config.ini.example +++ b/src/tools/storage/s3/amazon-server-side/doc/config.ini.example @@ -1,4 +1,9 @@ [General] +; Lock storage selection for the enterprise users +; (it will lock to the default storage) +STORAGE_LOCK=true + +; PROXY SETTINGS ;HTTP_PROXY_HOST=0.0.0.0 ;HTTP_PROXY_PORT=3128 @@ -6,7 +11,7 @@ ;HTTP_PROXY_USER= ;HTTP_PROXY_PASSWORD= -HTTP_PROXY_TYPE=3 +;HTTP_PROXY_TYPE=3 ; Proxy Types (3 is default): ; 0 Proxy is determined based on the application proxy set using setApplicationProxy() ; 1 Socks5 proxying is used diff --git a/src/tools/storage/storagemanager.cpp b/src/tools/storage/storagemanager.cpp index 6a922c78..ea988341 100644 --- a/src/tools/storage/storagemanager.cpp +++ b/src/tools/storage/storagemanager.cpp @@ -4,6 +4,8 @@ #include "s3/imgs3settings.h" #include "s3/imgs3uploadertool.h" #include "src/tools/capturetool.h" +#include +#include StorageManager::StorageManager() {} @@ -38,4 +40,18 @@ const QString& StorageManager::storageDefault() m_qstr = SCREENSHOT_STORAGE_TYPE_IMGUR; } return m_qstr; +} + +bool StorageManager::storageLocked() +{ + // TODO - move this to some common config file, not a storage specific + // configuration file + bool res = false; + ImgS3Settings imgS3Settings; + if (imgS3Settings.settings()->contains("STORAGE_LOCK")) { + res = imgS3Settings.settings() + ->value(QStringLiteral("STORAGE_LOCK")) + .toBool(); + } + return res; } \ No newline at end of file diff --git a/src/tools/storage/storagemanager.h b/src/tools/storage/storagemanager.h index 730ad173..70a482c0 100644 --- a/src/tools/storage/storagemanager.h +++ b/src/tools/storage/storagemanager.h @@ -17,6 +17,7 @@ public: QObject* parent = nullptr); const QString& storageUrl(const QString& imgUploaderType); const QString& storageDefault(); + bool storageLocked(); private: // class members diff --git a/src/utils/confighandler.cpp b/src/utils/confighandler.cpp index 1699d25b..79a2b0d9 100644 --- a/src/utils/confighandler.cpp +++ b/src/utils/confighandler.cpp @@ -464,11 +464,24 @@ void ConfigHandler::setCopyPathAfterSaveEnabled(const bool value) void ConfigHandler::setUploadStorage(const QString& uploadStorage) { - m_settings.setValue(QStringLiteral("uploadStorage"), uploadStorage); + StorageManager storageManager; + if (storageManager.storageLocked()) { + m_settings.setValue(QStringLiteral("uploadStorage"), + storageManager.storageDefault()); + } else { + m_settings.setValue(QStringLiteral("uploadStorage"), uploadStorage); + } } const QString& ConfigHandler::uploadStorage() { + StorageManager storageManager; + // check for storage lock + if (storageManager.storageLocked()) { + setUploadStorage(storageManager.storageDefault()); + } + + // get storage m_strRes = m_settings.value(QStringLiteral("uploadStorage")).toString(); if (m_strRes.isEmpty()) { StorageManager storageManager;