diff options
Diffstat (limited to 'src/assets')
-rw-r--r-- | src/assets/javascripts/general.js | 2 | ||||
-rw-r--r-- | src/assets/javascripts/imdb.js | 49 | ||||
-rw-r--r-- | src/assets/javascripts/imgur.js | 51 | ||||
-rw-r--r-- | src/assets/javascripts/instagram.js | 53 | ||||
-rw-r--r-- | src/assets/javascripts/lbry.js | 95 | ||||
-rw-r--r-- | src/assets/javascripts/medium.js | 52 | ||||
-rw-r--r-- | src/assets/javascripts/peertube.js | 31 | ||||
-rw-r--r-- | src/assets/javascripts/quora.js | 46 | ||||
-rw-r--r-- | src/assets/javascripts/reddit.js | 88 | ||||
-rw-r--r-- | src/assets/javascripts/reuters.js | 33 | ||||
-rw-r--r-- | src/assets/javascripts/search.js | 258 | ||||
-rw-r--r-- | src/assets/javascripts/sendTargets.js | 47 | ||||
-rw-r--r-- | src/assets/javascripts/tiktok.js | 62 | ||||
-rw-r--r-- | src/assets/javascripts/translate/translate.js | 146 | ||||
-rw-r--r-- | src/assets/javascripts/twitter.js | 65 | ||||
-rw-r--r-- | src/assets/javascripts/utils.js | 12 | ||||
-rw-r--r-- | src/assets/javascripts/wikipedia.js | 75 | ||||
-rw-r--r-- | src/assets/javascripts/youtube/youtube.js | 155 |
18 files changed, 832 insertions, 488 deletions
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 = [ // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/, /^medium\.com/, @@ -28,12 +27,18 @@ const targets = [ /^ writingcooperative\.com /, ]; -let redirects = { - "scribe": { - "normal": [], - "tor": [] - } -}; +const frontends = new Array("scribe") +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.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 5a91ff89..6653d2bd 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -5,8 +5,12 @@ import utils from './utils.js' const targets = [ /^https?:\/{2}search\.libredirect\.invalid/, ]; +// Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript +const frontends = new Array("searx", "searxng", "whoogle", "librex") +const protocols = new Array("normal", "tor", "i2p", "loki") -let redirects = { +const redirects = {} + /* "searx": { "normal": [], "tor": [], @@ -22,7 +26,27 @@ let redirects = { "tor": [], "i2p": [] } -}; + */ +//}; + +//let tmp = "{" + +for (let i = 0; i < frontends.length; i++) { + //redirects.frontends[i] = {} + //redirects.push(frontends[i]) + //tmp = frontends[i] + //tmp = tmp + '\n"' + frontends[i] + '": {' + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + //redirects.frontends[i].protocols = [] + //tmp = tmp + '\n"' + protocols[x] + '": [],' + redirects[frontends[i]][protocols[x]] = [] + } + //tmp = tmp + "\n}," +} +//tmp = tmp + "\n}" + +//const redirects = JSON.parse(tmp) function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { @@ -30,6 +54,7 @@ function setRedirects(val) { searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; + librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { const a = searxNormalRedirectsChecks.indexOf(instance); if (a > -1) searxNormalRedirectsChecks.splice(a, 1); @@ -39,12 +64,16 @@ function setRedirects(val) { const c = whoogleNormalRedirectsChecks.indexOf(instance); if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); + + const d = librexNormalRedirectsChecks.indexOf(instance); + if (d > -1) librexNormalRedirectsChecks.splice(d, 1); } browser.storage.local.set({ searchRedirects: redirects, searxNormalRedirectsChecks, searxngNormalRedirectsChecks, whoogleNormalRedirectsChecks, + librexNormalRedirectsChecks, }); }) } @@ -53,7 +82,8 @@ let disableSearch, searchFrontend, searchRedirects, - searchProtocol, + protocol, + protocolFallback, whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects, whoogleTorRedirectsChecks, @@ -71,7 +101,13 @@ let searxngTorRedirectsChecks, searxngTorCustomRedirects, searxngI2pRedirectsChecks, - searxngI2pCustomRedirects; + searxngI2pCustomRedirects, + librexNormalRedirectsChecks, + librexNormalCustomRedirects, + librexTorRedirectsChecks, + librexTorCustomRedirects, + librexI2pRedirectsChecks, + librexI2pCustomRedirects; function init() { return new Promise(async resolve => { @@ -80,7 +116,8 @@ function init() { "disableSearch", "searchFrontend", "searchRedirects", - "searchProtocol", + "protocol", + "protocolFallback", "whoogleNormalRedirectsChecks", "whoogleNormalCustomRedirects", "whoogleTorRedirectsChecks", @@ -99,12 +136,19 @@ function init() { "searxngTorCustomRedirects", "searxngI2pRedirectsChecks", "searxngI2pCustomRedirects", + "librexNormalRedirectsChecks", + "librexNormalCustomRedirects", + "librexTorRedirectsChecks", + "librexTorCustomRedirects", + "librexI2pRedirectsChecks", + "librexI2pCustomRedirects" ], r => { 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; @@ -123,6 +167,12 @@ function init() { searxngTorCustomRedirects = r.searxngTorCustomRedirects; searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks; searxngI2pCustomRedirects = r.searxngI2pCustomRedirects; + librexNormalRedirectsChecks = r.librexNormalRedirectsChecks; + librexNormalCustomRedirects = r.librexNormalCustomRedirects; + librexTorRedirectsChecks = r.librexTorRedirectsChecks; + librexTorCustomRedirects = r.librexTorCustomRedirects; + librexI2pRedirectsChecks = r.librexI2pRedirectsChecks; + librexI2pCustomRedirects = r.librexI2pCustomRedirects; resolve(); } ) @@ -146,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'); @@ -176,9 +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] + 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'); @@ -214,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'); @@ -245,10 +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] + 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'); @@ -272,6 +332,60 @@ 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 (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'); + await utils.copyCookie('librex', from, checkedInstances, 'libreddit'); + await utils.copyCookie('librex', from, checkedInstances, 'nitter'); + await utils.copyCookie('librex', from, checkedInstances, 'proxitok'); + await utils.copyCookie('librex', from, checkedInstances, 'theme'); + await utils.copyCookie('librex', from, checkedInstances, 'wikiless'); + } + resolve(true); + }) +} + +function pasteLibrexCookies() { + return new Promise(async resolve => { + await init(); + if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; } + let checkedInstances = []; + if (protocol == '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'); + 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; @@ -281,32 +395,53 @@ 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 (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"; + } if ( ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) || @@ -345,6 +480,10 @@ function switchInstance(url, disableOverride) { ...searchRedirects.whoogle.tor, ...searchRedirects.whoogle.i2p, + ...searchRedirects.librex.normal, + ...searchRedirects.librex.tor, + ...searchRedirects.librex.i2p, + ...searxNormalCustomRedirects, ...searxTorCustomRedirects, ...searxI2pCustomRedirects, @@ -356,25 +495,32 @@ function switchInstance(url, disableOverride) { ...whoogleNormalCustomRedirects, ...whoogleTorCustomRedirects, ...whoogleI2pCustomRedirects, + + ...librexNormalCustomRedirects, + ...librexTorCustomRedirects, + ...librexI2pCustomRedirects, ].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 (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; } @@ -388,14 +534,20 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); + /* redirects.searx = dataJson.searx; redirects.searxng = dataJson.searxng; redirects.whoogle = dataJson.whoogle; + */ + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.get('cloudflareBlackList', async r => { whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; searxNormalRedirectsChecks = [...redirects.searx.normal]; searxngNormalRedirectsChecks = [...redirects.searxng.normal]; + librexNormalRedirectsChecks = [...redirects.librex.normal]; for (const instance of r.cloudflareBlackList) { let i; @@ -407,13 +559,15 @@ function initDefaults() { i = searxngNormalRedirectsChecks.indexOf(instance); if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); + + i = librexNormalRedirectsChecks.indexOf(instance); + if (i > -1) librexNormalRedirectsChecks.splice(i, 1) } browser.storage.local.set({ disableSearch: false, searchFrontend: 'searxng', searchRedirects: redirects, searxngCustomSettings: false, - searchProtocol: 'normal', whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects: [], @@ -424,6 +578,7 @@ function initDefaults() { whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], whoogleI2pCustomRedirects: [], + searxNormalRedirectsChecks: searxNormalRedirectsChecks, searxNormalCustomRedirects: [], @@ -433,6 +588,7 @@ function initDefaults() { searxI2pRedirectsChecks: [...redirects.searx.i2p], searxI2pCustomRedirects: [], + searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, searxngNormalCustomRedirects: [], @@ -441,6 +597,16 @@ function initDefaults() { searxngI2pRedirectsChecks: [...redirects.searxng.i2p], searxngI2pCustomRedirects: [], + + + librexNormalRedirectsChecks: librexNormalRedirectsChecks, + librexNormalCustomRedirects: [], + + librexTorRedirectsChecks: [...redirects.librex.tor], + librexTorCustomRedirects: [], + + librexI2pRedirectsChecks: [...redirects.librex.i2p], + librexI2pCustomRedirects: [] }, () => resolve()) }) }) @@ -453,6 +619,8 @@ export default { pasteSearxCookies, initSearxngCookies, pasteSearxngCookies, + initLibrexCookies, + pasteLibrexCookies, redirect, initDefaults, switchInstance, 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 c03ca31c..f9d48275 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -46,13 +46,14 @@ 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); 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 = [ `<div> <x data-localise="__MSG_toggleAll__">Toggle All</x> - <input type="checkbox" class="toogle-all"/> + <input type="checkbox" class="toggle-all"/> </div>`, ...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) @@ -384,6 +385,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/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(); |