From 8b88d53dee88ed37fe4fb4bb2874a56303e3d6ec Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Mon, 18 Apr 2022 11:32:20 +0300 Subject: [PATCH] Added support for yahoo, bing, yandex, ecosia #199 --- pug/options/search/search.pug | 1 + src/assets/javascripts/helpers/search.js | 69 +++++++++++++++--------- src/pages/options/search/search.html | 1 + src/pages/options/search/search.js | 2 +- 4 files changed, 46 insertions(+), 27 deletions(-) diff --git a/pug/options/search/search.pug b/pug/options/search/search.pug index 61664b9..79c30e2 100644 --- a/pug/options/search/search.pug +++ b/pug/options/search/search.pug @@ -19,6 +19,7 @@ body.option(dir="auto") option(value="searxng") SearXNG option(value="whoogle") Whoogle option(value="startpage") Startpage + option(value="ecosia") Ecosia #searx-whoogle diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index 1a80586..2aa6ff5 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -4,8 +4,13 @@ import commonHelper from './common.js' const targets = [ /^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/, - /^https?:\/{2}libredirect\.invalid/ - // /^https?:\/{2}yandex\.com(\...|)(\/search\/..*|\/$)/, + /^https?:\/{2}(www\.|)bing\.com/, + + /^https?:\/{2}search\.yahoo(\.[a-z]{2,3}){1,2}/, + + /^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/, + + /^https?:\/{2}libredirect\.invalid/, ]; let redirects = { "searx": { @@ -25,7 +30,9 @@ let redirects = { }, "startpage": { "normal": "https://www.startpage.com", - "tor": null + }, + "ecosia": { + "normal": "https://www.ecosia.org", } }; const getRedirects = () => redirects; @@ -398,8 +405,7 @@ function redirect(url) { if (!targets.some(rx => rx.test(url.href))) return; if (url.searchParams.has('tbm')) return; - if (!url.searchParams.has('q') && url.pathname != '/') return; - + if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return; let randomInstance; let path; if (frontend == 'searx') { @@ -433,10 +439,21 @@ function redirect(url) { randomInstance = redirects.startpage.normal; path = "/do/search"; } - if (!url.searchParams.has('q')) path = '/'; + else if (frontend == 'ecosia') { + randomInstance = redirects.ecosia.normal; + path = '/search'; + } + if ( + ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) || + (url.hostname.includes('yahoo') && !url.searchParams.has('p')) || + (url.hostname.includes('yandex') && !url.searchParams.has('text')) + ) path = '/'; let searchQuery = ""; - if (url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`; + + if ((url.hostname.includes('google') || url.hostname.includes('bing') || url.hostname.includes('libredirect.invalid')) && url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`; + if (url.hostname.includes('yahoo') && url.searchParams.has('p')) searchQuery = `?q=${url.searchParams.get('p')}`; + if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`; return `${randomInstance}${path}${searchQuery}`; } @@ -500,7 +517,7 @@ function switchInstance(url) { } async function init() { - return new Promise((resolve) => { + return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); browser.storage.local.get( @@ -514,27 +531,27 @@ async function init() { "whoogleTorRedirectsChecks", "whoogleTorCustomRedirects", - - "whoogleI2pRedirectsChecks", - "whoogleI2pCustomRedirects", + + "whoogleI2pRedirectsChecks", + "whoogleI2pCustomRedirects", "searxNormalRedirectsChecks", "searxNormalCustomRedirects", "searxTorRedirectsChecks", "searxTorCustomRedirects", - - "searxI2pRedirectsChecks", - "searxI2pCustomRedirects", + + "searxI2pRedirectsChecks", + "searxI2pCustomRedirects", "searxngNormalRedirectsChecks", "searxngNormalCustomRedirects", "searxngTorRedirectsChecks", "searxngTorCustomRedirects", - - "searxngI2pRedirectsChecks", - "searxngI2pCustomRedirects", + + "searxngI2pRedirectsChecks", + "searxngI2pCustomRedirects", "theme", "applyThemeToSites", @@ -562,27 +579,27 @@ async function init() { whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks ?? [...redirects.whoogle.tor]; whoogleTorCustomRedirects = r.whoogleTorCustomRedirects ?? []; - whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks ?? [...redirects.whoogle.i2p]; - whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects ?? []; + whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks ?? [...redirects.whoogle.i2p]; + whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects ?? []; searxNormalRedirectsChecks = r.searxNormalRedirectsChecks ?? [...redirects.searx.normal]; searxNormalCustomRedirects = r.searxNormalCustomRedirects ?? []; searxTorRedirectsChecks = r.searxTorRedirectsChecks ?? [...redirects.searx.tor]; searxTorCustomRedirects = r.searxTorCustomRedirects ?? []; - - searxI2pRedirectsChecks = r.searxI2pRedirectsChecks ?? [...redirects.searx.i2p]; - searxI2pCustomRedirects = r.searxI2pCustomRedirects ?? []; + + searxI2pRedirectsChecks = r.searxI2pRedirectsChecks ?? [...redirects.searx.i2p]; + searxI2pCustomRedirects = r.searxI2pCustomRedirects ?? []; searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks ?? [...redirects.searxng.normal]; searxngNormalCustomRedirects = r.searxngNormalCustomRedirects ?? []; searxngTorRedirectsChecks = r.searxngTorRedirectsChecks ?? [...redirects.searxng.tor]; searxngTorCustomRedirects = r.searxngTorCustomRedirects ?? []; - - searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks ?? [...redirects.searxng.i2p]; - searxngI2pCustomRedirects = r.searxngI2pCustomRedirects ?? []; - + + searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks ?? [...redirects.searxng.i2p]; + searxngI2pCustomRedirects = r.searxngI2pCustomRedirects ?? []; + initSearxCookies() initSearxngCookies() // initWhoogleCookies() diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html index 01e8511..facb020 100644 --- a/src/pages/options/search/search.html +++ b/src/pages/options/search/search.html @@ -69,6 +69,7 @@ +
diff --git a/src/pages/options/search/search.js b/src/pages/options/search/search.js index 1483430..3946695 100644 --- a/src/pages/options/search/search.js +++ b/src/pages/options/search/search.js @@ -34,7 +34,7 @@ function changeFrontendsSettings(frontend) { whoogleDivElement.style.display = 'block'; SearxWhoogleElement.style.display = 'block'; } - else if (frontend == 'startpage') { + else if (frontend == 'startpage' || frontend == 'ecosia') { frontendElement.innerHTML = `Frontend: This is a centralized service`; searxDivElement.style.display = 'none'; searxngDivElement.style.display = 'none';