From 714ef46a8d02ea749e4b475be807bdb6963f67bf Mon Sep 17 00:00:00 2001 From: BobIsMyManager Date: Thu, 14 Jul 2022 11:57:56 +0100 Subject: forgot to add get_instances.py --- src/instances/get_instances.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/instances/get_instances.py') diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index 098bc38b..f8789248 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -376,6 +376,31 @@ def whoogle(): print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Whoogle') +def librex(): + r = requests.get( + 'https://raw.githubusercontent.com/hnhx/librex/main/README.md') + _list = {} + _list['normal'] = [] + _list['tor'] = [] + _list['i2p'] = [] + + tmp = re.findall( + r"\| \[(?:(?:[a-zA-Z0-9]+\.)+[a-zA-Z]{2,}|✅)\]\((https?:\/{2}(?:[a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,})", r.text) + tmp = filterLastSlash(tmp) + + for item in tmp: + if item.strip() == "": + continue + elif item.endswith('.onion'): + _list['tor'].append(item) + elif item.endswith('.i2p'): + _list['i2p'].append(item) + else: + _list['normal'].append(item) + mightyList['librex'] = _list + print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Librex') + + def rimgo(): r = requests.get( 'https://codeberg.org/video-prize-ranch/rimgo/raw/branch/main/instances.json') @@ -432,6 +457,7 @@ simplytranslate() linvgatranslate() searx_searxng() whoogle() +librex() rimgo() cloudflare = [] -- cgit 1.4.1 From c531943e484347e2cdaa823bf69dfcc483e01541 Mon Sep 17 00:00:00 2001 From: BobIsMyManager Date: Thu, 14 Jul 2022 16:39:04 +0100 Subject: Add support for unifying settings --- README.md | 2 +- src/assets/javascripts/search.js | 68 ++++++++++++++++++++++++++++++++---- src/assets/javascripts/utils.js | 3 +- src/instances/get_instances.py | 2 +- src/pages/background/background.js | 3 +- src/pages/background/incognito.js | 3 +- src/pages/options/widgets/general.js | 1 + 7 files changed, 70 insertions(+), 12 deletions(-) (limited to 'src/instances/get_instances.py') diff --git a/README.md b/README.md index 2c80a614..bf3be985 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Quora => [Quetre](https://github.com/zyachel/quetre)\ IMDb => [Libremdb](https://github.com/zyachel/libremdb)\ PeerTube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\ LBRY/Odysee => [Librarian](https://codeberg.org/librarian/librarian)\ -Search => [SearXNG](https://github.com/searxng/searxng), [SearX](https://searx.github.io/searx/), [Whoogle](https://benbusby.com/projects/whoogle-search/)\ +Search => [SearXNG](https://github.com/searxng/searxng), [SearX](https://searx.github.io/searx/), [Whoogle](https://benbusby.com/projects/whoogle-search/), [Librex](https://github.com/hnhx/librex/)\ Translate => [SimplyTranslate](https://git.sr.ht/~metalune/simplytranslate_web), [LingvaTranslate](https://github.com/TheDavidDelta/lingva-translate)\ Maps => [OpenStreetMap](https://www.openstreetmap.org/), [FacilMap](https://github.com/FacilMap/facilmap)\ Send Files => [Send](https://gitlab.com/timvisee/send) diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js index 93bb10ae..c19f4d4a 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -66,7 +66,7 @@ function setRedirects(val) { if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); const d = librexNormalRedirectsChecks.indexOf(instance); - if (c > -1) librexNormalRedirectsChecks.splice(d, 1); + if (d > -1) librexNormalRedirectsChecks.splice(d, 1); } browser.storage.local.set({ searchRedirects: redirects, @@ -224,8 +224,9 @@ function pasteSearxCookies() { await init(); if (disableSearch || searchFrontend != 'searx') { resolve(); return; } let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects] - else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects] + if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; + else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; + else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; utils.getCookiesFromStorage('searx', checkedInstances, 'advanced_search'); utils.getCookiesFromStorage('searx', checkedInstances, 'autocomplete'); utils.getCookiesFromStorage('searx', checkedInstances, 'categories'); @@ -294,8 +295,9 @@ function pasteSearxngCookies() { await init(); if (disableSearch || searchFrontend != 'searxng', searchProtocol === undefined) { resolve(); return; } let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects] - else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects] + if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; + else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; + else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; utils.getCookiesFromStorage('searxng', checkedInstances, 'autocomplete'); utils.getCookiesFromStorage('searxng', checkedInstances, 'categories'); utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_engines'); @@ -319,6 +321,56 @@ function pasteSearxngCookies() { }) } +function initLibrexCookies(test, from) { + return new Promise(async resolve => { + await init(); + let protocolHost = utils.protocolHost(from); + if (![ + ...librexNormalRedirectsChecks, + ...librexNormalCustomRedirects, + ...librexTorRedirectsChecks, + ...librexTorCustomRedirects, + ...librexI2pRedirectsChecks, + ...librexI2pCustomRedirects, + ].includes(protocolHost)) { resolve(); return; } + + if(!test) { + let checkedInstances; + if (searchProtocol == 'normal') checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; + else if (searchProtocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; + else if (searchProtocol == 'i2p') checkedInstances = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + 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', searchProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (searchProtocol == 'normal') checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; + else if (searchProtocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; + else if (searchProtocol == 'i2p') checkedInstances = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + 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; @@ -523,10 +575,10 @@ function initDefaults() { librexNormalRedirectsChecks: librexNormalRedirectsChecks, librexNormalCustomRedirects: [], - librexTorRedirectsChecks: librexTorRedirectsChecks, + librexTorRedirectsChecks: [...redirects.librex.tor], librexTorCustomRedirects: [], - librexI2pRedirectsChecks: librexI2pRedirectsChecks, + librexI2pRedirectsChecks: [...redirects.librex.i2p], librexI2pCustomRedirects: [] }, () => resolve()) }) @@ -540,6 +592,8 @@ export default { pasteSearxCookies, initSearxngCookies, pasteSearxngCookies, + initLibrexCookies, + pasteLibrexCookies, redirect, initDefaults, switchInstance, diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index c03ca31c..a5300364 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -46,7 +46,7 @@ function updateInstances() { instagramHelper.setRedirects(instances.bibliogram); redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit }); translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva }); - searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle }); + searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle, 'librex': instances.librex }); wikipediaHelper.setRedirects(instances.wikiless); mediumHelper.setRedirects(instances.scribe); quoraHelper.setRedirects(instances.quetre); @@ -384,6 +384,7 @@ function unify(test) { if (!result) result = await searchHelper.initSearxCookies(test, url); if (!result) result = await searchHelper.initSearxngCookies(test, url); + if (!result) result = await searchHelper.initLibrexCookies(test, url); if (!result) result = await tiktokHelper.initProxiTokCookies(test, url); diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index f8789248..35144070 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -385,7 +385,7 @@ def librex(): _list['i2p'] = [] tmp = re.findall( - r"\| \[(?:(?:[a-zA-Z0-9]+\.)+[a-zA-Z]{2,}|✅)\]\((https?:\/{2}(?:[a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,})", r.text) + r"\| {1,2}\[(?:(?:[a-zA-Z0-9]+\.)+[a-zA-Z]{2,}|✅)\]\((https?:\/{2}(?:[a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,})", r.text) tmp = filterLastSlash(tmp) for item in tmp: diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 832d6533..fd7b5dcf 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -81,6 +81,7 @@ twitterHelper.pasteNitterCookies(); wikipediaHelper.pasteWikilessCookies(); searchHelper.pasteSearxCookies(); searchHelper.pasteSearxngCookies(); +searchHelper.pasteLibrexCookies(); redditHelper.pasteLibredditCookies(); redditHelper.pasteTedditCookies(); tiktokHelper.pasteProxiTokCookies(); @@ -257,4 +258,4 @@ browser.contextMenus.onClicked.addListener( browser.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.function === 'unify') utils.unify(false).then(r => sendResponse({ response: r })) return true; -}); \ No newline at end of file +}); diff --git a/src/pages/background/incognito.js b/src/pages/background/incognito.js index 872a83c8..f42eadcf 100644 --- a/src/pages/background/incognito.js +++ b/src/pages/background/incognito.js @@ -14,8 +14,9 @@ await twitterHelper.pasteNitterCookies(); await wikipediaHelper.pasteWikilessCookies(); await searchHelper.pasteSearxCookies(); await searchHelper.pasteSearxngCookies(); +await searchHelper.pasteLibrexCookies(); await redditHelper.pasteLibredditCookies(); await redditHelper.pasteTedditCookies(); await tiktokHelper.pasteProxiTokCookies(); -window.close() \ No newline at end of file +window.close() diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index 721ad2b0..c0faf410 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -83,6 +83,7 @@ importSettingsElement.addEventListener("change", await searchHelper.pasteSearxCookies(); await searchHelper.pasteSearxngCookies(); + await searchHelper.pasteLibrexCookies(); await redditHelper.pasteLibredditCookies(); await redditHelper.pasteTedditCookies(); -- cgit 1.4.1 From 3565707962170a736195eb810940569cc2aa1891 Mon Sep 17 00:00:00 2001 From: BobIsMyManager Date: Mon, 18 Jul 2022 10:28:03 +0100 Subject: No more trailing slashes --- src/instances/get_instances.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'src/instances/get_instances.py') diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index 35144070..e211a596 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -14,13 +14,17 @@ mightyList = {} def filterLastSlash(urlList): - tmp = [] - for i in urlList: - if i.endswith('/'): - tmp.append(i[:-1]) - print(Fore.YELLOW + "Fixed " + Style.RESET_ALL + i) - else: - tmp.append(i) + tmp = {} + for x in urlList: + tmp[x] = {} + for y in urlList[x]: + tmp[x][y] = [] + for z in urlList[x][y]: + if z.endswith('/'): + tmp[x][y].append(z[:-1]) + print(Fore.YELLOW + "Fixed " + Style.RESET_ALL + z) + else: + tmp[x][y].append(z) return tmp @@ -177,7 +181,6 @@ def libreddit(): tmp = re.findall( r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text) - tmp = filterLastSlash(tmp) for item in tmp: if item.endswith('.onion'): @@ -249,7 +252,6 @@ def quetre(): tmp = re.findall( r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text) - tmp = filterLastSlash(tmp) for item in tmp: if item.endswith('.onion'): @@ -270,7 +272,6 @@ def libremdb(): tmp = re.findall( r"\| ([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)*\|*[A-Z]{0,}.*\|.*\|", r.text) - tmp = filterLastSlash(tmp) for item in tmp: if item.strip() == "": @@ -459,6 +460,7 @@ searx_searxng() whoogle() librex() rimgo() +mightyList = filterLastSlash(mightyList) cloudflare = [] authenticate = [] -- cgit 1.4.1 From f4dc7ded61079a8d564bd804fad00a7f4f904319 Mon Sep 17 00:00:00 2001 From: BobIsMyManager Date: Thu, 21 Jul 2022 21:30:46 +0100 Subject: WIP: Optimization, resolve incorrect protocol storage, unified protocol settings... Optmizations still throw a lot of errors, this will be resolved Custom instances of previously unused protocols do not save, this will be resolved Track version number locally for easier config migration in the future --- src/_locales/en/messages.json | 13 +- src/assets/javascripts/general.js | 2 + src/assets/javascripts/imdb.js | 49 +- src/assets/javascripts/imgur.js | 51 +- src/assets/javascripts/instagram.js | 53 +- src/assets/javascripts/lbry.js | 95 +- src/assets/javascripts/medium.js | 52 +- src/assets/javascripts/peertube.js | 31 +- src/assets/javascripts/quora.js | 46 +- src/assets/javascripts/reddit.js | 88 +- src/assets/javascripts/reuters.js | 33 +- src/assets/javascripts/search.js | 145 ++- src/assets/javascripts/sendTargets.js | 47 +- src/assets/javascripts/tiktok.js | 62 +- src/assets/javascripts/translate/translate.js | 146 +-- src/assets/javascripts/twitter.js | 65 +- src/assets/javascripts/utils.js | 9 +- src/assets/javascripts/wikipedia.js | 75 +- src/assets/javascripts/youtube/youtube.js | 155 +-- src/instances/get_instances.py | 68 +- src/pages/background/background.js | 2 + src/pages/options/index.html | 1573 +++++++++++++++++++------ src/pages/options/widgets/general.js | 29 +- src/pages/options/widgets/general.pug | 15 +- src/pages/options/widgets/imdb.js | 65 +- src/pages/options/widgets/imdb.pug | 16 +- src/pages/options/widgets/imgur.js | 68 +- src/pages/options/widgets/imgur.pug | 17 +- src/pages/options/widgets/instagram.js | 62 +- src/pages/options/widgets/instagram.pug | 15 +- src/pages/options/widgets/lbry.js | 61 +- src/pages/options/widgets/lbry.pug | 14 +- src/pages/options/widgets/maps.js | 48 +- src/pages/options/widgets/maps.pug | 11 +- src/pages/options/widgets/medium.js | 65 +- src/pages/options/widgets/medium.pug | 16 +- src/pages/options/widgets/peertube.js | 59 +- src/pages/options/widgets/peertube.pug | 16 +- src/pages/options/widgets/quora.js | 65 +- src/pages/options/widgets/quora.pug | 16 +- src/pages/options/widgets/reddit.js | 72 +- src/pages/options/widgets/reddit.pug | 24 +- src/pages/options/widgets/reuters.js | 66 +- src/pages/options/widgets/reuters.pug | 16 +- src/pages/options/widgets/search.js | 24 +- src/pages/options/widgets/search.pug | 20 +- src/pages/options/widgets/sendTargets.js | 60 +- src/pages/options/widgets/sendTargets.pug | 16 +- src/pages/options/widgets/tiktok.js | 76 +- src/pages/options/widgets/tiktok.pug | 14 +- src/pages/options/widgets/translate.js | 95 +- src/pages/options/widgets/translate.pug | 17 +- src/pages/options/widgets/twitter.js | 60 +- src/pages/options/widgets/twitter.pug | 15 +- src/pages/options/widgets/wikipedia.js | 71 +- src/pages/options/widgets/wikipedia.pug | 13 +- src/pages/options/widgets/youtube.js | 174 +-- src/pages/options/widgets/youtube.pug | 52 +- src/pages/options/widgets/youtubeMusic.js | 52 +- src/pages/options/widgets/youtubeMusic.pug | 9 + src/pages/popup/popup.js | 4 +- 61 files changed, 2880 insertions(+), 1588 deletions(-) (limited to 'src/instances/get_instances.py') diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index d3b7a355..024ba454 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -75,10 +75,6 @@ "message": "Medium", "description": "used in the settings page" }, - "tor": { - "message": "Tor", - "description": "used in the settings page" - }, "theme": { "message": "Theme", "description": "used in the settings page" @@ -206,13 +202,10 @@ "lbry": { "message": "LBRY" }, - "i2p": { - "message": "I2P" - }, - "loki": { - "message": "Lokinet" - }, "testInstancesLatency": { "message": "Test Instances Latency" + }, + "protocolFallback": { + "message": "Fallback to normal if no frontends are available for the current protocol" } } diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js index f778d876..1c27a55d 100644 --- a/src/assets/javascripts/general.js +++ b/src/assets/javascripts/general.js @@ -44,6 +44,8 @@ async function initDefaults() { ], autoRedirect: false, firstPartyIsolate: false, + protocol: "normal", + protocolFallback: true }, () => resolve()) ) } diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js index 0061b7e3..de1293af 100644 --- a/src/assets/javascripts/imdb.js +++ b/src/assets/javascripts/imdb.js @@ -3,15 +3,21 @@ window.browser = window.browser || window.chrome; import utils from './utils.js' const targets = [ - /^https?:\/{2}(www\.|)imdb\.com.*/ + /^https?:\/{2}(?:www\.|)imdb\.com.*/ ]; -let redirects = { - "libremdb": { - "normal": [], - "tor": [] +const frontends = new Array("libremdb") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.libremdb = val; @@ -29,7 +35,8 @@ function setRedirects(val) { let disableImdb, - imdbProtocol, + protocol, + protocolFallback, imdbRedirects, libremdbNormalRedirectsChecks, libremdbNormalCustomRedirects, @@ -41,7 +48,8 @@ function init() { browser.storage.local.get( [ "disableImdb", - "imdbProtocol", + "protocol", + "protocolFallback", "imdbRedirects", "libremdbNormalRedirectsChecks", "libremdbNormalCustomRedirects", @@ -50,7 +58,8 @@ function init() { ], r => { disableImdb = r.disableImdb; - imdbProtocol = r.imdbProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; imdbRedirects = r.imdbRedirects; libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks; libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects; @@ -76,10 +85,12 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (imdbProtocol == 'normal') instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; - if (imdbProtocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}`; @@ -115,9 +126,11 @@ function switchInstance(url, disableOverride) { ]; if (!all.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (imdbProtocol == 'normal') instancesList = [...libremdbNormalCustomRedirects, ...libremdbNormalRedirectsChecks]; - else if (imdbProtocol == 'tor') instancesList = [...libremdbTorCustomRedirects, ...libremdbTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -132,11 +145,11 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.libremdb = dataJson.libremdb; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.set({ disableImdb: true, - imdbProtocol: "normal", - imdbRedirects: redirects, libremdbNormalRedirectsChecks: [...redirects.libremdb.normal], diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js index 8cf54265..dafebb9c 100644 --- a/src/assets/javascripts/imgur.js +++ b/src/assets/javascripts/imgur.js @@ -4,13 +4,18 @@ import utils from './utils.js' const targets = /^https?:\/{2}([im]\.)?imgur\.(com|io)(\/|$)/ -let redirects = { - "rimgo": { - "normal": [], - "tor": [], - "i2p": [] +const frontends = new Array("rimgo") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { @@ -45,7 +50,8 @@ function setRedirects() { let disableImgur, imgurRedirects, - imgurProtocol, + protocol, + protocolFallback, rimgoNormalRedirectsChecks, rimgoNormalCustomRedirects, rimgoTorRedirectsChecks, @@ -59,7 +65,8 @@ function init() { [ "disableImgur", "imgurRedirects", - "imgurProtocol", + "protocol", + "protocolFallback", "rimgoNormalRedirectsChecks", "rimgoNormalCustomRedirects", "rimgoTorRedirectsChecks", @@ -70,7 +77,8 @@ function init() { r => { disableImgur = r.disableImgur; imgurRedirects = r.imgurRedirects; - imgurProtocol = r.imgurProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks; rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects; rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks; @@ -111,11 +119,13 @@ function redirect(url, type, initiator, disableOverride) { if (!targets.test(url.href)) return; if (url.pathname.includes("delete/")) return; - let instancesList; - if (imgurProtocol == 'normal') instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; - if (imgurProtocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; - if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]; + if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}${url.search}`; @@ -136,10 +146,12 @@ function switchInstance(url, disableOverride) { if (disableImgur && !disableOverride) { resolve(); return; } let protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (imgurProtocol == 'normal') instancesList = [...rimgoNormalCustomRedirects, ...rimgoNormalRedirectsChecks]; - else if (imgurProtocol == 'tor') instancesList = [...rimgoTorCustomRedirects, ...rimgoTorRedirectsChecks]; - else if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]; + if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -154,7 +166,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.rimgo = dataJson.rimgo; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]; for (const instance of r.cloudflareBlackList) { @@ -163,7 +177,6 @@ function initDefaults() { } browser.storage.local.set({ disableImgur: false, - imgurProtocol: 'normal', imgurRedirects: redirects, rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks, diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js index 7fa69200..e1c4061b 100644 --- a/src/assets/javascripts/instagram.js +++ b/src/assets/javascripts/instagram.js @@ -5,12 +5,19 @@ const targets = [ "instagram.com", "www.instagram.com", ]; -let redirects = { - "bibliogram": { - "normal": [], - "tor": [] - } -}; + +const frontends = new Array("bibliogram") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {}; + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', async r => { redirects.bibliogram = val; @@ -28,7 +35,8 @@ function setRedirects(val) { let disableInstagram, - instagramProtocol, + protocol, + protocolFallback, instagramRedirects, bibliogramNormalRedirectsChecks, bibliogramTorRedirectsChecks, @@ -40,7 +48,8 @@ function init() { browser.storage.local.get( [ "disableInstagram", - "instagramProtocol", + "protocol", + "protocolFallback", "instagramRedirects", "bibliogramNormalRedirectsChecks", "bibliogramTorRedirectsChecks", @@ -49,7 +58,8 @@ function init() { ], r => { disableInstagram = r.disableInstagram; - instagramProtocol = r.instagramProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; instagramRedirects = r.instagramRedirects; bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks; bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks; @@ -82,10 +92,12 @@ function redirect(url, type, initiator, disableOverride) { const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/]; if (bypassPaths.some(rx => rx.test(url.pathname))) return; - let instancesList; - if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; - else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } let randomInstance = utils.getRandomInstance(instancesList) const reservedPaths = ["u", "p", "privacy",]; @@ -116,9 +128,11 @@ function switchInstance(url, disableOverride) { let protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalCustomRedirects, ...bibliogramNormalRedirectsChecks]; - else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorCustomRedirects, ...bibliogramTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -133,7 +147,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); - redirects.bibliogram = dataJson.bibliogram; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', r => { bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]; for (const instance of r.cloudflareBlackList) { @@ -148,8 +164,7 @@ function initDefaults() { bibliogramTorRedirectsChecks: [], bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor], - bibliogramTorCustomRedirects: [], - instagramProtocol: "normal", + bibliogramTorCustomRedirects: [] }) resolve(); } diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js index 77a8e4ec..7a298fbe 100644 --- a/src/assets/javascripts/lbry.js +++ b/src/assets/javascripts/lbry.js @@ -4,44 +4,36 @@ import utils from './utils.js' let targets = ["odysee.com"]; -let redirects = { - "librarian": { - "normal": [ - "https://lbry.bcow.xyz", - "https://odysee.076.ne.jp", - "https://lbry.ix.tc", - "https://librarian.pussthecat.org", - "https://lbry.mutahar.rocks", - "https://librarian.esmailelbob.xyz", - ], - "tor": [ - "http://ecc5mi5ncdw6mxhjz6re6g2uevtpbzxjvxgrxia2gyvrlnil3srbnhyd.onion", - "http://vrmbc4brkgkaysmi3fenbzkayobxjh24slmhtocambn3ewe62iuqt3yd.onion", - ] +const frontends = new Array("librarian") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } function setRedirects(val) { - redirects.librarian = val; - browser.storage.local.set({ lbryTargetsRedirects: redirects }) - for (const item of librarianNormalRedirectsChecks) - if (!redirects.librarian.normal.includes(item)) { - var index = librarianNormalRedirectsChecks.indexOf(item); - if (index !== -1) librarianNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set(librarianNormalRedirectsChecks); - - for (const item of librarianTorRedirectsChecks) - if (!redirects.librarian.normal.includes(item)) { - var index = librarianTorRedirectsChecks.indexOf(item); - if (index !== -1) librarianTorRedirectsChecks.splice(index, 1); + browser.storage.local.get('cloudflareBlackList', r => { + redirects.librarian = val; + librarianNormalRedirectsChecks = [...redirects.librarian.normal]; + for (const instance of r.cloudflareBlackList) { + const a = librarianNormalRedirectsChecks.indexOf(instance); + if (a > -1) librarianNormalRedirectsChecks.splice(a, 1); } - browser.storage.local.set(librarianTorRedirectsChecks) + browser.storage.local.set({ + lbryTargetsRedirects: redirects, + librarianNormalRedirectsChecks + }) + }) } let disableLbryTargets, - lbryTargetsProtocol, + protocol, lbryTargetsRedirects, librarianNormalRedirectsChecks, librarianNormalCustomRedirects, @@ -53,7 +45,7 @@ function init() { browser.storage.local.get( [ "disableLbryTargets", - "lbryTargetsProtocol", + "protocol", "lbryTargetsRedirects", "librarianNormalRedirectsChecks", "librarianNormalCustomRedirects", @@ -62,7 +54,7 @@ function init() { ], r => { disableLbryTargets = r.disableLbryTargets; - lbryTargetsProtocol = r.lbryTargetsProtocol; + protocol = r.protocol; lbryTargetsRedirects = r.lbryTargetsRedirects; librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks; librarianNormalCustomRedirects = r.librarianNormalCustomRedirects; @@ -92,9 +84,11 @@ function switchInstance(url, disableOverride) { const protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; - else if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -111,9 +105,11 @@ function redirect(url, type, initiator, disableOverride) { if (!targets.includes(url.host)) return; if (type != "main_frame") return; - let instancesList; - if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; - if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); @@ -121,31 +117,24 @@ function redirect(url, type, initiator, disableOverride) { } function initDefaults() { - return new Promise(resolve => { - browser.storage.local.get('cloudflareBlackList', async r => { - librarianNormalRedirectsChecks = [...redirects.librarian.normal]; - for (const instance of r.cloudflareBlackList) { - let i; - - i = librarianNormalRedirectsChecks.indexOf(instance); - if (i > -1) librarianNormalRedirectsChecks.splice(i, 1); + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] } browser.storage.local.set({ disableLbryTargets: true, - lbryTargetsRedirects: { - 'librarian': redirects.librarian - }, + + lbryTargetsRedirects: redirects, librarianNormalRedirectsChecks: librarianNormalRedirectsChecks, librarianNormalCustomRedirects: [], librarianTorRedirectsChecks: [...redirects.librarian.tor], librarianTorCustomRedirects: [], - - lbryTargetsProtocol: "normal", - }, () => resolve()) - - }) + }, () => resolve()); + }); }) } diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js index 5d688b23..37a8a3db 100644 --- a/src/assets/javascripts/medium.js +++ b/src/assets/javascripts/medium.js @@ -1,7 +1,6 @@ window.browser = window.browser || window.chrome; import utils from './utils.js' - const targets = [ // /(?:.*\.)*(? { redirects.scribe = val; @@ -56,7 +61,8 @@ let scribeNormalCustomRedirects, scribeTorRedirectsChecks, scribeTorCustomRedirects, - mediumProtocol; + protocol, + protocolFallback; function init() { return new Promise(resolve => { @@ -68,7 +74,8 @@ function init() { "scribeNormalCustomRedirects", "scribeTorRedirectsChecks", "scribeTorCustomRedirects", - "mediumProtocol" + "protocol", + "protocolFallback" ], r => { disableMedium = r.disableMedium; @@ -77,7 +84,8 @@ function init() { scribeNormalCustomRedirects = r.scribeNormalCustomRedirects; scribeTorRedirectsChecks = r.scribeTorRedirectsChecks; scribeTorCustomRedirects = r.scribeTorCustomRedirects; - mediumProtocol = r.mediumProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; resolve(); } ) @@ -102,10 +110,12 @@ function redirect(url, type, initiator, disableOverride) { if (!targets.some(rx => rx.test(url.host))) return; if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return; - let instancesList; - if (mediumProtocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; - else if (mediumProtocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList) return `${randomInstance}${url.pathname}${url.search}`; @@ -125,9 +135,11 @@ function switchInstance(url, disableOverride) { ]; if (!all.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (mediumProtocol == 'normal') instancesList = [...scribeNormalCustomRedirects, ...scribeNormalRedirectsChecks]; - else if (mediumProtocol == 'tor') instancesList = [...scribeTorCustomRedirects, ...scribeTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -142,7 +154,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); - redirects.scribe = dataJson.scribe; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { scribeNormalRedirectsChecks = [...redirects.scribe.normal]; @@ -159,8 +173,6 @@ function initDefaults() { scribeTorRedirectsChecks: [...redirects.scribe.tor], scribeTorCustomRedirects: [], - - mediumProtocol: "normal", }, () => resolve()) }) }) diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js index 8b7414e8..b397f972 100644 --- a/src/assets/javascripts/peertube.js +++ b/src/assets/javascripts/peertube.js @@ -40,7 +40,8 @@ let simpleertubeTorRedirectsChecks, simpleertubeTorCustomRedirects, peerTubeTargets, - peertubeTargetsProtocol; + protocol, + protocolFallback; function init() { return new Promise(resolve => { @@ -53,7 +54,8 @@ function init() { "simpleertubeTorRedirectsChecks", "simpleertubeTorCustomRedirects", "peerTubeTargets", - "peertubeTargetsProtocol" + "protocol", + "protocolFallback" ], r => { disablePeertubeTargets = r.disablePeertubeTargets; @@ -63,7 +65,8 @@ function init() { simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks; simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects; peerTubeTargets = r.peerTubeTargets; - peertubeTargetsProtocol = r.peertubeTargetsProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; resolve(); } ) @@ -89,10 +92,12 @@ function redirect(url, type, initiator, disableOverride) { if (!peerTubeTargets.includes(protocolHost)) return; if (type != "main_frame") return; - let instancesList; - if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; - if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList); if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance; @@ -106,9 +111,11 @@ function switchInstance(url, disableOverride) { const protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; - else if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -138,9 +145,7 @@ function initDefaults() { simpleertubeNormalCustomRedirects: [], simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], - simpleertubeTorCustomRedirects: [], - - peertubeTargetsProtocol: "normal", + simpleertubeTorCustomRedirects: [] }, () => resolve()); }) }) diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js index 5f33f08d..aa907368 100644 --- a/src/assets/javascripts/quora.js +++ b/src/assets/javascripts/quora.js @@ -6,12 +6,18 @@ const targets = [ /^https?:\/{2}(www\.|)quora\.com.*/ ]; -let redirects = { - "quetre": { - "normal": [], - "tor": [] +let redirects = {} + +const frontends = new Array("quetre") +const protocols = new Array("normal", "tor", "i2p", "loki") + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.quetre = val; @@ -29,7 +35,8 @@ function setRedirects(val) { let disableQuora, - quoraProtocol, + protocol, + protocolFallback, quoraRedirects, quetreNormalRedirectsChecks, quetreNormalCustomRedirects, @@ -41,7 +48,8 @@ function init() { browser.storage.local.get( [ "disableQuora", - "quoraProtocol", + "protocol", + "protocolFallback", "quoraRedirects", "quetreNormalRedirectsChecks", "quetreNormalCustomRedirects", @@ -50,7 +58,8 @@ function init() { ], r => { disableQuora = r.disableQuora; - quoraProtocol = r.quoraProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; quoraRedirects = r.quoraRedirects; quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks; quetreNormalCustomRedirects = r.quetreNormalCustomRedirects; @@ -76,10 +85,12 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (quoraProtocol == 'normal') instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; - if (quoraProtocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}`; @@ -115,9 +126,11 @@ function switchInstance(url, disableOverride) { ]; if (!all.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (quoraProtocol == 'normal') instancesList = [...quetreNormalCustomRedirects, ...quetreNormalRedirectsChecks]; - else if (quoraProtocol == 'tor') instancesList = [...quetreTorCustomRedirects, ...quetreTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -132,10 +145,11 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.quetre = dataJson.quetre; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.set({ disableQuora: false, - quoraProtocol: "normal", quoraRedirects: redirects, diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js index e1f910c3..f43d88dd 100644 --- a/src/assets/javascripts/reddit.js +++ b/src/assets/javascripts/reddit.js @@ -6,16 +6,18 @@ const targets = [ /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/, ]; -let redirects = { - "libreddit": { - "normal": [], - "tor": [] - }, - "teddit": { - "normal": [], - "tor": [] - }, -}; +let redirects = {}; + +const frontends = new Array("libreddit", "teddit") +const protocols = new Array("normal", "tor", "i2p", "loki") + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects = val; @@ -40,7 +42,7 @@ let disableReddit, redditFrontend, redditRedirects, - redditProtocol, + protocol, libredditNormalRedirectsChecks, libredditNormalCustomRedirects, libredditTorRedirectsChecks, @@ -57,7 +59,7 @@ function init() { "disableReddit", "redditFrontend", "redditRedirects", - "redditProtocol", + "protocol", "libredditNormalRedirectsChecks", "libredditNormalCustomRedirects", "libredditTorRedirectsChecks", @@ -71,7 +73,7 @@ function init() { disableReddit = r.disableReddit; redditFrontend = r.redditFrontend; redditRedirects = r.redditRedirects; - redditProtocol = r.redditProtocol; + protocol = r.protocol; libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks; libredditNormalCustomRedirects = r.libredditNormalCustomRedirects; libredditTorRedirectsChecks = r.libredditTorRedirectsChecks; @@ -102,8 +104,8 @@ function initLibredditCookies(test, from) { if (!test) { let checkedInstances; - if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; + if (protocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; + else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; await utils.copyCookie('libreddit', from, checkedInstances, "theme"); await utils.copyCookie('libreddit', from, checkedInstances, "front_page"); await utils.copyCookie('libreddit', from, checkedInstances, "layout"); @@ -124,10 +126,10 @@ function initLibredditCookies(test, from) { function pasteLibredditCookies() { return new Promise(async resolve => { await init(); - if (disableReddit || redditFrontend != 'libreddit' || redditProtocol === undefined) { resolve(); return; } + if (disableReddit || redditFrontend != 'libreddit' || protocol === undefined) { resolve(); return; } let checkedInstances; - if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] - else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if (protocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] utils.getCookiesFromStorage('libreddit', checkedInstances, "theme"); utils.getCookiesFromStorage('libreddit', checkedInstances, "front_page"); utils.getCookiesFromStorage('libreddit', checkedInstances, "layout"); @@ -157,8 +159,8 @@ function initTedditCookies(test, from) { if (!test) { let checkedInstances; - if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] - else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if (protocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] await utils.copyCookie('teddit', from, checkedInstances, 'collapse_child_comments') await utils.copyCookie('teddit', from, checkedInstances, 'domain_instagram') await utils.copyCookie('teddit', from, checkedInstances, 'domain_twitter') @@ -179,10 +181,10 @@ function initTedditCookies(test, from) { function pasteTedditCookies() { return new Promise(async resolve => { await init(); - if (disableReddit || redditFrontend != 'teddit' || redditProtocol === undefined) { resolve(); return; } + if (disableReddit || redditFrontend != 'teddit' || protocol === undefined) { resolve(); return; } let checkedInstances; - if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] - else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if (protocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] utils.getCookiesFromStorage('teddit', checkedInstances, 'collapse_child_comments') utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_instagram') utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_twitter') @@ -230,15 +232,17 @@ function redirect(url, type, initiator, disableOverride) { const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; if (url.pathname.match(bypassPaths)) return; - let libredditInstancesList; - let tedditInstancesList; - if (redditProtocol == 'normal') { - libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } else if (redditProtocol == 'tor') { - libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - } + let libredditInstancesList = []; + let tedditInstancesList = []; + + if (protocol == 'tor') { + libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; + tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; + } + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; + tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; + } if (url.host === "i.redd.it") { if (redditFrontend == 'teddit') { @@ -293,18 +297,22 @@ function switchInstance(url, disableOverride) { if (disableReddit && !disableOverride) { resolve(); return; } const protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; + let instancesList = []; if (redditFrontend == 'libreddit') { - if (redditProtocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - else if (redditProtocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; + if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; + } if ([ ...redditRedirects.teddit.normal, ...redditRedirects.teddit.tor ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/"); } else if (redditFrontend == 'teddit') { - if (redditProtocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - else if (redditProtocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; + if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; + } if ([ ...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor @@ -325,8 +333,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.teddit = dataJson.teddit; - redirects.libreddit = dataJson.libreddit; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; tedditNormalRedirectsChecks = [...redirects.teddit.normal] @@ -341,7 +350,6 @@ function initDefaults() { } browser.storage.local.set({ disableReddit: false, - redditProtocol: 'normal', redditFrontend: 'libreddit', redditRedirects: redirects, diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js index 5f215518..ee4f227c 100644 --- a/src/assets/javascripts/reuters.js +++ b/src/assets/javascripts/reuters.js @@ -6,18 +6,22 @@ const targets = [ /^https?:\/{2}(www\.|)reuters\.com.*/ ]; -let redirects = { - "neuters": { - "normal": [ - 'https://neuters.de', - ], - "tor": [] +let redirects = {} + +const frontends = new Array("neuters") +const protocols = new Array("normal", "tor", "i2p", "loki") + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } let disableReuters, - reutersProtocol, + protocol, + protocolFallback, reutersRedirects, neutersNormalRedirectsChecks, neutersNormalCustomRedirects, @@ -29,7 +33,8 @@ function init() { browser.storage.local.get( [ "disableReuters", - "reutersProtocol", + "protocol", + "protocolFallback", "reutersRedirects", "neutersNormalRedirectsChecks", "neutersNormalCustomRedirects", @@ -38,7 +43,8 @@ function init() { ], r => { disableReuters = r.disableReuters; - reutersProtocol = r.reutersProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; reutersRedirects = r.reutersRedirects; neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks; neutersNormalCustomRedirects = r.neutersNormalCustomRedirects; @@ -63,9 +69,11 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (reutersProtocol == 'normal') instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]; - if (reutersProtocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); @@ -87,7 +95,6 @@ function initDefaults() { return new Promise(resolve => { browser.storage.local.set({ disableReuters: true, - reutersProtocol: "normal", reutersRedirects: redirects, diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js index c19f4d4a..6653d2bd 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -7,7 +7,7 @@ const targets = [ ]; // 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") +const protocols = new Array("normal", "tor", "i2p", "loki") const redirects = {} /* @@ -82,7 +82,8 @@ let disableSearch, searchFrontend, searchRedirects, - searchProtocol, + protocol, + protocolFallback, whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects, whoogleTorRedirectsChecks, @@ -115,7 +116,8 @@ function init() { "disableSearch", "searchFrontend", "searchRedirects", - "searchProtocol", + "protocol", + "protocolFallback", "whoogleNormalRedirectsChecks", "whoogleNormalCustomRedirects", "whoogleTorRedirectsChecks", @@ -145,7 +147,8 @@ function init() { disableSearch = r.disableSearch; searchFrontend = r.searchFrontend; searchRedirects = r.searchRedirects; - searchProtocol = r.searchProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks; whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects; whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks; @@ -193,10 +196,12 @@ function initSearxCookies(test, from) { ].includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; + 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'); @@ -223,10 +228,12 @@ function pasteSearxCookies() { return new Promise(async resolve => { await init(); if (disableSearch || searchFrontend != 'searx') { resolve(); return; } - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; + 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'); @@ -262,10 +269,12 @@ function initSearxngCookies(test, from) { ].includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; + 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'); @@ -293,11 +302,13 @@ function initSearxngCookies(test, from) { function pasteSearxngCookies() { return new Promise(async resolve => { await init(); - if (disableSearch || searchFrontend != 'searxng', searchProtocol === undefined) { resolve(); return; } - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; + if (disableSearch || searchFrontend != 'searxng', protocol === undefined) { resolve(); return; } + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; + 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'); @@ -335,10 +346,12 @@ function initLibrexCookies(test, from) { ].includes(protocolHost)) { resolve(); return; } if(!test) { - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; + 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'); @@ -355,11 +368,13 @@ function initLibrexCookies(test, from) { function pasteLibrexCookies() { return new Promise(async resolve => { await init(); - if (disableSearch || searchFrontend != 'librex', searchProtocol === undefined) { resolve(); return; } - let checkedInstances; - if (searchProtocol == 'normal') checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - else if (searchProtocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - else if (searchProtocol == 'i2p') checkedInstances = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; } + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; + 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'); @@ -380,37 +395,50 @@ function redirect(url, disableOverride) { let randomInstance; let path; if (searchFrontend == 'searx') { - let instancesList; - if (searchProtocol == 'normal') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - else if (searchProtocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - else if (searchProtocol == 'i2p') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; + 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 (searchProtocol == 'normal') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - else if (searchProtocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - else if (searchProtocol == 'i2p') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; + 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 (searchProtocol == 'normal') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; - if (searchProtocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; - if (searchProtocol == 'i2p') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks]; + 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 (searchProtocol == 'normal') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - if (searchProtocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - if (searchProtocol == 'i2p') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; + 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"; } @@ -474,25 +502,25 @@ function switchInstance(url, disableOverride) { ].includes(protocolHost)) { resolve(); return; } let instancesList; - if (searchProtocol == '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]; - } - else if (searchProtocol == 'tor') { + + 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 (searchProtocol == 'i2p') { + 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; } @@ -540,7 +568,6 @@ function initDefaults() { searchFrontend: 'searxng', searchRedirects: redirects, searxngCustomSettings: false, - searchProtocol: 'normal', whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects: [], diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js index f507e552..cc5b348c 100644 --- a/src/assets/javascripts/sendTargets.js +++ b/src/assets/javascripts/sendTargets.js @@ -8,12 +8,18 @@ const targets = [ /^https?:\/{2}sendfiles\.online\/$/ ]; -let redirects = { - "send": { - "normal": [], - "tor": [] +const frontends = new Array("send") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.send = val; @@ -36,7 +42,8 @@ let sendNormalCustomRedirects, sendTorRedirectsChecks, sendTorCustomRedirects, - sendTargetsProtocol; + protocol, + protocolFallback; function init() { return new Promise(resolve => { @@ -44,7 +51,8 @@ function init() { [ "disableSendTarget", "sendTargetsRedirects", - "sendTargetsProtocol", + "protocol", + "protocolFallback", "sendNormalRedirectsChecks", "sendNormalCustomRedirects", "sendTorRedirectsChecks", @@ -57,7 +65,8 @@ function init() { sendNormalCustomRedirects = r.sendNormalCustomRedirects; sendTorRedirectsChecks = r.sendTorRedirectsChecks; sendTorCustomRedirects = r.sendTorCustomRedirects; - sendTargetsProtocol = r.sendTargetsProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; resolve(); } ) @@ -85,9 +94,11 @@ function switchInstance(url, disableOverride) { if (!all().includes(protocolHost)) { resolve(); return; } if (url.pathname != '/') { resolve(); return; } - let instancesList; - if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; - else if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -104,9 +115,11 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; - if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); @@ -117,7 +130,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.send = dataJson.send; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { sendNormalRedirectsChecks = [...redirects.send.normal]; for (const instance of r.cloudflareBlackList) { @@ -132,9 +147,7 @@ function initDefaults() { sendNormalCustomRedirects: [], sendTorRedirectsChecks: [...redirects.send.tor], - sendTorCustomRedirects: [], - - sendTargetsProtocol: "normal", + sendTorCustomRedirects: [] }, () => resolve()) }) }) diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js index 75e710d0..0bf6d592 100644 --- a/src/assets/javascripts/tiktok.js +++ b/src/assets/javascripts/tiktok.js @@ -6,12 +6,18 @@ const targets = [ /^https?:\/{2}(www\.|)tiktok\.com.*/ ]; -let redirects = { - "proxiTok": { - "normal": [], - "tor": [] +const frontends = new Array("proxiTok") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.proxiTok = val; @@ -39,9 +45,11 @@ function initProxiTokCookies(test, from) { ].includes(protocolHost)) resolve(); if (!test) { - let checkedInstances; - if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] - else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + let instancesList = []; + if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; + } await utils.copyCookie('proxitok', from, checkedInstances, 'theme'); await utils.copyCookie('proxitok', from, checkedInstances, 'api-legacy'); } @@ -52,10 +60,12 @@ function initProxiTokCookies(test, from) { function pasteProxiTokCookies() { return new Promise(async resolve => { await init(); - if (disableTiktok || tiktokProtocol === undefined) { resolve(); return; } - let checkedInstances; - if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] - else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if (disableTiktok || protocol === undefined) { resolve(); return; } + let instancesList = []; + if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; + } utils.getCookiesFromStorage('proxitok', checkedInstances, 'theme'); utils.getCookiesFromStorage('proxitok', checkedInstances, 'api-legacy'); resolve(); @@ -64,7 +74,8 @@ function pasteProxiTokCookies() { let disableTiktok, - tiktokProtocol, + protocol, + protocolFallback, tiktokRedirects, proxiTokNormalRedirectsChecks, proxiTokNormalCustomRedirects, @@ -76,7 +87,8 @@ function init() { browser.storage.local.get( [ "disableTiktok", - "tiktokProtocol", + "protocol", + "protocolFallback", "tiktokRedirects", "proxiTokNormalRedirectsChecks", "proxiTokNormalCustomRedirects", @@ -85,7 +97,8 @@ function init() { ], r => { disableTiktok = r.disableTiktok; - tiktokProtocol = r.tiktokProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; tiktokRedirects = r.tiktokRedirects; proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks; proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects; @@ -112,9 +125,11 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); @@ -151,9 +166,11 @@ function switchInstance(url, disableOverride) { ]; if (!all.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalCustomRedirects, ...proxiTokNormalRedirectsChecks]; - else if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorCustomRedirects, ...proxiTokTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -168,10 +185,11 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.proxiTok = dataJson.proxiTok; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.set({ disableTiktok: false, - tiktokProtocol: "normal", tiktokRedirects: redirects, diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js index bbf08d52..ae64f127 100644 --- a/src/assets/javascripts/translate/translate.js +++ b/src/assets/javascripts/translate/translate.js @@ -6,30 +6,30 @@ const targets = [ /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//, ]; -let redirects = { - "simplyTranslate": { - "normal": [], - "tor": [], - "i2p": [], - "loki": [] - }, - "lingva": { - "normal": [], - "tor": [] - } -}; +const frontends = new Array("simplyTranslate", "lingva") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {}; + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} let translateDisable, translateFrontend, - translateProtocol, + protocol, + protocolFallback, translateRedirects, simplyTranslateNormalRedirectsChecks, simplyTranslateNormalCustomRedirects, simplyTranslateTorRedirectsChecks, simplyTranslateTorCustomRedirects, - simplyTranslateI2PRedirectsChecks, - simplyTranslateI2PCustomRedirects, + simplyTranslateI2pRedirectsChecks, + simplyTranslateI2pCustomRedirects, simplyTranslateLokiRedirectsChecks, simplyTranslateLokiCustomReidrects, lingvaNormalRedirectsChecks, @@ -43,15 +43,15 @@ function init() { [ "translateDisable", "translateFrontend", - "translateProtocol", + "protocol", + "protocolFallback", "translateRedirects", - "simplyTranslateNormalRedirectsChecks", "simplyTranslateNormalCustomRedirects", "simplyTranslateTorRedirectsChecks", "simplyTranslateTorCustomRedirects", - "simplyTranslateI2PRedirectsChecks", - "simplyTranslateI2PCustomRedirects", + "simplyTranslateI2pRedirectsChecks", + "simplyTranslateI2pCustomRedirects", "simplyTranslateLokiRedirectsChecks", "simplyTranslateLokiCustomReidrects", @@ -63,14 +63,15 @@ function init() { r => { translateDisable = r.translateDisable; translateFrontend = r.translateFrontend; - translateProtocol = r.translateProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback translateRedirects = r.translateRedirects; simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks; simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects; simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks; simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects; - simplyTranslateI2PRedirectsChecks = r.simplyTranslateI2PRedirectsChecks; - simplyTranslateI2PCustomRedirects = r.simplyTranslateI2PCustomRedirects; + simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks; + simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects; simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks; simplyTranslateLokiCustomReidrects = r.simplyTranslateLokiCustomReidrects; lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks; @@ -98,7 +99,7 @@ function setRedirects(val) { translateRedirects: redirects, simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, - simplyTranslateI2PRedirectsChecks: redirects.simplyTranslate.i2p, + simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, lingvaNormalRedirectsChecks, lingvaTorRedirectsChecks: redirects.lingva.tor, @@ -124,9 +125,11 @@ function copyPasteLingvaLocalStorage(test, url, tabId) { { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" } ); - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + } const i = checkedInstances.indexOf(protocolHost); if (i !== -1) checkedInstances.splice(i, 1); if (checkedInstances.length === 0) { resolve(); return; } @@ -145,9 +148,11 @@ function pasteLingvaLocalStorage() { return new Promise(async resolve => { await init(); if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + } for (const to of checkedInstances) browser.tabs.create({ url: to }, tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" })) @@ -164,17 +169,19 @@ function copyPasteSimplyTranslateCookies(test, from) { ...simplyTranslateNormalCustomRedirects, ...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2PRedirectsChecks, - ...simplyTranslateI2PCustomRedirects, + ...simplyTranslateI2pRedirectsChecks, + ...simplyTranslateI2pCustomRedirects, ...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects, ].includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] - else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] - else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects] - else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + let checkedInstances = []; + if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; + else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + } await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang'); await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang'); await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled'); @@ -189,11 +196,13 @@ function pasteSimplyTranslateCookies() { return new Promise(async resolve => { await init(); if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; } - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] - else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] - else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects] - else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + let checkedInstances = []; + if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; + else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + } utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang'); utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang'); utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled'); @@ -208,11 +217,13 @@ function redirect(url, disableOverride) { if (!targets.some(rx => rx.test(url.href))) return; if (translateFrontend == 'simplyTranslate') { - let instancesList; - if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if (translateProtocol == 'i2p') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]; - if (translateProtocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + let instancesList = []; + if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + else if (protocol == 'i2p') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; + else if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList) @@ -226,9 +237,11 @@ function redirect(url, disableOverride) { let pair = params_arr[i].split('='); params[pair[0]] = pair[1]; } - let instancesList; - if (translateProtocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList) @@ -252,7 +265,7 @@ function switchInstance(url, disableOverride) { ...simplyTranslateNormalCustomRedirects, ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2PCustomRedirects, + ...simplyTranslateI2pCustomRedirects, ...simplyTranslateLokiCustomReidrects, ...translateRedirects.lingva.normal, @@ -263,21 +276,22 @@ function switchInstance(url, disableOverride) { ].includes(protocolHost)) { resolve(); return; } let instancesList; - if (translateProtocol == 'normal') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + + if (protocol == 'loki') { + if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + //else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects]; + } + else if (protocol == 'i2p') { + if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; + //else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects]; } - else if (translateProtocol == 'tor') { + else if (protocol == 'tor') { if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; } - else if (translateProtocol == 'i2p') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]; - //else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects]; - } - else if (translateProtocol == 'loki') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; - //else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; + else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; } const i = instancesList.indexOf(protocolHost); @@ -293,8 +307,9 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); - redirects.simplyTranslate = dataJson.simplyTranslate; - redirects.lingva = dataJson.lingva; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { lingvaNormalRedirectsChecks = [...redirects.lingva.normal] @@ -305,15 +320,14 @@ function initDefaults() { browser.storage.local.set({ translateDisable: false, translateFrontend: "simplyTranslate", - translateProtocol: 'normal', translateRedirects: redirects, simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], simplyTranslateNormalCustomRedirects: [], simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], simplyTranslateTorCustomRedirects: [], - simplyTranslateI2PRedirectsChecks: [...redirects.simplyTranslate.i2p], - simplyTranslateI2PCustomRedirects: [], + simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], + simplyTranslateI2pCustomRedirects: [], simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], simplyTranslateLokiCustomReidrects: [], diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js index bd674aba..e69d9abc 100644 --- a/src/assets/javascripts/twitter.js +++ b/src/assets/javascripts/twitter.js @@ -9,12 +9,17 @@ const targets = [ /^https?:\/{2}t\.co/ ]; -let redirects = { - "nitter": { - "normal": [], - "tor": [] - }, -}; +const frontends = new Array("nitter") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} function setRedirects(val) { browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], r => { @@ -34,7 +39,8 @@ function setRedirects(val) { let disableTwitter, - twitterProtocol, + protocol, + protocolFallback, twitterRedirects, twitterRedirectType, nitterNormalRedirectsChecks, @@ -47,7 +53,8 @@ function init() { browser.storage.local.get( [ "disableTwitter", - "twitterProtocol", + "protocol", + "protocolFallback", "twitterRedirects", "twitterRedirectType", "nitterNormalRedirectsChecks", @@ -57,7 +64,8 @@ function init() { ], r => { disableTwitter = r.disableTwitter; - twitterProtocol = r.twitterProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; twitterRedirects = r.twitterRedirects; twitterRedirectType = r.twitterRedirectType; nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks; @@ -90,9 +98,11 @@ function redirect(url, type, initiator, disableOverride) { if (twitterRedirectType == 'sub_frame' && type == "main_frame") return; if (twitterRedirectType == 'main_frame' && type != "main_frame") return; - let instancesList; - if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); @@ -125,9 +135,11 @@ function switchInstance(url, disableOverride) { if (disableTwitter && !disableOverride) { resolve(); return; } const protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; + } let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); @@ -164,9 +176,11 @@ function initNitterCookies(test, from) { if (!all().includes(protocolHost) ) { resolve(); return; } if (!test) { - let checkedInstances; - if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] - else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; + } await utils.copyCookie('nitter', from, checkedInstances, 'theme'); await utils.copyCookie('nitter', from, checkedInstances, 'infiniteScroll'); await utils.copyCookie('nitter', from, checkedInstances, 'stickyProfile'); @@ -194,10 +208,12 @@ function initNitterCookies(test, from) { function pasteNitterCookies() { return new Promise(async resolve => { await init(); - if (disableTwitter || twitterProtocol === undefined) { resolve(); return; } - let checkedInstances; - if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] - else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + if (disableTwitter || protocol === undefined) { resolve(); return; } + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; + } utils.getCookiesFromStorage('nitter', checkedInstances, 'theme'); utils.getCookiesFromStorage('nitter', checkedInstances, 'infiniteScroll'); utils.getCookiesFromStorage('nitter', checkedInstances, 'stickyProfile'); @@ -226,7 +242,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); - redirects.nitter = dataJson.nitter; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], async r => { nitterNormalRedirectsChecks = [...redirects.nitter.normal]; for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) { @@ -236,7 +254,6 @@ function initDefaults() { browser.storage.local.set({ disableTwitter: false, twitterRedirects: redirects, - twitterProtocol: "normal", twitterRedirectType: "both", nitterNormalRedirectsChecks: nitterNormalRedirectsChecks, diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index a5300364..f9d48275 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -53,6 +53,7 @@ function updateInstances() { libremdbHelper.setRedirects(instances.libremdb); sendTargetsHelper.setRedirects(instances.send); tiktokHelper.setRedirects(instances.proxiTok); + lbryHelper.setRedirects(instances.librarian); console.info("Successfully updated Instances"); resolve(true); return; @@ -119,13 +120,13 @@ async function processDefaultCustomInstances(target, name, protocol, document) { for (const element of nameCheckListElement.getElementsByTagName('input')) element.checked = nameDefaultRedirects.includes(element.className) if (nameDefaultRedirects.length == 0) isTrue = false; - nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue; + nameProtocolElement.getElementsByClassName('toggle-all')[0].checked = isTrue; } nameCheckListElement.innerHTML = [ `
Toggle All - +
`, ...redirects[name][protocol].map( x => { @@ -153,7 +154,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) { localise.localisePage(); calcNameCheckBoxes(); - nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", async event => { + nameProtocolElement.getElementsByClassName('toggle-all')[0].addEventListener("change", async event => { if (event.target.checked) nameDefaultRedirects = [...redirects[name][protocol]]; else @@ -164,7 +165,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) { }); for (let element of nameCheckListElement.getElementsByTagName('input')) { - if (element.className != 'toogle-all') + if (element.className != 'toggle-all') nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => { if (event.target.checked) nameDefaultRedirects.push(element.className) diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js index 629219b8..d945e221 100644 --- a/src/assets/javascripts/wikipedia.js +++ b/src/assets/javascripts/wikipedia.js @@ -4,13 +4,18 @@ import utils from './utils.js' const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/ -let redirects = { - "wikiless": { - "normal": [], - "tor": [], - "i2p": [] - } -}; +const frontends = new Array("wikiless") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {}; + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.wikiless = val; @@ -29,7 +34,8 @@ function setRedirects(val) { let disableWikipedia, wikipediaRedirects, - wikipediaProtocol, + protocol, + protocolFallback, wikilessNormalRedirectsChecks, wikilessTorRedirectsChecks, wikilessI2pRedirectsChecks, @@ -43,8 +49,8 @@ function init() { [ "disableWikipedia", "wikipediaRedirects", - "wikipediaProtocol", - + "protocol", + "protocolFallback", "wikilessNormalRedirectsChecks", "wikilessTorRedirectsChecks", "wikilessI2pRedirectsChecks", @@ -55,7 +61,8 @@ function init() { r => { disableWikipedia = r.disableWikipedia; wikipediaRedirects = r.wikipediaRedirects; - wikipediaProtocol = r.wikipediaProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks; wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks; wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks; @@ -86,10 +93,12 @@ function initWikilessCookies(test, from) { if (!all.includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects] - else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects] - else if (wikipediaProtocol == 'i2p') checkedInstances = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects] + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; + if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + } await utils.copyCookie('wikiless', from, checkedInstances, 'theme'); await utils.copyCookie('wikiless', from, checkedInstances, 'default_lang'); } @@ -100,10 +109,13 @@ function initWikilessCookies(test, from) { function pasteWikilessCookies() { return new Promise(async resolve => { await init(); - if (disableWikipedia || wikipediaProtocol === undefined) { resolve(); return; } - let checkedInstances; - if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects] - else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects] + if (disableWikipedia || protocol === undefined) { resolve(); return; } + let checkedInstances = []; + if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; + else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; + if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + } utils.getCookiesFromStorage('wikiless', checkedInstances, 'theme'); utils.getCookiesFromStorage('wikiless', checkedInstances, 'default_lang'); resolve(); @@ -123,10 +135,12 @@ function redirect(url, disableOverride) { GETArguments.push([args[0], args[1]]); } } - let instancesList; - if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; - else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; - else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects]; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; + else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList) @@ -162,10 +176,12 @@ function switchInstance(url, disableOverride) { ]; if (!wikipediaList.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalCustomRedirects, ...wikilessNormalRedirectsChecks]; - else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorCustomRedirects, ...wikilessTorRedirectsChecks]; - else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; + let instancesList = []; + if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; + else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + } let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); @@ -180,7 +196,9 @@ function initDefaults() { return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.wikiless = dataJson.wikiless; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]; for (const instance of r.cloudflareBlackList) { @@ -190,7 +208,6 @@ function initDefaults() { browser.storage.local.set({ disableWikipedia: true, wikipediaRedirects: redirects, - wikipediaProtocol: "normal", wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks, wikilessTorRedirectsChecks: [...redirects.wikiless.tor], wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p], diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js index 965b94bf..feb2fc12 100644 --- a/src/assets/javascripts/youtube/youtube.js +++ b/src/assets/javascripts/youtube/youtube.js @@ -16,23 +16,19 @@ const targets = [ /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/, ]; -let redirects = { - "invidious": { - "normal": [], - "tor": [] - }, - "piped": { - "normal": [], - "tor": [] - }, - "pipedMaterial": { - "normal": [ - "https://piped-material.xn--17b.net", - "https://piped-material.ftp.sh", - ], - "tor": [] - } -}; + +const frontends = new Array("invidious", "piped", "pipedMaterial") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {}; + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } +} + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.invidious = val.invidious; @@ -60,7 +56,8 @@ let disableYoutube, onlyEmbeddedVideo, youtubeFrontend, - youtubeProtocol, + protocol, + protocolFallback, youtubeEmbedFrontend, youtubeRedirects, invidiousNormalRedirectsChecks, @@ -83,7 +80,8 @@ function init() { "disableYoutube", "onlyEmbeddedVideo", "youtubeFrontend", - "youtubeProtocol", + "protocol", + "protocolFallback", "youtubeEmbedFrontend", "youtubeRedirects", "invidiousNormalRedirectsChecks", @@ -103,7 +101,8 @@ function init() { disableYoutube = r.disableYoutube; onlyEmbeddedVideo = r.onlyEmbeddedVideo; youtubeFrontend = r.youtubeFrontend; - youtubeProtocol = r.youtubeProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; youtubeEmbedFrontend = r.youtubeEmbedFrontend; youtubeRedirects = r.youtubeRedirects; invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks; @@ -178,25 +177,31 @@ function redirect(url, type, initiator, disableOverride) { if (isFreetube && main_frame) return `freetube://https://youtube.com${url.pathname}${url.search}`; if (isInvidious || ((isFreetube || isYatte) && sub_frame && isFrontendInvidious)) { - let instancesList; - if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]; + let instancesList = [] = []; + if (protocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}${url.search}`; } if (isPiped || ((isFreetube || isYatte) && sub_frame && isFrontendPiped)) { - let instancesList; - if (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; + } if (instancesList.length === 0) return; const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}${url.search}`; } if (isPipedMaterial || ((isFreetube || isYatte) && sub_frame && isFrontendPipedMaterial)) { - let instancesList; - if (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; + } const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}${url.search}`; } @@ -219,17 +224,18 @@ function switchInstance(url, disableOverride) { const protocolHost = utils.protocolHost(url); if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList; - if (youtubeProtocol == 'normal') { - if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; - else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; - else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; - } - else if (youtubeProtocol == 'tor') { + let instancesList = [] = []; + + if (protocol == 'tor') { if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]; else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]; else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; } + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; + else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; + else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -244,8 +250,9 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.invidious = dataJson.invidious; - redirects.piped = dataJson.piped; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { invidiousNormalRedirectsChecks = [...redirects.invidious.normal]; @@ -290,8 +297,7 @@ function initDefaults() { pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor], pipedMaterialTorCustomRedirects: [], - youtubeEmbedFrontend: 'invidious', - youtubeProtocol: 'normal', + youtubeEmbedFrontend: 'invidious' }, () => resolve()) }) }) @@ -310,9 +316,12 @@ function copyPasteInvidiousCookies(test, from) { ...invidiousTorCustomRedirects, ].includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects] - else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects] + let checkedInstances = []; + + if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects] + } const i = checkedInstances.indexOf(protocolHost); if (i !== -1) checkedInstances.splice(i, 1); await utils.copyCookie('invidious', from, checkedInstances, 'PREFS'); @@ -325,9 +334,11 @@ function pasteInvidiousCookies() { return new Promise(async resolve => { await init(); if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; } - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects] - else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects] + } utils.getCookiesFromStorage('invidious', checkedInstances, 'PREFS'); resolve(); }) @@ -348,9 +359,11 @@ function copyPastePipedLocalStorage(test, url, tabId) { if (!test) { browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_piped_preferences.js", runAt: "document_start" }); - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks] - else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks] + } const i = checkedInstances.indexOf(protocolHost); if (i !== -1) checkedInstances.splice(i, 1); for (const to of checkedInstances) { @@ -365,9 +378,11 @@ function pastePipedLocalStorage() { return new Promise(async resolve => { await init(); if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; } - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks] - else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks] + } for (const to of checkedInstances) { browser.tabs.create({ url: to }, tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_piped_preferences.js", runAt: "document_start" })) @@ -391,9 +406,11 @@ function copyPastePipedMaterialLocalStorage(test, url, tabId,) { if (!test) { browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" }); - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects] - else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects] + } const i = checkedInstances.indexOf(protocolHost); if (i !== -1) checkedInstances.splice(i, 1); for (const to of checkedInstances) @@ -410,9 +427,11 @@ function pastePipedMaterialLocalStorage() { return new Promise(async resolve => { await init(); if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; } - let checkedInstances; - if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects] - else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects] + let checkedInstances = []; + if (protocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects] + } for (const to of checkedInstances) { browser.tabs.create({ url: to }, tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })) @@ -427,18 +446,16 @@ function removeXFrameOptions(e) { if (e.type == 'main_frame') { for (const i in e.responseHeaders) { if (e.responseHeaders[i].name == 'content-security-policy') { - let instancesList; - if (youtubeFrontend == 'invidious') { - if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]; - } - else if (youtubeFrontend == 'piped') { - if (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]; + let instancesList = []; + if (protocol == 'tor') { + if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]; + if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]; + if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; } - else if (youtubeFrontend == 'pipedMaterial') { - if (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; - else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; + if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]; + if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; } let securityPolicyList = e.responseHeaders[i].value.split(';'); for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim(); diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index e211a596..b7ff2432 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -103,6 +103,20 @@ def piped(): print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Piped') +def pipedMaterial(): + r = requests.get( + 'https://raw.githubusercontent.com/mmjee/Piped-Material/master/README.md') + + tmp = re.findall( + r"\| (https?:\/{2}(?:.+\.)+[a-zA-Z0-9]*) +\|", r.text) + pipedMaterialList = {} + pipedMaterialList['normal'] = [] + for item in tmp: + pipedMaterialList['normal'].append(item) + mightyList['pipedMaterial'] = pipedMaterialList + print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'pipedMaterial') + + def proxitok(): r = requests.get( 'https://raw.githubusercontent.com/wiki/pablouser1/ProxiTok/Public-instances.md') @@ -181,9 +195,8 @@ def libreddit(): tmp = re.findall( r"\| \[.*\]\(([-a-zA-Z0-9@:%_\+.~#?&//=]{2,}\.[a-z]{2,}\b(?:\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)\)*\|*[A-Z]{0,}.*\|.*\|", r.text) - for item in tmp: - if item.endswith('.onion'): + if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item): libredditList['tor'].append(item) else: libredditList['normal'].append(item) @@ -220,11 +233,14 @@ def wikiless(): wikilessList['i2p'] = [] for item in rJson: if 'url' in item: - wikilessList['normal'].append(item['url']) + if item['url'].strip() != "": + wikilessList['normal'].append(item['url']) if 'onion' in item: - wikilessList['tor'].append(item['onion']) + if item['onion'].strip() != "": + wikilessList['tor'].append(item['onion']) if 'i2p' in item: - wikilessList['i2p'].append(item['i2p']) + if item['i2p'].strip() != "": + wikilessList['i2p'].append(item['i2p']) mightyList['wikiless'] = wikilessList print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Wikiless') @@ -254,7 +270,7 @@ def quetre(): for item in tmp: - if item.endswith('.onion'): + if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item): _list['tor'].append(item) else: _list['normal'].append(item) @@ -276,7 +292,7 @@ def libremdb(): for item in tmp: if item.strip() == "": continue - if item.endswith('.onion'): + if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item): _list['tor'].append(item) else: _list['normal'].append(item) @@ -337,12 +353,12 @@ def searx_searxng(): searxngList['i2p'] = [] searxngList['normal'] = [] for item in rJson['instances']: - if item[:-1].endswith('.onion'): + if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item[:-1]): if (rJson['instances'][item].get('generator') == 'searxng'): searxngList['tor'].append(item[:-1]) else: searxList['tor'].append(item[:-1]) - elif item[:-1].endswith('.i2p'): + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item[:-1]): if (rJson['instances'][item].get('generator') == 'searxng'): searxngList['i2p'].append(item[:-1]) else: @@ -367,9 +383,9 @@ def whoogle(): whoogleList['tor'] = [] whoogleList['i2p'] = [] for item in tmpList: - if item.endswith('.onion'): + if re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item): whoogleList['tor'].append(item) - elif item.endswith('.i2p'): + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item): whoogleList['i2p'].append(item) else: whoogleList['normal'].append(item) @@ -387,14 +403,13 @@ def librex(): tmp = re.findall( r"\| {1,2}\[(?:(?:[a-zA-Z0-9]+\.)+[a-zA-Z]{2,}|✅)\]\((https?:\/{2}(?:[a-zA-Z0-9]+\.)+[a-zA-Z0-9]{2,})", r.text) - tmp = filterLastSlash(tmp) for item in tmp: if item.strip() == "": continue - elif item.endswith('.onion'): + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", item): _list['tor'].append(item) - elif item.endswith('.i2p'): + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", item): _list['i2p'].append(item) else: _list['normal'].append(item) @@ -421,6 +436,29 @@ def rimgo(): print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Rimgo') +def librarian(): + r = requests.get( + 'https://codeberg.org/librarian/librarian/raw/branch/main/instances.json') + rJson = json.loads(r.text) + librarianList = {} + librarianList['normal'] = [] + librarianList['tor'] = [] + librarianList['i2p'] = [] + instances = rJson['instances'] + for item in instances: + url = item['url'] + if url.strip() == "": + continue + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+onion(?:\/[a-zA-Z0-9]+)*\/?", url): + librarianList['tor'].append(url) + elif re.search("https?:\/{2}(?:[a-zA-Z0-9]+\.)+i2p(?:\/[a-zA-Z0-9]+)*\/?", url): + librarianList['i2p'].append(url) + else: + librarianList['normal'].append(url) + mightyList['librarian'] = librarianList + print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Librarian') + + def peertube(): r = requests.get( 'https://instances.joinpeertube.org/api/v1/instances?start=0&count=1045&sort=-createdAt') @@ -444,6 +482,7 @@ def isValid(url): # This code is contributed by avanitrachhadiya2155 invidious() piped() +pipedMaterial() proxitok() send() nitter() @@ -460,6 +499,7 @@ searx_searxng() whoogle() librex() rimgo() +librarian() mightyList = filterLastSlash(mightyList) cloudflare = [] diff --git a/src/pages/background/background.js b/src/pages/background/background.js index fd7b5dcf..293a2c84 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -259,3 +259,5 @@ browser.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.function === 'unify') utils.unify(false).then(r => sendResponse({ response: r })) return true; }); + +browser.storage.local.set({"version": browser.runtime.getManifest().version}) diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 80c2a039..8eb3c21b 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -75,6 +75,21 @@ +
+

