Added support for yahoo, bing, yandex, ecosia #199

This commit is contained in:
ManeraKai 2022-04-18 11:32:20 +03:00
parent b657b1ae2b
commit 8b88d53dee
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
4 changed files with 46 additions and 27 deletions

View File

@ -19,6 +19,7 @@ body.option(dir="auto")
option(value="searxng") SearXNG option(value="searxng") SearXNG
option(value="whoogle") Whoogle option(value="whoogle") Whoogle
option(value="startpage") Startpage option(value="startpage") Startpage
option(value="ecosia") Ecosia
#searx-whoogle #searx-whoogle

View File

@ -4,8 +4,13 @@ import commonHelper from './common.js'
const targets = [ const targets = [
/^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/, /^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
/^https?:\/{2}libredirect\.invalid/ /^https?:\/{2}(www\.|)bing\.com/,
// /^https?:\/{2}yandex\.com(\...|)(\/search\/..*|\/$)/,
/^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 = { let redirects = {
"searx": { "searx": {
@ -25,7 +30,9 @@ let redirects = {
}, },
"startpage": { "startpage": {
"normal": "https://www.startpage.com", "normal": "https://www.startpage.com",
"tor": null },
"ecosia": {
"normal": "https://www.ecosia.org",
} }
}; };
const getRedirects = () => redirects; const getRedirects = () => redirects;
@ -398,8 +405,7 @@ function redirect(url) {
if (!targets.some(rx => rx.test(url.href))) return; if (!targets.some(rx => rx.test(url.href))) return;
if (url.searchParams.has('tbm')) 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 randomInstance;
let path; let path;
if (frontend == 'searx') { if (frontend == 'searx') {
@ -433,10 +439,21 @@ function redirect(url) {
randomInstance = redirects.startpage.normal; randomInstance = redirects.startpage.normal;
path = "/do/search"; 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 = ""; 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}`; return `${randomInstance}${path}${searchQuery}`;
} }
@ -500,7 +517,7 @@ function switchInstance(url) {
} }
async function init() { async function init() {
return new Promise((resolve) => { return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => { fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data); let dataJson = JSON.parse(data);
browser.storage.local.get( browser.storage.local.get(

View File

@ -69,6 +69,7 @@
<option value="searxng">SearXNG</option> <option value="searxng">SearXNG</option>
<option value="whoogle">Whoogle</option> <option value="whoogle">Whoogle</option>
<option value="startpage">Startpage</option> <option value="startpage">Startpage</option>
<option value="ecosia">Ecosia</option>
</select> </select>
</div> </div>
<div id="searx-whoogle"> <div id="searx-whoogle">

View File

@ -34,7 +34,7 @@ function changeFrontendsSettings(frontend) {
whoogleDivElement.style.display = 'block'; whoogleDivElement.style.display = 'block';
SearxWhoogleElement.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>`; frontendElement.innerHTML = `Frontend: <span style="color:red;">This is a centralized service</span>`;
searxDivElement.style.display = 'none'; searxDivElement.style.display = 'none';
searxngDivElement.style.display = 'none'; searxngDivElement.style.display = 'none';