window.browser = window.browser || window.chrome; import utils from './utils.js' const targets = [ /^https?:\/{2}search\.libredirect\.invalid/, ]; // Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript const frontends = new Array("searx", "searxng", "whoogle", "librex") const protocols = new Array("normal", "tor", "i2p", "loki") const redirects = {} /* "searx": { "normal": [], "tor": [], "i2p": [] }, "searxng": { "normal": [], "tor": [], "i2p": [] }, "whoogle": { "normal": [], "tor": [], "i2p": [] } */ //}; //let tmp = "{" for (let i = 0; i < frontends.length; i++) { //redirects.frontends[i] = {} //redirects.push(frontends[i]) //tmp = frontends[i] //tmp = tmp + '\n"' + frontends[i] + '": {' redirects[frontends[i]] = {} for (let x = 0; x < protocols.length; x++) { //redirects.frontends[i].protocols = [] //tmp = tmp + '\n"' + protocols[x] + '": [],' redirects[frontends[i]][protocols[x]] = [] } //tmp = tmp + "\n}," } //tmp = tmp + "\n}" //const redirects = JSON.parse(tmp) function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects = val; searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { const a = searxNormalRedirectsChecks.indexOf(instance); if (a > -1) searxNormalRedirectsChecks.splice(a, 1); const b = searxngNormalRedirectsChecks.indexOf(instance); if (b > -1) searxngNormalRedirectsChecks.splice(b, 1); const c = whoogleNormalRedirectsChecks.indexOf(instance); if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); const d = librexNormalRedirectsChecks.indexOf(instance); if (d > -1) librexNormalRedirectsChecks.splice(d, 1); } browser.storage.local.set({ searchRedirects: redirects, searxNormalRedirectsChecks, searxngNormalRedirectsChecks, whoogleNormalRedirectsChecks, librexNormalRedirectsChecks, }); }) } let disableSearch, searchFrontend, searchRedirects, protocol, protocolFallback, whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects, whoogleTorRedirectsChecks, whoogleTorCustomRedirects, whoogleI2pRedirectsChecks, whoogleI2pCustomRedirects, whoogleLokiCustomRedirects, searxNormalRedirectsChecks, searxNormalCustomRedirects, searxTorRedirectsChecks, searxTorCustomRedirects, searxI2pRedirectsChecks, searxI2pCustomRedirects, searxLokiCustomRedirects, searxngNormalRedirectsChecks, searxngNormalCustomRedirects, searxngTorRedirectsChecks, searxngTorCustomRedirects, searxngI2pRedirectsChecks, searxngI2pCustomRedirects, searxngLokiCustomRedirects, librexNormalRedirectsChecks, librexNormalCustomRedirects, librexTorRedirectsChecks, librexTorCustomRedirects, librexI2pRedirectsChecks, librexI2pCustomRedirects, librexLokiCustomRedirects; function init() { return new Promise(async resolve => { browser.storage.local.get( [ "disableSearch", "searchFrontend", "searchRedirects", "protocol", "protocolFallback", "whoogleNormalRedirectsChecks", "whoogleNormalCustomRedirects", "whoogleTorRedirectsChecks", "whoogleTorCustomRedirects", "whoogleI2pRedirectsChecks", "whoogleI2pCustomRedirects", "whoogleLokiCustomRedirects", "searxNormalRedirectsChecks", "searxNormalCustomRedirects", "searxTorRedirectsChecks", "searxTorCustomRedirects", "searxI2pRedirectsChecks", "searxI2pCustomRedirects", "searxLokiCustomRedirects", "searxngNormalRedirectsChecks", "searxngNormalCustomRedirects", "searxngTorRedirectsChecks", "searxngTorCustomRedirects", "searxngI2pRedirectsChecks", "searxngI2pCustomRedirects", "searxngLokiCustomRedirects", "librexNormalRedirectsChecks", "librexNormalCustomRedirects", "librexTorRedirectsChecks", "librexTorCustomRedirects", "librexI2pRedirectsChecks", "librexI2pCustomRedirects", "librexLokiCustomRedirects" ], r => { disableSearch = r.disableSearch; searchFrontend = r.searchFrontend; searchRedirects = r.searchRedirects; protocol = r.protocol; protocolFallback = r.protocolFallback; whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks; whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects; whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks; whoogleTorCustomRedirects = r.whoogleTorCustomRedirects; whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks; whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects; whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects; searxNormalRedirectsChecks = r.searxNormalRedirectsChecks; searxNormalCustomRedirects = r.searxNormalCustomRedirects; searxTorRedirectsChecks = r.searxTorRedirectsChecks; searxTorCustomRedirects = r.searxTorCustomRedirects; searxI2pRedirectsChecks = r.searxI2pRedirectsChecks; searxI2pCustomRedirects = r.searxI2pCustomRedirects; searxLokiCustomRedirects = r.searxLokiCustomRedirects; searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks; searxngNormalCustomRedirects = r.searxngNormalCustomRedirects; searxngTorRedirectsChecks = r.searxngTorRedirectsChecks; searxngTorCustomRedirects = r.searxngTorCustomRedirects; searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks; searxngI2pCustomRedirects = r.searxngI2pCustomRedirects; searxngLokiCustomRedirects = r.searxngLokiCustomRedirects; librexNormalRedirectsChecks = r.librexNormalRedirectsChecks; librexNormalCustomRedirects = r.librexNormalCustomRedirects; librexTorRedirectsChecks = r.librexTorRedirectsChecks; librexTorCustomRedirects = r.librexTorCustomRedirects; librexI2pRedirectsChecks = r.librexI2pRedirectsChecks; librexI2pCustomRedirects = r.librexI2pCustomRedirects; librexLokiCustomRedirects = r.librexLokiCustomRedirects; resolve(); } ) }) } init(); browser.storage.onChanged.addListener(init) function initSearxCookies(test, from) { return new Promise(async resolve => { await init(); let protocolHost = utils.protocolHost(from); if (![ ...searxNormalRedirectsChecks, ...searxNormalCustomRedirects, ...searxTorRedirectsChecks, ...searxTorCustomRedirects, ...searxI2pRedirectsChecks, ...searxI2pCustomRedirects, ...searxLokiCustomRedirects ].includes(protocolHost)) { resolve(); return; } if (!test) { let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; } await utils.copyCookie('searx', from, checkedInstances, 'advanced_search'); await utils.copyCookie('searx', from, checkedInstances, 'autocomplete'); await utils.copyCookie('searx', from, checkedInstances, 'categories'); await utils.copyCookie('searx', from, checkedInstances, 'disabled_engines'); await utils.copyCookie('searx', from, checkedInstances, 'disabled_plugins'); await utils.copyCookie('searx', from, checkedInstances, 'doi_resolver'); await utils.copyCookie('searx', from, checkedInstances, 'enabled_engines'); await utils.copyCookie('searx', from, checkedInstances, 'enabled_plugins'); await utils.copyCookie('searx', from, checkedInstances, 'image_proxy'); await utils.copyCookie('searx', from, checkedInstances, 'language'); await utils.copyCookie('searx', from, checkedInstances, 'locale'); await utils.copyCookie('searx', from, checkedInstances, 'method'); await utils.copyCookie('searx', from, checkedInstances, 'oscar-style'); await utils.copyCookie('searx', from, checkedInstances, 'results_on_new_tab'); await utils.copyCookie('searx', from, checkedInstances, 'safesearch'); await utils.copyCookie('searx', from, checkedInstances, 'theme'); await utils.copyCookie('searx', from, checkedInstances, 'tokens'); } resolve(true); }) } function pasteSearxCookies() { return new Promise(async resolve => { await init(); if (disableSearch || searchFrontend != 'searx') { resolve(); return; } let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; } utils.getCookiesFromStorage('searx', checkedInstances, 'advanced_search'); utils.getCookiesFromStorage('searx', checkedInstances, 'autocomplete'); utils.getCookiesFromStorage('searx', checkedInstances, 'categories'); utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_engines'); utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_plugins'); utils.getCookiesFromStorage('searx', checkedInstances, 'doi_resolver'); utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_engines'); utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_plugins'); utils.getCookiesFromStorage('searx', checkedInstances, 'image_proxy'); utils.getCookiesFromStorage('searx', checkedInstances, 'language'); utils.getCookiesFromStorage('searx', checkedInstances, 'locale'); utils.getCookiesFromStorage('searx', checkedInstances, 'method'); utils.getCookiesFromStorage('searx', checkedInstances, 'oscar-style'); utils.getCookiesFromStorage('searx', checkedInstances, 'results_on_new_tab'); utils.getCookiesFromStorage('searx', checkedInstances, 'safesearch'); utils.getCookiesFromStorage('searx', checkedInstances, 'theme'); utils.getCookiesFromStorage('searx', checkedInstances, 'tokens'); resolve(); }) } function initSearxngCookies(test, from) { return new Promise(async resolve => { await init(); let protocolHost = utils.protocolHost(from); if (![ ...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects, ...searxngTorRedirectsChecks, ...searxngTorCustomRedirects, ...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects, ...searxngLokiCustomRedirects, ].includes(protocolHost)) { resolve(); return; } if (!test) { let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; } await utils.copyCookie('searxng', from, checkedInstances, 'autocomplete'); await utils.copyCookie('searxng', from, checkedInstances, 'categories'); await utils.copyCookie('searxng', from, checkedInstances, 'disabled_engines'); await utils.copyCookie('searxng', from, checkedInstances, 'disabled_plugins'); await utils.copyCookie('searxng', from, checkedInstances, 'doi_resolver'); await utils.copyCookie('searxng', from, checkedInstances, 'enabled_plugins'); await utils.copyCookie('searxng', from, checkedInstances, 'enabled_engines'); await utils.copyCookie('searxng', from, checkedInstances, 'image_proxy'); await utils.copyCookie('searxng', from, checkedInstances, 'infinite_scroll'); await utils.copyCookie('searxng', from, checkedInstances, 'language'); await utils.copyCookie('searxng', from, checkedInstances, 'locale'); await utils.copyCookie('searxng', from, checkedInstances, 'maintab'); await utils.copyCookie('searxng', from, checkedInstances, 'method'); await utils.copyCookie('searxng', from, checkedInstances, 'query_in_title'); await utils.copyCookie('searxng', from, checkedInstances, 'results_on_new_tab'); await utils.copyCookie('searxng', from, checkedInstances, 'safesearch'); await utils.copyCookie('searxng', from, checkedInstances, 'simple_style'); await utils.copyCookie('searxng', from, checkedInstances, 'theme'); await utils.copyCookie('searxng', from, checkedInstances, 'tokens'); } resolve(true); }) } function pasteSearxngCookies() { return new Promise(async resolve => { await init(); if (disableSearch || searchFrontend != 'searxng', protocol === undefined) { resolve(); return; } let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; } utils.getCookiesFromStorage('searxng', checkedInstances, 'autocomplete'); utils.getCookiesFromStorage('searxng', checkedInstances, 'categories'); utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_engines'); utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_plugins'); utils.getCookiesFromStorage('searxng', checkedInstances, 'doi_resolver'); utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_plugins'); utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_engines'); utils.getCookiesFromStorage('searxng', checkedInstances, 'image_proxy'); utils.getCookiesFromStorage('searxng', checkedInstances, 'infinite_scroll'); utils.getCookiesFromStorage('searxng', checkedInstances, 'language'); utils.getCookiesFromStorage('searxng', checkedInstances, 'locale'); utils.getCookiesFromStorage('searxng', checkedInstances, 'maintab'); utils.getCookiesFromStorage('searxng', checkedInstances, 'method'); utils.getCookiesFromStorage('searxng', checkedInstances, 'query_in_title'); utils.getCookiesFromStorage('searxng', checkedInstances, 'results_on_new_tab'); utils.getCookiesFromStorage('searxng', checkedInstances, 'safesearch'); utils.getCookiesFromStorage('searxng', checkedInstances, 'simple_style'); utils.getCookiesFromStorage('searxng', checkedInstances, 'theme'); utils.getCookiesFromStorage('searxng', checkedInstances, 'tokens'); resolve(); }) } function initLibrexCookies(test, from) { return new Promise(async resolve => { await init(); let protocolHost = utils.protocolHost(from); if (![ ...librexNormalRedirectsChecks, ...librexNormalCustomRedirects, ...librexTorRedirectsChecks, ...librexTorCustomRedirects, ...librexI2pRedirectsChecks, ...librexI2pCustomRedirects, ...librexLokiCustomRedirects ].includes(protocolHost)) { resolve(); return; } if(!test) { let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; } await utils.copyCookie('librex', from, checkedInstances, 'bibliogram'); await utils.copyCookie('librex', from, checkedInstances, 'disable_special'); await utils.copyCookie('librex', from, checkedInstances, 'invidious'); await utils.copyCookie('librex', from, checkedInstances, 'libreddit'); await utils.copyCookie('librex', from, checkedInstances, 'nitter'); await utils.copyCookie('librex', from, checkedInstances, 'proxitok'); await utils.copyCookie('librex', from, checkedInstances, 'theme'); await utils.copyCookie('librex', from, checkedInstances, 'wikiless'); } resolve(true); }) } function pasteLibrexCookies() { return new Promise(async resolve => { await init(); if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; } let checkedInstances = []; if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects]; else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; } utils.getCookiesFromStorage('librex', checkedInstances, 'bibliogram'); utils.getCookiesFromStorage('librex', checkedInstances, 'disable_special'); utils.getCookiesFromStorage('librex', checkedInstances, 'invidious'); utils.getCookiesFromStorage('librex', checkedInstances, 'libreddit'); utils.getCookiesFromStorage('librex', checkedInstances, 'nitter'); utils.getCookiesFromStorage('librex', checkedInstances, 'proxitok'); utils.getCookiesFromStorage('librex', checkedInstances, 'theme'); utils.getCookiesFromStorage('librex', checkedInstances, 'wikiless'); resolve(); }) } function redirect(url, disableOverride) { if (disableSearch && !disableOverride) return; if (!targets.some(rx => rx.test(url.href))) return; if (url.searchParams.has('tbm')) return; if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return; let randomInstance; let path; if (searchFrontend == 'searx') { let instancesList = []; if (protocol == 'loki') instancesList = [...searxLokiCustomRedirects]; else if (protocol == 'i2p') instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; else if (protocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; } if (instancesList.length === 0) { return; } randomInstance = utils.getRandomInstance(instancesList) path = "/"; } else if (searchFrontend == 'searxng') { let instancesList = []; if (protocol == 'loki') instancesList = [...searxngLokiCustomRedirects]; else if (protocol == 'i2p') instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; else if (protocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; } if (instancesList.length === 0) { return; } randomInstance = utils.getRandomInstance(instancesList) path = "/"; } else if (searchFrontend == 'whoogle') { let instancesList = []; if (protocol == 'loki') instancesList = [...whoogleLokiCustomRedirects]; else if (protocol == 'i2p') instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks]; else if (protocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; } if (instancesList.length === 0) { return; } randomInstance = utils.getRandomInstance(instancesList) path = "/search"; } else if (searchFrontend == 'librex') { let instancesList = []; if (protocol == 'loki') instancesList = [...librexLokiCustomRedirects]; else if (protocol == 'i2p') instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; else if (protocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; } if (instancesList.length === 0) { return; } randomInstance = utils.getRandomInstance(instancesList) path = "/search.php"; } if ( ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) || (url.hostname.includes('yandex') && !url.searchParams.has('text')) ) path = '/'; let searchQuery = ""; if ( ( url.hostname.includes('google') || url.hostname.includes('bing') || url.hostname.includes('search.libredirect.invalid') ) && url.searchParams.has('q') ) searchQuery = `?q=${encodeURIComponent(url.searchParams.get('q'))}`; if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`; return `${randomInstance}${path}${searchQuery}`; } function switchInstance(url, disableOverride) { return new Promise(async resolve => { await init(); if (disableSearch && !disableOverride) { resolve(); return; } let protocolHost = utils.protocolHost(url); if (![ ...searchRedirects.searx.normal, ...searchRedirects.searx.tor, ...searchRedirects.searx.i2p, ...searchRedirects.searxng.normal, ...searchRedirects.searxng.tor, ...searchRedirects.searxng.i2p, ...searchRedirects.whoogle.normal, ...searchRedirects.whoogle.tor, ...searchRedirects.whoogle.i2p, ...searchRedirects.librex.normal, ...searchRedirects.librex.tor, ...searchRedirects.librex.i2p, ...searxNormalCustomRedirects, ...searxTorCustomRedirects, ...searxI2pCustomRedirects, ...searxLokiCustomRedirects, ...searxngNormalCustomRedirects, ...searxngTorCustomRedirects, ...searxngI2pCustomRedirects, ...searxngLokiCustomRedirects, ...whoogleNormalCustomRedirects, ...whoogleTorCustomRedirects, ...whoogleI2pCustomRedirects, ...whoogleLokiCustomRedirects, ...librexNormalCustomRedirects, ...librexTorCustomRedirects, ...librexI2pCustomRedirects, ...librexLokiCustomRedirects ].includes(protocolHost)) { resolve(); return; } let instancesList; if (protocol == 'loki') { if (searchFrontend == 'searx') instancesList = [...searxLokiCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngLokiCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleLokiCustomRedirects]; else if (searchFrontend == 'librex') instancesList = [...librexLokiCustomRedirects]; } else if (protocol == 'tor') { if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; else if (searchFrontend == 'librex') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; } else if (protocol == 'i2p') { if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]; else if (searchFrontend == 'librex') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; } if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; else if (searchFrontend == 'librex') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); if (instancesList.length === 0) { resolve(); return; } const randomInstance = utils.getRandomInstance(instancesList); resolve(`${randomInstance}${url.pathname}${url.search}`); }) } function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); /* redirects.searx = dataJson.searx; redirects.searxng = dataJson.searxng; redirects.whoogle = dataJson.whoogle; */ for (let i = 0; i < frontends.length; i++) { redirects[frontends[i]] = dataJson[frontends[i]] } browser.storage.local.get('cloudflareBlackList', async r => { whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { let i; i = whoogleNormalRedirectsChecks.indexOf(instance); if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1); i = searxNormalRedirectsChecks.indexOf(instance); if (i > -1) searxNormalRedirectsChecks.splice(i, 1); i = searxngNormalRedirectsChecks.indexOf(instance); if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); i = librexNormalRedirectsChecks.indexOf(instance); if (i > -1) librexNormalRedirectsChecks.splice(i, 1) } browser.storage.local.set({ disableSearch: false, searchFrontend: 'searxng', searchRedirects: redirects, searxngCustomSettings: false, whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects: [], whoogleTorRedirectsChecks: [...redirects.whoogle.tor], whoogleTorCustomRedirects: [], whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], whoogleI2pCustomRedirects: [], whoogleLokiCustomRedirects: [], searxNormalRedirectsChecks: searxNormalRedirectsChecks, searxNormalCustomRedirects: [], searxTorRedirectsChecks: [...redirects.searx.tor], searxTorCustomRedirects: [], searxI2pRedirectsChecks: [...redirects.searx.i2p], searxI2pCustomRedirects: [], searxLokiCustomRedirects: [], searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, searxngNormalCustomRedirects: [], searxngTorRedirectsChecks: [...redirects.searxng.tor], searxngTorCustomRedirects: [], searxngI2pRedirectsChecks: [...redirects.searxng.i2p], searxngI2pCustomRedirects: [], searxngLokiCustomRedirects: [], librexNormalRedirectsChecks: librexNormalRedirectsChecks, librexNormalCustomRedirects: [], librexTorRedirectsChecks: [...redirects.librex.tor], librexTorCustomRedirects: [], librexI2pRedirectsChecks: [...redirects.librex.i2p], librexI2pCustomRedirects: [], librexLokiCustomRedirects: [] }, () => resolve()) }) }) }) } export default { setRedirects, initSearxCookies, pasteSearxCookies, initSearxngCookies, pasteSearxngCookies, initLibrexCookies, pasteLibrexCookies, redirect, initDefaults, switchInstance, };