aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-04-18 11:32:20 +0300
committerManeraKai <manerakai@protonmail.com>2022-04-18 11:32:20 +0300
commit8b88d53dee88ed37fe4fb4bb2874a56303e3d6ec (patch)
tree1cc3351fbb0f73599407bc30e082ff284c55ad1c
parentAdding Raw Link Copy feature #165 (diff)
downloadlibredirect-8b88d53dee88ed37fe4fb4bb2874a56303e3d6ec.zip
Added support for yahoo, bing, yandex, ecosia #199
-rw-r--r--pug/options/search/search.pug1
-rw-r--r--src/assets/javascripts/helpers/search.js69
-rw-r--r--src/pages/options/search/search.html1
-rw-r--r--src/pages/options/search/search.js2
4 files changed, 46 insertions, 27 deletions
diff --git a/pug/options/search/search.pug b/pug/options/search/search.pug
index 61664b9c..79c30e2e 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 1a805864..2aa6ff57 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 01e8511e..facb0209 100644
--- a/src/pages/options/search/search.html
+++ b/src/pages/options/search/search.html
@@ -69,6 +69,7 @@
<option value="searxng">SearXNG</option>
<option value="whoogle">Whoogle</option>
<option value="startpage">Startpage</option>
+ <option value="ecosia">Ecosia</option>
</select>
</div>
<div id="searx-whoogle">
diff --git a/src/pages/options/search/search.js b/src/pages/options/search/search.js
index 14834309..3946695b 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: <span style="color:red;">This is a centralized service</span>`;
searxDivElement.style.display = 'none';
searxngDivElement.style.display = 'none';