diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-07-24 11:34:39 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-07-24 11:34:39 +0300 |
commit | ccfcccd53ed6a7a5cc56adc0d7f027e475f0665a (patch) | |
tree | be58876ebca99733cf54a297d22e2117a176f001 /src/assets/javascripts/medium.js | |
parent | Merge pull request 'No more trailing slashes' (#9) from BobIsMyManager/libred... (diff) | |
parent | fix some typos (diff) | |
download | libredirect-ccfcccd53ed6a7a5cc56adc0d7f027e475f0665a.zip |
Merge branch 'BobIsMyManager-librex'
Diffstat (limited to 'src/assets/javascripts/medium.js')
-rw-r--r-- | src/assets/javascripts/medium.js | 70 |
1 files changed, 51 insertions, 19 deletions
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js index 5d688b23..ddd955c1 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,10 @@ let scribeNormalCustomRedirects, scribeTorRedirectsChecks, scribeTorCustomRedirects, - mediumProtocol; + scribeI2pCustomRedirects, + scribeLokiCustomRedirects, + protocol, + protocolFallback; function init() { return new Promise(resolve => { @@ -68,7 +76,10 @@ function init() { "scribeNormalCustomRedirects", "scribeTorRedirectsChecks", "scribeTorCustomRedirects", - "mediumProtocol" + "scribeI2pCustomRedirects", + "scribeLokiCustomRedirects", + "protocol", + "protocolFallback" ], r => { disableMedium = r.disableMedium; @@ -77,7 +88,10 @@ function init() { scribeNormalCustomRedirects = r.scribeNormalCustomRedirects; scribeTorRedirectsChecks = r.scribeTorRedirectsChecks; scribeTorCustomRedirects = r.scribeTorCustomRedirects; - mediumProtocol = r.mediumProtocol; + scribeI2pCustomRedirects = r.scribeI2pCustomRedirects; + scribeLokiCustomRedirects = r.scribeLokiCustomRedirects; + protocol = r.protocol; + protocolFallback = r.protocolFallback; resolve(); } ) @@ -97,15 +111,21 @@ function redirect(url, type, initiator, disableOverride) { ...mediumRedirects.scribe.tor, ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, + ...scribeI2pCustomRedirects, + ...scribeLokiCustomRedirects ].includes(initiator.origin))) return; 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 == 'loki') instancesList = [...scribeLokiCustomRedirects]; + else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects]; + else 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}`; @@ -122,12 +142,18 @@ function switchInstance(url, disableOverride) { ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, + ...scribeI2pCustomRedirects, + ...scribeLokiCustomRedirects ]; 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 == 'loki') instancesList = [...scribeLokiCustomRedirects]; + else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects]; + else 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 +168,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]; @@ -160,7 +188,11 @@ function initDefaults() { scribeTorRedirectsChecks: [...redirects.scribe.tor], scribeTorCustomRedirects: [], - mediumProtocol: "normal", + scribeI2pRedirectsChecks: [...redirects.scribe.i2p], + scribeI2pCustomRedirects: [], + + scribeLokiRedirectsChecks: [...redirects.scribe.loki], + scribeLokiCustomRedirects: [] }, () => resolve()) }) }) |