+ +
+
+
+

Fallback to normal if no frontends are available for the current protocol

+ +
+

@@ -274,33 +289,23 @@
-
+

Embedded Videos Frontend

-
-
-

Protocol

- -
-
-

Redirect Type

- -
+
+

Redirect Type

+

@@ -315,7 +320,7 @@
- +
- +
-
-
-
-
+

Default Instances

@@ -369,7 +371,7 @@
- +
-
- - -
-
+

Default Instances

@@ -399,7 +392,7 @@
- +
-
+

@@ -423,7 +416,7 @@
- +
@@ -453,42 +446,7 @@
- - -
-
-
-
-
- - -
-
-

YouTube Music

-
-
-
-

Enable

- -
-
-
-
-
-

Default Instances

-
-
-
-
-

Custom Instances

-
-
-
- +
-
- - -
-
- -
-
-
-

Twitter

-
-
-
-

Enable

- -
-
-

Protocol

- -
-
-

Redirect Type

- -
-
-
-
+

Default Instances

@@ -547,7 +467,7 @@
- +
-
- - -
-
+

Default Instances

@@ -577,7 +488,7 @@
- +
- -
-
-
-

Instagram

-
-
-
-

Enable

- -
-
-

Protocol

- -
-
+

@@ -619,7 +512,7 @@
- +
@@ -649,7 +542,7 @@
- +
-
- -
-
-
-

