diff --git a/src/librssguard/gui/settings/settingsbrowsermail.cpp b/src/librssguard/gui/settings/settingsbrowsermail.cpp
index 2abb36485..3373ce574 100644
--- a/src/librssguard/gui/settings/settingsbrowsermail.cpp
+++ b/src/librssguard/gui/settings/settingsbrowsermail.cpp
@@ -8,6 +8,7 @@
#include "miscellaneous/application.h"
#include "miscellaneous/externaltool.h"
#include "miscellaneous/iconfactory.h"
+#include "network-web/cookiejar.h"
#include "network-web/silentnetworkaccessmanager.h"
#include "network-web/webfactory.h"
@@ -39,6 +40,7 @@ SettingsBrowserMail::SettingsBrowserMail(Settings* settings, QWidget* parent)
m_ui->m_listTools->setHeaderLabels(QStringList() << tr("Executable") << tr("Parameters"));
m_ui->m_listTools->header()->setSectionResizeMode(0, QHeaderView::ResizeMode::ResizeToContents);
+ connect(m_ui->m_cbIgnoreAllCookies, &QCheckBox::stateChanged, this, &SettingsBrowserMail::dirtifySettings);
connect(m_ui->m_checkOpenLinksInExternal, &QCheckBox::stateChanged, this, &SettingsBrowserMail::dirtifySettings);
connect(m_proxyDetails, &NetworkProxyDetails::changed, this, &SettingsBrowserMail::dirtifySettings);
connect(m_ui->m_grpCustomExternalBrowser, &QGroupBox::toggled, this, &SettingsBrowserMail::dirtifySettings);
@@ -153,6 +155,8 @@ void SettingsBrowserMail::selectEmailExecutable() {
void SettingsBrowserMail::loadSettings() {
onBeginLoadSettings();
+ m_ui->m_cbIgnoreAllCookies
+ ->setChecked(settings()->value(GROUP(Network), SETTING(Network::IgnoreAllCookies)).toBool());
m_ui->m_checkOpenLinksInExternal
->setChecked(settings()->value(GROUP(Browser), SETTING(Browser::OpenLinksInExternalBrowserRightAway)).toBool());
@@ -191,6 +195,8 @@ void SettingsBrowserMail::loadSettings() {
void SettingsBrowserMail::saveSettings() {
onBeginSaveSettings();
+ settings()->setValue(GROUP(Network), Network::IgnoreAllCookies, m_ui->m_cbIgnoreAllCookies->isChecked());
+
settings()->setValue(GROUP(Browser),
Browser::OpenLinksInExternalBrowserRightAway,
m_ui->m_checkOpenLinksInExternal->isChecked());
@@ -229,6 +235,7 @@ void SettingsBrowserMail::saveSettings() {
ExternalTool::setToolsToSettings(tools);
+ qApp->web()->cookieJar()->updateSettings();
qApp->web()->updateProxy();
// Reload settings for all network access managers.
diff --git a/src/librssguard/gui/settings/settingsbrowsermail.h b/src/librssguard/gui/settings/settingsbrowsermail.h
index 167c9ab4e..bb124433d 100644
--- a/src/librssguard/gui/settings/settingsbrowsermail.h
+++ b/src/librssguard/gui/settings/settingsbrowsermail.h
@@ -12,7 +12,7 @@
class NetworkProxyDetails;
class SettingsBrowserMail : public SettingsPanel {
- Q_OBJECT
+ Q_OBJECT
public:
explicit SettingsBrowserMail(Settings* settings, QWidget* parent = nullptr);
@@ -43,7 +43,7 @@ class SettingsBrowserMail : public SettingsPanel {
};
inline QString SettingsBrowserMail::title() const {
- return tr("Web browser & e-mail & proxy");
+ return tr("Network & web & tools");
}
#endif // SETTINGSBROWSERMAIL_H
diff --git a/src/librssguard/gui/settings/settingsbrowsermail.ui b/src/librssguard/gui/settings/settingsbrowsermail.ui
index dea7101a0..f5024ca4d 100644
--- a/src/librssguard/gui/settings/settingsbrowsermail.ui
+++ b/src/librssguard/gui/settings/settingsbrowsermail.ui
@@ -16,6 +16,20 @@
0
+
+
+ Network
+
+
+ -
+
+
+ Do not accept any incoming cookies
+
+
+
+
+
External web browser
diff --git a/src/librssguard/miscellaneous/settings.cpp b/src/librssguard/miscellaneous/settings.cpp
index b77f3e06d..976ce0711 100644
--- a/src/librssguard/miscellaneous/settings.cpp
+++ b/src/librssguard/miscellaneous/settings.cpp
@@ -10,7 +10,6 @@
#include
#if defined(USE_WEBENGINE)
-
// WebEngine.
DKEY WebEngineAttributes::ID = "web_engine_attributes";
#endif
@@ -42,6 +41,11 @@ DVALUE(QString) Node::PackageFolderDef = QSL(USER_DATA_PLACEHOLDER) + "/node-pac
// Cookies.
DKEY Cookies::ID = "cookies";
+DKEY Network::ID = "network";
+
+DKEY Network::IgnoreAllCookies = "ignore_all_cookies";
+DVALUE(bool) Network::IgnoreAllCookiesDef = false;
+
// AdBlock.
DKEY AdBlock::ID = "adblock";
diff --git a/src/librssguard/miscellaneous/settings.h b/src/librssguard/miscellaneous/settings.h
index 250a9c894..3a46fa1fd 100644
--- a/src/librssguard/miscellaneous/settings.h
+++ b/src/librssguard/miscellaneous/settings.h
@@ -316,6 +316,14 @@ namespace GUI {
VALUE(char*) StyleDef;
} // namespace GUI
+// Network.
+namespace Network {
+ KEY ID;
+
+ KEY IgnoreAllCookies;
+ VALUE(bool) IgnoreAllCookiesDef;
+} // namespace Network
+
// General.
namespace General {
KEY ID;
diff --git a/src/librssguard/network-web/cookiejar.cpp b/src/librssguard/network-web/cookiejar.cpp
index c0d2f85a8..29834bb4d 100644
--- a/src/librssguard/network-web/cookiejar.cpp
+++ b/src/librssguard/network-web/cookiejar.cpp
@@ -21,12 +21,14 @@
CookieJar::CookieJar(QObject* parent) : QNetworkCookieJar(parent) {
#if defined(USE_WEBENGINE)
// WebEngine does not store cookies, CookieJar does.
- QWebEngineProfile::defaultProfile()->setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy::NoPersistentCookies);
+ QWebEngineProfile::defaultProfile()
+ ->setPersistentCookiesPolicy(QWebEngineProfile::PersistentCookiesPolicy::NoPersistentCookies);
m_webEngineCookies = QWebEngineProfile::defaultProfile()->cookieStore();
#endif
// Load all cookies and also set them into WebEngine store.
+ updateSettings();
loadCookies();
#if defined(USE_WEBENGINE)
@@ -75,7 +77,7 @@ QList CookieJar::extractCookiesFromUrl(const QString& url) {
void CookieJar::loadCookies() {
Settings* sett = qApp->settings();
- auto keys = sett->allKeys(Cookies::ID);
+ auto keys = sett->allKeys(GROUP(Cookies));
for (const QString& cookie_key : qAsConst(keys)) {
QByteArray encoded = sett->password(GROUP(Cookies), cookie_key, {}).toByteArray();
@@ -85,10 +87,7 @@ void CookieJar::loadCookies() {
if (!cookie.isEmpty()) {
if (!insertCookieInternal(cookie.at(0), true, false)) {
- qCriticalNN << LOGSEC_NETWORK
- << "Failed to load cookie"
- << QUOTE_W_SPACE(cookie_key)
- << "from settings.";
+ qCriticalNN << LOGSEC_NETWORK << "Failed to load cookie" << QUOTE_W_SPACE(cookie_key) << "from settings.";
sett->remove(Cookies::ID, cookie_key);
}
}
@@ -181,13 +180,27 @@ bool CookieJar::deleteCookieInternal(const QNetworkCookie& cookie, bool notify_o
}
bool CookieJar::insertCookie(const QNetworkCookie& cookie) {
- return insertCookieInternal(cookie, false, true);
+ if (m_ignoreAllCookies) {
+ return {};
+ }
+ else {
+ return insertCookieInternal(cookie, false, true);
+ }
}
bool CookieJar::deleteCookie(const QNetworkCookie& cookie) {
return deleteCookieInternal(cookie, false);
}
+void CookieJar::updateSettings() {
+ m_ignoreAllCookies = qApp->settings()->value(GROUP(Network), SETTING(Network::IgnoreAllCookies)).toBool();
+
+ if (m_ignoreAllCookies) {
+ setAllCookies({});
+ qApp->settings()->remove(GROUP(Cookies));
+ }
+}
+
bool CookieJar::updateCookie(const QNetworkCookie& cookie) {
return updateCookieInternal(cookie, false);
}
diff --git a/src/librssguard/network-web/cookiejar.h b/src/librssguard/network-web/cookiejar.h
index abfcc44d9..59f97e4ad 100644
--- a/src/librssguard/network-web/cookiejar.h
+++ b/src/librssguard/network-web/cookiejar.h
@@ -19,6 +19,8 @@ class CookieJar : public QNetworkCookieJar {
virtual bool updateCookie(const QNetworkCookie& cookie);
virtual bool deleteCookie(const QNetworkCookie& cookie);
+ void updateSettings();
+
public:
static QList extractCookiesFromUrl(const QString& url);
@@ -32,8 +34,10 @@ class CookieJar : public QNetworkCookieJar {
private:
#if defined(USE_WEBENGINE)
- QWebEngineCookieStore * m_webEngineCookies;
+ QWebEngineCookieStore* m_webEngineCookies;
#endif
+
+ bool m_ignoreAllCookies;
};
#endif // COOKIEJAR_H