diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-07-27 17:44:04 +0200 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-07-27 17:44:04 +0200 |
commit | a9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch) | |
tree | 2cb69c855b36e82128a00e5895d5f5409d5e0a5e /src/assets/javascripts/medium.js | |
parent | Merge branch 'BobIsMyManager-librex' (diff) | |
parent | , (diff) | |
download | libredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip |
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to 'src/assets/javascripts/medium.js')
-rw-r--r-- | src/assets/javascripts/medium.js | 368 |
1 files changed, 190 insertions, 178 deletions
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js index ddd955c1..4c03471c 100644 --- a/src/assets/javascripts/medium.js +++ b/src/assets/javascripts/medium.js @@ -1,207 +1,219 @@ -window.browser = window.browser || window.chrome; -import utils from './utils.js' +window.browser = window.browser || window.chrome +import utils from "./utils.js" const targets = [ - // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/, - /^medium\.com/, - /.*\.medium\.com/, - // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge - - /^towardsdatascience\.com/, - /^uxdesign\.cc/, - /^uxplanet\.org/, - /^betterprogramming\.pub/, - /^aninjusticemag\.com/, - /^betterhumans\.pub/, - /^psiloveyou\.xyz/, - /^entrepreneurshandbook\.co/, - /^blog\.coinbase\.com/, - - /^ levelup\.gitconnected\.com /, - /^javascript\.plainenglish\.io /, - /^blog\.bitsrc\.io /, - /^ itnext\.io /, - /^codeburst\.io /, - /^infosecwriteups\.com /, - /^ blog\.devgenius.io /, - /^ writingcooperative\.com /, -]; + // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/, + /^medium\.com/, + /.*\.medium\.com/, + // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge + + /^towardsdatascience\.com/, + /^uxdesign\.cc/, + /^uxplanet\.org/, + /^betterprogramming\.pub/, + /^aninjusticemag\.com/, + /^betterhumans\.pub/, + /^psiloveyou\.xyz/, + /^entrepreneurshandbook\.co/, + /^blog\.coinbase\.com/, + + /^ levelup\.gitconnected\.com /, + /^javascript\.plainenglish\.io /, + /^blog\.bitsrc\.io /, + /^ itnext\.io /, + /^codeburst\.io /, + /^infosecwriteups\.com /, + /^ blog\.devgenius.io /, + /^ writingcooperative\.com /, +] const frontends = new Array("scribe") const protocols = new Array("normal", "tor", "i2p", "loki") -let redirects = {}; +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]] = [] - } + 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; - scribeNormalRedirectsChecks = [...redirects.scribe.normal]; - for (const instance of r.cloudflareBlackList) { - const a = scribeNormalRedirectsChecks.indexOf(instance); - if (a > -1) scribeNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - mediumRedirects: redirects, - scribeNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.scribe = val + scribeNormalRedirectsChecks = [...redirects.scribe.normal] + for (const instance of r.cloudflareBlackList) { + const a = scribeNormalRedirectsChecks.indexOf(instance) + if (a > -1) scribeNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + mediumRedirects: redirects, + scribeNormalRedirectsChecks, + }) + }) } -let - disableMedium, - mediumRedirects, - scribeNormalRedirectsChecks, - scribeNormalCustomRedirects, - scribeTorRedirectsChecks, - scribeTorCustomRedirects, - scribeI2pCustomRedirects, - scribeLokiCustomRedirects, - protocol, - protocolFallback; +let disableMedium, + mediumRedirects, + scribeNormalRedirectsChecks, + scribeNormalCustomRedirects, + scribeTorRedirectsChecks, + scribeTorCustomRedirects, + scribeI2pCustomRedirects, + scribeLokiCustomRedirects, + protocol, + protocolFallback function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableMedium", - "mediumRedirects", - "scribeNormalRedirectsChecks", - "scribeNormalCustomRedirects", - "scribeTorRedirectsChecks", - "scribeTorCustomRedirects", - "scribeI2pCustomRedirects", - "scribeLokiCustomRedirects", - "protocol", - "protocolFallback" - ], - r => { - disableMedium = r.disableMedium; - mediumRedirects = r.mediumRedirects; - scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks; - scribeNormalCustomRedirects = r.scribeNormalCustomRedirects; - scribeTorRedirectsChecks = r.scribeTorRedirectsChecks; - scribeTorCustomRedirects = r.scribeTorCustomRedirects; - scribeI2pCustomRedirects = r.scribeI2pCustomRedirects; - scribeLokiCustomRedirects = r.scribeLokiCustomRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableMedium", + "mediumRedirects", + "scribeNormalRedirectsChecks", + "scribeNormalCustomRedirects", + "scribeTorRedirectsChecks", + "scribeTorCustomRedirects", + "scribeI2pCustomRedirects", + "scribeLokiCustomRedirects", + "protocol", + "protocolFallback", + ], + r => { + disableMedium = r.disableMedium + mediumRedirects = r.mediumRedirects + scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks + scribeNormalCustomRedirects = r.scribeNormalCustomRedirects + scribeTorRedirectsChecks = r.scribeTorRedirectsChecks + scribeTorCustomRedirects = r.scribeTorCustomRedirects + scribeI2pCustomRedirects = r.scribeI2pCustomRedirects + scribeLokiCustomRedirects = r.scribeLokiCustomRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableMedium && !disableOverride) return; - if (url.pathname == "/" && !disableOverride) return; - if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return; - if (initiator && ( - [ - ...mediumRedirects.scribe.normal, - ...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 (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}`; + if (disableMedium && !disableOverride) return + if (url.pathname == "/" && !disableOverride) return + if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return + if ( + initiator && + [...mediumRedirects.scribe.normal, ...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 (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}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableMedium && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...mediumRedirects.scribe.tor, - ...mediumRedirects.scribe.normal, - - ...scribeNormalCustomRedirects, - ...scribeTorCustomRedirects, - ...scribeI2pCustomRedirects, - ...scribeLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); 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]; - } - - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } - - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + return new Promise(async resolve => { + await init() + if (disableMedium && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [ + ...mediumRedirects.scribe.tor, + ...mediumRedirects.scribe.normal, + + ...scribeNormalCustomRedirects, + ...scribeTorCustomRedirects, + ...scribeI2pCustomRedirects, + ...scribeLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + 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] + } + + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } + + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - 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]; - for (const instance of r.cloudflareBlackList) { - let i = scribeNormalRedirectsChecks.indexOf(instance); - if (i > -1) scribeNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableMedium: false, - mediumRedirects: redirects, - - scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, - scribeNormalCustomRedirects: [], - - scribeTorRedirectsChecks: [...redirects.scribe.tor], - scribeTorCustomRedirects: [], - - scribeI2pRedirectsChecks: [...redirects.scribe.i2p], - scribeI2pCustomRedirects: [], - - scribeLokiRedirectsChecks: [...redirects.scribe.loki], - scribeLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + 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] + for (const instance of r.cloudflareBlackList) { + let i = scribeNormalRedirectsChecks.indexOf(instance) + if (i > -1) scribeNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableMedium: false, + mediumRedirects: redirects, + + scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, + scribeNormalCustomRedirects: [], + + scribeTorRedirectsChecks: [...redirects.scribe.tor], + scribeTorCustomRedirects: [], + + scribeI2pRedirectsChecks: [...redirects.scribe.i2p], + scribeI2pCustomRedirects: [], + + scribeLokiRedirectsChecks: [...redirects.scribe.loki], + scribeLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - redirect, - switchInstance, - initDefaults, -}; + setRedirects, + redirect, + switchInstance, + initDefaults, +} |