TikTok

-
-
-
-

Enable

- -
-
-

Protocol

- -
-
-
-
+

Default Instances

@@ -691,7 +563,7 @@
- +
-
- - -
-
+

Default Instances

@@ -721,7 +584,7 @@
- +
- +
-
+
-

Reddit

+

YouTube Music


Enable

- -
-
-

Frontend

- -
-
-

Protocol

- +
-
+

@@ -770,7 +619,7 @@
- +
@@ -800,7 +649,7 @@
- +
-
-
-
-
+

Default Instances

@@ -824,7 +670,7 @@
- +
-
- - -
-
+

Default Instances

@@ -854,7 +691,7 @@
- +
- +
-
+
-

Imgur

+

Twitter


Enable

- +
-

Protocol

- + + +
-
+

@@ -897,7 +734,7 @@
- +
@@ -927,7 +764,7 @@
- +
- +
-
- -
-
-
-

Wikipedia

-
-
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ + +
+
+

Instagram

+
+
+
+

Enable

+ +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ +
+
+
+

TikTok

+
+
+
+

Enable

+ +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ +
+
+
+

Reddit

+
+
+
+

Enable

+ +
+
+

Frontend

+ +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ +
+
+
+

Imgur

+
+

Enable

- + +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ +
+
+
+

Wikipedia

