about summary refs log tree commit diff stats
path: root/src
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 /src
parentAdding Raw Link Copy feature #165 (diff)
downloadlibredirect-8b88d53dee88ed37fe4fb4bb2874a56303e3d6ec.zip
Added support for yahoo, bing, yandex, ecosia #199
Diffstat (limited to 'src')
-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
3 files changed, 45 insertions, 27 deletions
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';