Skip to content

Commit

Permalink
Replace Google with DuckDuckGo for optional fallback favicon fetch URL
Browse files Browse the repository at this point in the history
Modify the work initially done in keepassxreboot#36, and most recently modified in keepassxreboot#1786,
to use DuckDuckGo's https://icons.duckduckgo.com/ip3/www.example.com.ico
favicon endpoint.

Fixes keepassxreboot#2258
  • Loading branch information
kneitinger committed Sep 19, 2018
1 parent f1a13a1 commit 122bb45
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/core/Config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ void Config::init(const QString& fileName)
m_defaults.insert("security/passwordscleartext", false);
m_defaults.insert("security/hidepassworddetails", true);
m_defaults.insert("security/autotypeask", true);
m_defaults.insert("security/IconDownloadFallbackToGoogle", false);
m_defaults.insert("security/IconDownloadFallbackToDuckDuckGo", false);
m_defaults.insert("security/resettouchid", false);
m_defaults.insert("security/resettouchidtimeout", 30);
m_defaults.insert("security/resettouchidscreenlock", true);
Expand Down
16 changes: 8 additions & 8 deletions src/gui/EditWidgetIcons.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,12 @@ void EditWidgetIcons::downloadFavicon()
}
m_urlsToTry.append(QUrl(m_url.scheme() + "://" + secondLevelDomain + "/favicon.ico"));

// Try to use Google fallback, if enabled
if (config()->get("security/IconDownloadFallbackToGoogle", false).toBool()) {
QUrl urlGoogle = QUrl("https://www.google.com/s2/favicons");
// Try to use DuckDuckGo fallback, if enabled
if (config()->get("security/IconDownloadFallbackToDuckDuckGo", false).toBool()) {
QUrl urlDuckDuckGo = QUrl("https://icons.duckduckgo.com");

urlGoogle.setQuery("domain=" + QUrl::toPercentEncoding(secondLevelDomain));
m_urlsToTry.append(urlGoogle);
urlDuckDuckGo.setPath("/ip3/" + QUrl::toPercentEncoding(fullyQualifiedDomain) + ".ico");
m_urlsToTry.append(urlDuckDuckGo);
}

startFetchFavicon(m_urlsToTry.takeFirst());
Expand All @@ -242,7 +242,7 @@ void EditWidgetIcons::fetchFinished()
{
#ifdef WITH_XC_NETWORKING
QImage image;
bool googleFallbackEnabled = config()->get("security/IconDownloadFallbackToGoogle", false).toBool();
bool duckDuckGoFallbackEnabled = config()->get("security/IconDownloadFallbackToDuckDuckGo", false).toBool();
bool error = (m_reply->error() != QNetworkReply::NoError);
QUrl redirectTarget = getRedirectTarget(m_reply);

Expand Down Expand Up @@ -275,9 +275,9 @@ void EditWidgetIcons::fetchFinished()
startFetchFavicon(m_urlsToTry.takeFirst());
return;
} else {
if (!googleFallbackEnabled) {
if (!duckDuckGoFallbackEnabled) {
emit messageEditEntry(tr("Unable to fetch favicon.") + "\n" +
tr("Hint: You can enable Google as a fallback under Tools>Settings>Security"),
tr("Hint: You can enable DuckDuckGo as a fallback under Tools>Settings>Security"),
MessageWidget::Error);
} else {
emit messageEditEntry(tr("Unable to fetch favicon."), MessageWidget::Error);
Expand Down
4 changes: 2 additions & 2 deletions src/gui/SettingsWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ void SettingsWidget::loadSettings()
m_secUi->lockDatabaseMinimizeCheckBox->setChecked(config()->get("security/lockdatabaseminimize").toBool());
m_secUi->lockDatabaseOnScreenLockCheckBox->setChecked(config()->get("security/lockdatabasescreenlock").toBool());
m_secUi->relockDatabaseAutoTypeCheckBox->setChecked(config()->get("security/relockautotype").toBool());
m_secUi->fallbackToGoogle->setChecked(config()->get("security/IconDownloadFallbackToGoogle").toBool());
m_secUi->fallbackToDuckDuckGo->setChecked(config()->get("security/IconDownloadFallbackToDuckDuckGo").toBool());

m_secUi->passwordCleartextCheckBox->setChecked(config()->get("security/passwordscleartext").toBool());
m_secUi->passwordDetailsCleartextCheckBox->setChecked(config()->get("security/hidepassworddetails").toBool());
Expand Down Expand Up @@ -256,7 +256,7 @@ void SettingsWidget::saveSettings()
config()->set("security/lockdatabaseminimize", m_secUi->lockDatabaseMinimizeCheckBox->isChecked());
config()->set("security/lockdatabasescreenlock", m_secUi->lockDatabaseOnScreenLockCheckBox->isChecked());
config()->set("security/relockautotype", m_secUi->relockDatabaseAutoTypeCheckBox->isChecked());
config()->set("security/IconDownloadFallbackToGoogle", m_secUi->fallbackToGoogle->isChecked());
config()->set("security/IconDownloadFallbackToDuckDuckGo", m_secUi->fallbackToDuckDuckGo->isChecked());

config()->set("security/passwordscleartext", m_secUi->passwordCleartextCheckBox->isChecked());
config()->set("security/hidepassworddetails", m_secUi->passwordDetailsCleartextCheckBox->isChecked());
Expand Down
4 changes: 2 additions & 2 deletions src/gui/SettingsWidgetSecurity.ui
Original file line number Diff line number Diff line change
Expand Up @@ -203,9 +203,9 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QCheckBox" name="fallbackToGoogle">
<widget class="QCheckBox" name="fallbackToDuckDuckGo">
<property name="text">
<string>Use Google as fallback for downloading website icons</string>
<string>Use DuckDuckGo as fallback for downloading website icons</string>
</property>
</widget>
</item>
Expand Down

0 comments on commit 122bb45

Please sign in to comment.