+
-

Protocol

- +

Enable

+

@@ -991,7 +1372,114 @@
- + + +
+
+
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+ + +
+
+

Medium

+
+
+
+

Enable

+ +
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
@@ -1021,7 +1509,7 @@
- +
- + + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
- +
-
+
-

Medium

+

Quora


Enable

- -
-
-

Protocol

- +
-
+

@@ -1084,7 +1586,7 @@
- +
@@ -1114,7 +1616,7 @@
- +
-
- -
-
-
-

Quora

-
-
-
-

Enable

- -
-
-

Protocol

- -
-
-
-
+

Default Instances

@@ -1156,7 +1637,7 @@
- +
-
- - -
-
+

Default Instances

@@ -1186,7 +1658,7 @@
- +
-
-

Protocol

- -

@@ -1258,7 +1723,49 @@
- + + +
+ +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
-
-

Protocol

- -

@@ -1330,7 +1830,49 @@
- + + +
+ +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
-
-

Protocol

- -

@@ -1402,7 +1937,49 @@
- + + +
+ +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
-
-

Protocol

- -

@@ -1444,7 +2014,58 @@
- + + +
+ +
+
+ + +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
-
- - -
-
+

Default Instances

@@ -1474,7 +2086,7 @@
- +
-
-

Protocol

- -

Note: To use Search, make LibRedirect the Default Search Engine

@@ -1590,6 +2194,27 @@
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+

@@ -1665,6 +2290,27 @@
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+

@@ -1740,6 +2386,27 @@
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+

@@ -1815,6 +2482,27 @@
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
@@ -1834,15 +2522,6 @@ -
-

Protocol

- -

@@ -1981,7 +2660,49 @@
- + + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+ +
+ + +
+ +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
@@ -2054,13 +2838,6 @@

Enable

-
-

Protocol

- -

@@ -2104,7 +2881,49 @@
- + + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+