From 2a0596f08fb54e2faef4bcb4548a28f5837fc067 Mon Sep 17 00:00:00 2001 From: BobIsMyManager Date: Tue, 26 Jul 2022 22:28:50 +0100 Subject: Many things Made all instances updateable Added hyperpipe Closes https://github.com/libredirect/libredirect/issues/398 Added cloudtube Closes https://github.com/libredirect/libredirect/issues/397 Start using prettier --- src/assets/javascripts/reuters.js | 254 ++++++++++++++++++-------------------- 1 file changed, 121 insertions(+), 133 deletions(-) (limited to 'src/assets/javascripts/reuters.js') diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js index e1d18a40..e4afa19c 100644 --- a/src/assets/javascripts/reuters.js +++ b/src/assets/javascripts/reuters.js @@ -1,152 +1,140 @@ -window.browser = window.browser || window.chrome; - -import utils from './utils.js' - -const targets = [ - /^https?:\/{2}(www\.|)reuters\.com.*/ -]; - -let redirects = { - "neuters": { - "normal": [ - "https://neuters.de" - ], - "tor": [], - "i2p": [], - "loki": [] - } -} +window.browser = window.browser || window.chrome + +import utils from "./utils.js" + +const targets = [/^https?:\/{2}(www\.|)reuters\.com.*/] -// const frontends = new Array("neuters") -// const protocols = new Array("normal", "tor", "i2p", "loki") +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 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.neuters = val; - neutersNormalRedirectsChecks = [...redirects.neuters.normal]; - for (const instance of r.cloudflareBlackList) { - const a = neutersNormalRedirectsChecks.indexOf(instance); - if (a > -1) neutersNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - neutersRedirects: redirects, - neutersNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.neuters = val + neutersNormalRedirectsChecks = [...redirects.neuters.normal] + for (const instance of r.cloudflareBlackList) { + const a = neutersNormalRedirectsChecks.indexOf(instance) + if (a > -1) neutersNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + neutersRedirects: redirects, + neutersNormalRedirectsChecks, + }) + }) } -let - disableReuters, - protocol, - protocolFallback, - reutersRedirects, - neutersNormalRedirectsChecks, - neutersNormalCustomRedirects, - neutersTorRedirectsChecks, - neutersTorCustomRedirects, - neutersI2pCustomRedirects, - neutersLokiCustomRedirects; +let disableReuters, + protocol, + protocolFallback, + reutersRedirects, + neutersNormalRedirectsChecks, + neutersNormalCustomRedirects, + neutersTorRedirectsChecks, + neutersTorCustomRedirects, + neutersI2pCustomRedirects, + neutersLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableReuters", - "protocol", - "protocolFallback", - "reutersRedirects", - "neutersNormalRedirectsChecks", - "neutersNormalCustomRedirects", - "neutersTorRedirectsChecks", - "neutersTorCustomRedirects", - "neutersI2pCustomRedirects", - "neutersLokiCustomRedirects" - ], - r => { - disableReuters = r.disableReuters; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - reutersRedirects = r.reutersRedirects; - neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks; - neutersNormalCustomRedirects = r.neutersNormalCustomRedirects; - neutersTorRedirectsChecks = r.neutersTorRedirectsChecks; - neutersTorCustomRedirects = r.neutersTorCustomRedirects; - neutersI2pCustomRedirects = r.neutersI2pCustomRedirects; - neutersLokiCustomRedirects = r.neutersLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableReuters", + "protocol", + "protocolFallback", + "reutersRedirects", + "neutersNormalRedirectsChecks", + "neutersNormalCustomRedirects", + "neutersTorRedirectsChecks", + "neutersTorCustomRedirects", + "neutersI2pCustomRedirects", + "neutersLokiCustomRedirects", + ], + r => { + disableReuters = r.disableReuters + protocol = r.protocol + protocolFallback = r.protocolFallback + reutersRedirects = r.reutersRedirects + neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks + neutersNormalCustomRedirects = r.neutersNormalCustomRedirects + neutersTorRedirectsChecks = r.neutersTorRedirectsChecks + neutersTorCustomRedirects = r.neutersTorCustomRedirects + neutersI2pCustomRedirects = r.neutersI2pCustomRedirects + neutersLokiCustomRedirects = r.neutersLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableReuters && !disableOverride) return; - if (type != "main_frame") return; - const all = [ - ...reutersRedirects.neuters.normal, - ...neutersNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; - - let instancesList = []; - if (protocol == 'loki') instancesList = [...neutersLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...neutersI2pCustomRedirects]; - else 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); - // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/ - if ( - url.pathname.startsWith('/article/') || - url.pathname.startsWith('/pf/') || - url.pathname.startsWith('/arc/') || - url.pathname.startsWith('/resizer/') - ) - return null; - else if (url.pathname.endsWith('/')) - return `${randomInstance}${url.pathname}`; - else - return `${randomInstance}${url.pathname}/`; + if (disableReuters && !disableOverride) return + if (type != "main_frame") return + const all = [...reutersRedirects.neuters.normal, ...neutersNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return + + let instancesList = [] + if (protocol == "loki") instancesList = [...neutersLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...neutersI2pCustomRedirects] + else 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) + // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/ + if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null + else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}` + else return `${randomInstance}${url.pathname}/` } function initDefaults() { - return new Promise(resolve => { - browser.storage.local.set({ - disableReuters: true, - - reutersRedirects: redirects, - - neutersNormalRedirectsChecks: [...redirects.neuters.normal], - neutersNormalCustomRedirects: [], - - neutersTorRedirectsChecks: [...redirects.neuters.tor], - neutersTorCustomRedirects: [], - - neutersI2pRedirectsChecks: [...redirects.neuters.i2p], - neutersI2pCustomRedirects: [], - - neutersLokiRedirectsChecks: [...redirects.neuters.loki], - neutersLokiCustomRedirects: [] - }, () => resolve()); - }); + 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( + { + disableReuters: true, + + reutersRedirects: redirects, + + neutersNormalRedirectsChecks: [...redirects.neuters.normal], + neutersNormalCustomRedirects: [], + + neutersTorRedirectsChecks: [...redirects.neuters.tor], + neutersTorCustomRedirects: [], + + neutersI2pRedirectsChecks: [...redirects.neuters.i2p], + neutersI2pCustomRedirects: [], + + neutersLokiRedirectsChecks: [...redirects.neuters.loki], + neutersLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, - redirect, - initDefaults -}; + setRedirects, + redirect, + initDefaults, +} -- cgit 1.4.1