diff options
author | BobIsMyManager <bimmgitsignature.nly8m@simplelogin.co> | 2022-07-26 22:28:50 +0100 |
---|---|---|
committer | BobIsMyManager <bimmgitsignature.nly8m@simplelogin.co> | 2022-07-26 22:28:50 +0100 |
commit | 2a0596f08fb54e2faef4bcb4548a28f5837fc067 (patch) | |
tree | cf5851f95c37da269a561623cee0d3967ca321ec /src/assets/javascripts/reddit.js | |
parent | I should really inspect diffs before commiting (diff) | |
download | libredirect-2a0596f08fb54e2faef4bcb4548a28f5837fc067.zip |
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
Diffstat (limited to 'src/assets/javascripts/reddit.js')
-rw-r--r-- | src/assets/javascripts/reddit.js | 802 |
1 files changed, 400 insertions, 402 deletions
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js index bc7b687f..699dcf1a 100644 --- a/src/assets/javascripts/reddit.js +++ b/src/assets/javascripts/reddit.js @@ -1,264 +1,261 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, - /^https?:\/{2}(i\.|preview\.)redd\.it/, -]; -let redirects = {}; +const targets = [/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/] +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]] = [] - } + 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; - libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of r.cloudflareBlackList) { - const a = libredditNormalRedirectsChecks.indexOf(instance); - if (a > -1) libredditNormalRedirectsChecks.splice(a, 1); - - const b = tedditNormalRedirectsChecks.indexOf(instance); - if (b > -1) tedditNormalRedirectsChecks.splice(b, 1); - } - browser.storage.local.set({ - redditRedirects: redirects, - libredditNormalRedirectsChecks, - tedditNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects = val + libredditNormalRedirectsChecks = [...redirects.libreddit.normal] + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareBlackList) { + const a = libredditNormalRedirectsChecks.indexOf(instance) + if (a > -1) libredditNormalRedirectsChecks.splice(a, 1) + + const b = tedditNormalRedirectsChecks.indexOf(instance) + if (b > -1) tedditNormalRedirectsChecks.splice(b, 1) + } + browser.storage.local.set({ + redditRedirects: redirects, + libredditNormalRedirectsChecks, + tedditNormalRedirectsChecks, + }) + }) } -let - disableReddit, - redditFrontend, - redditRedirects, - protocol, - protocolFallback, - - libredditNormalRedirectsChecks, - libredditNormalCustomRedirects, - - libredditTorRedirectsChecks, - libredditTorCustomRedirects, - - libredditI2pCustomRedirects, - - libredditLokiCustomRedirects, - - tedditNormalRedirectsChecks, - tedditNormalCustomRedirects, - - tedditTorRedirectsChecks, - tedditTorCustomRedirects, - - tedditI2pCustomRedirects, - tedditLokiCustomRedirects; +let disableReddit, + redditFrontend, + redditRedirects, + protocol, + protocolFallback, + libredditNormalRedirectsChecks, + libredditNormalCustomRedirects, + libredditTorRedirectsChecks, + libredditTorCustomRedirects, + libredditI2pCustomRedirects, + libredditLokiCustomRedirects, + tedditNormalRedirectsChecks, + tedditNormalCustomRedirects, + tedditTorRedirectsChecks, + tedditTorCustomRedirects, + tedditI2pCustomRedirects, + tedditLokiCustomRedirects function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableReddit", - "redditFrontend", - "redditRedirects", - "protocol", - "protocolFallback", - "libredditNormalRedirectsChecks", - "libredditNormalCustomRedirects", - "libredditTorRedirectsChecks", - "libredditTorCustomRedirects", - "libredditI2pCustomRedirects", - "libredditLokiCustomRedirects", - "tedditNormalRedirectsChecks", - "tedditNormalCustomRedirects", - "tedditTorRedirectsChecks", - "tedditTorCustomRedirects", - "tedditI2pCustomRedirects", - "tedditLokiCustomRedirects" - ], - r => { - disableReddit = r.disableReddit; - redditFrontend = r.redditFrontend; - redditRedirects = r.redditRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks; - libredditNormalCustomRedirects = r.libredditNormalCustomRedirects; - libredditTorRedirectsChecks = r.libredditTorRedirectsChecks; - libredditTorCustomRedirects = r.libredditTorCustomRedirects; - libredditI2pCustomRedirects = r.libredditI2pCustomRedirects; - libredditLokiCustomRedirects = r.libredditLokiCustomRedirects; - tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks; - tedditNormalCustomRedirects = r.tedditNormalCustomRedirects; - tedditTorRedirectsChecks = r.tedditTorRedirectsChecks; - tedditTorCustomRedirects = r.tedditTorCustomRedirects; - tedditI2pCustomRedirects = r.tedditI2pCustomRedirects; - tedditLokiCustomRedirects = r.tedditLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableReddit", + "redditFrontend", + "redditRedirects", + "protocol", + "protocolFallback", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + "libredditI2pCustomRedirects", + "libredditLokiCustomRedirects", + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + "tedditI2pCustomRedirects", + "tedditLokiCustomRedirects", + ], + r => { + disableReddit = r.disableReddit + redditFrontend = r.redditFrontend + redditRedirects = r.redditRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks + libredditNormalCustomRedirects = r.libredditNormalCustomRedirects + libredditTorRedirectsChecks = r.libredditTorRedirectsChecks + libredditTorCustomRedirects = r.libredditTorCustomRedirects + libredditI2pCustomRedirects = r.libredditI2pCustomRedirects + libredditLokiCustomRedirects = r.libredditLokiCustomRedirects + tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks + tedditNormalCustomRedirects = r.tedditNormalCustomRedirects + tedditTorRedirectsChecks = r.tedditTorRedirectsChecks + tedditTorCustomRedirects = r.tedditTorCustomRedirects + tedditI2pCustomRedirects = r.tedditI2pCustomRedirects + tedditLokiCustomRedirects = r.tedditLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function initLibredditCookies(test, from) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(from); - if (![ - ...libredditNormalRedirectsChecks, - ...libredditTorRedirectsChecks, - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, - ...libredditI2pCustomRedirects, - ...libredditLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } - - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - } - await utils.copyCookie('libreddit', from, checkedInstances, "theme"); - await utils.copyCookie('libreddit', from, checkedInstances, "front_page"); - await utils.copyCookie('libreddit', from, checkedInstances, "layout"); - await utils.copyCookie('libreddit', from, checkedInstances, "wide"); - await utils.copyCookie('libreddit', from, checkedInstances, "post_sort"); - await utils.copyCookie('libreddit', from, checkedInstances, "comment_sort"); - await utils.copyCookie('libreddit', from, checkedInstances, "show_nsfw"); - await utils.copyCookie('libreddit', from, checkedInstances, "autoplay_videos"); - await utils.copyCookie('libreddit', from, checkedInstances, "use_hls"); - await utils.copyCookie('libreddit', from, checkedInstances, "hide_hls_notification"); - await utils.copyCookie('libreddit', from, checkedInstances, "subscriptions"); - await utils.copyCookie('libreddit', from, checkedInstances, "filters"); - } - resolve(true); - }) + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + if ( + ![ + ...libredditNormalRedirectsChecks, + ...libredditTorRedirectsChecks, + ...libredditNormalCustomRedirects, + ...libredditTorCustomRedirects, + ...libredditI2pCustomRedirects, + ...libredditLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } + + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + } + await utils.copyCookie("libreddit", from, checkedInstances, "theme") + await utils.copyCookie("libreddit", from, checkedInstances, "front_page") + await utils.copyCookie("libreddit", from, checkedInstances, "layout") + await utils.copyCookie("libreddit", from, checkedInstances, "wide") + await utils.copyCookie("libreddit", from, checkedInstances, "post_sort") + await utils.copyCookie("libreddit", from, checkedInstances, "comment_sort") + await utils.copyCookie("libreddit", from, checkedInstances, "show_nsfw") + await utils.copyCookie("libreddit", from, checkedInstances, "autoplay_videos") + await utils.copyCookie("libreddit", from, checkedInstances, "use_hls") + await utils.copyCookie("libreddit", from, checkedInstances, "hide_hls_notification") + await utils.copyCookie("libreddit", from, checkedInstances, "subscriptions") + await utils.copyCookie("libreddit", from, checkedInstances, "filters") + } + resolve(true) + }) } function pasteLibredditCookies() { - return new Promise(async resolve => { - await init(); - if (disableReddit || redditFrontend != 'libreddit' || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - } - utils.getCookiesFromStorage('libreddit', checkedInstances, "theme"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "front_page"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "layout"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "wide"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "post_sort"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "comment_sort"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "show_nsfw"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "autoplay_videos"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "use_hls"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "hide_hls_notification"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "subscriptions"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "filters"); - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableReddit || redditFrontend != "libreddit" || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + } + utils.getCookiesFromStorage("libreddit", checkedInstances, "theme") + utils.getCookiesFromStorage("libreddit", checkedInstances, "front_page") + utils.getCookiesFromStorage("libreddit", checkedInstances, "layout") + utils.getCookiesFromStorage("libreddit", checkedInstances, "wide") + utils.getCookiesFromStorage("libreddit", checkedInstances, "post_sort") + utils.getCookiesFromStorage("libreddit", checkedInstances, "comment_sort") + utils.getCookiesFromStorage("libreddit", checkedInstances, "show_nsfw") + utils.getCookiesFromStorage("libreddit", checkedInstances, "autoplay_videos") + utils.getCookiesFromStorage("libreddit", checkedInstances, "use_hls") + utils.getCookiesFromStorage("libreddit", checkedInstances, "hide_hls_notification") + utils.getCookiesFromStorage("libreddit", checkedInstances, "subscriptions") + utils.getCookiesFromStorage("libreddit", checkedInstances, "filters") + resolve() + }) } function initTedditCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...tedditNormalRedirectsChecks, - ...tedditTorRedirectsChecks, - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ...tedditI2pCustomRedirects, - ...tedditI2pCustomRedirects - - ].includes(protocolHost)) resolve(); - - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - 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') - await utils.copyCookie('teddit', from, checkedInstances, 'domain_youtube') - await utils.copyCookie('teddit', from, checkedInstances, 'flairs') - await utils.copyCookie('teddit', from, checkedInstances, 'highlight_controversial') - await utils.copyCookie('teddit', from, checkedInstances, 'nsfw_enabled') - await utils.copyCookie('teddit', from, checkedInstances, 'post_media_max_height') - await utils.copyCookie('teddit', from, checkedInstances, 'show_upvoted_percentage') - await utils.copyCookie('teddit', from, checkedInstances, 'show_upvotes') - await utils.copyCookie('teddit', from, checkedInstances, 'theme') - await utils.copyCookie('teddit', from, checkedInstances, 'videos_muted') - } - resolve(true); - }) + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![...tedditNormalRedirectsChecks, ...tedditTorRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects, ...tedditI2pCustomRedirects, ...tedditI2pCustomRedirects].includes( + protocolHost + ) + ) + resolve() + + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + 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") + await utils.copyCookie("teddit", from, checkedInstances, "domain_youtube") + await utils.copyCookie("teddit", from, checkedInstances, "flairs") + await utils.copyCookie("teddit", from, checkedInstances, "highlight_controversial") + await utils.copyCookie("teddit", from, checkedInstances, "nsfw_enabled") + await utils.copyCookie("teddit", from, checkedInstances, "post_media_max_height") + await utils.copyCookie("teddit", from, checkedInstances, "show_upvoted_percentage") + await utils.copyCookie("teddit", from, checkedInstances, "show_upvotes") + await utils.copyCookie("teddit", from, checkedInstances, "theme") + await utils.copyCookie("teddit", from, checkedInstances, "videos_muted") + } + resolve(true) + }) } function pasteTedditCookies() { - return new Promise(async resolve => { - await init(); - if (disableReddit || redditFrontend != 'teddit' || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - utils.getCookiesFromStorage('teddit', checkedInstances, 'collapse_child_comments') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_instagram') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_twitter') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_youtube') - utils.getCookiesFromStorage('teddit', checkedInstances, 'flairs') - utils.getCookiesFromStorage('teddit', checkedInstances, 'highlight_controversial') - utils.getCookiesFromStorage('teddit', checkedInstances, 'nsfw_enabled') - utils.getCookiesFromStorage('teddit', checkedInstances, 'post_media_max_height') - utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvoted_percentage') - utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvotes') - utils.getCookiesFromStorage('teddit', checkedInstances, 'theme') - utils.getCookiesFromStorage('teddit', checkedInstances, 'videos_muted') - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableReddit || redditFrontend != "teddit" || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + utils.getCookiesFromStorage("teddit", checkedInstances, "collapse_child_comments") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_instagram") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_twitter") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_youtube") + utils.getCookiesFromStorage("teddit", checkedInstances, "flairs") + utils.getCookiesFromStorage("teddit", checkedInstances, "highlight_controversial") + utils.getCookiesFromStorage("teddit", checkedInstances, "nsfw_enabled") + utils.getCookiesFromStorage("teddit", checkedInstances, "post_media_max_height") + utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvoted_percentage") + utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvotes") + utils.getCookiesFromStorage("teddit", checkedInstances, "theme") + utils.getCookiesFromStorage("teddit", checkedInstances, "videos_muted") + resolve() + }) } function all() { - return [ - ...redditRedirects.libreddit.normal, - ...redditRedirects.libreddit.tor, - ...redditRedirects.teddit.normal, - ...redditRedirects.teddit.tor, - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, - ...libredditI2pCustomRedirects, - ...libredditLokiCustomRedirects, - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ...tedditI2pCustomRedirects, - ...tedditLokiCustomRedirects - ]; + return [ + ...redditRedirects.libreddit.normal, + ...redditRedirects.libreddit.tor, + ...redditRedirects.teddit.normal, + ...redditRedirects.teddit.tor, + ...libredditNormalCustomRedirects, + ...libredditTorCustomRedirects, + ...libredditI2pCustomRedirects, + ...libredditLokiCustomRedirects, + ...tedditNormalCustomRedirects, + ...tedditTorCustomRedirects, + ...tedditI2pCustomRedirects, + ...tedditLokiCustomRedirects, + ] } // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4 @@ -267,188 +264,189 @@ function all() { // https://teddit.net/vids/1mq8d0ma3yk81.mp4 // https://teddit.net/pics/w:null_4v3t1vgvrzk81.png - // redd.it/t5379n // https://v.redd.it/z08avb339n801/DASH_1_2_M // https://i.redd.it/bfkhs659tzk81.jpg function redirect(url, type, initiator, disableOverride) { - if (disableReddit && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; - if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB'; - if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return; - const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; - if (url.pathname.match(bypassPaths)) return; - - let libredditInstancesList = []; - let tedditInstancesList = []; - - if (protocol == 'loki') { - libredditInstancesList = [...libredditLokiCustomRedirects]; - tedditInstancesList = [...tedditLokiCustomRedirects]; - } - else if (protocol == 'i2p') { - libredditInstancesList = [...libredditI2pCustomRedirects]; - tedditInstancesList = [...tedditI2pCustomRedirects]; - } - else 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') { - if (tedditInstancesList.length === 0) return; - let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList); - return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`; - } - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - return `${libredditRandomInstance}/img${url.pathname}${url.search}` - } - } - else if (url.host === "redd.it") { - if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { - if (libredditInstancesList.length === 0) return; - let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - // https://redd.it/foo => https://libredd.it/comments/foo - return `${libredditRandomInstance}/comments${url.pathname}${url.search}`; - } - if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { - if (tedditInstancesList.length === 0) return; - let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList); - // https://redd.it/foo => https://teddit.net/comments/foo - return `${tedditRandomInstance}/comments${url.pathname}${url.search}` - } - } - else if (url.host === 'preview.redd.it') { - if (redditFrontend == 'teddit') return; - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`; - } - } - - let randomInstance; - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - randomInstance = utils.getRandomInstance(libredditInstancesList); - } - if (redditFrontend == 'teddit') { - if (tedditInstancesList.length === 0) return; - randomInstance = utils.getRandomInstance(tedditInstancesList); - } - return `${randomInstance}${url.pathname}${url.search}`; + if (disableReddit && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return + if (initiator && all().includes(initiator.origin)) return "BYPASSTAB" + if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return + const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/ + if (url.pathname.match(bypassPaths)) return + + let libredditInstancesList = [] + let tedditInstancesList = [] + + if (protocol == "loki") { + libredditInstancesList = [...libredditLokiCustomRedirects] + tedditInstancesList = [...tedditLokiCustomRedirects] + } else if (protocol == "i2p") { + libredditInstancesList = [...libredditI2pCustomRedirects] + tedditInstancesList = [...tedditI2pCustomRedirects] + } else 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") { + if (tedditInstancesList.length === 0) return + let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList) + return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}` + } + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + return `${libredditRandomInstance}/img${url.pathname}${url.search}` + } + } else if (url.host === "redd.it") { + if (redditFrontend == "libreddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { + if (libredditInstancesList.length === 0) return + let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + // https://redd.it/foo => https://libredd.it/comments/foo + return `${libredditRandomInstance}/comments${url.pathname}${url.search}` + } + if (redditFrontend == "teddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { + if (tedditInstancesList.length === 0) return + let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList) + // https://redd.it/foo => https://teddit.net/comments/foo + return `${tedditRandomInstance}/comments${url.pathname}${url.search}` + } + } else if (url.host === "preview.redd.it") { + if (redditFrontend == "teddit") return + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}` + } + } + + let randomInstance + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + randomInstance = utils.getRandomInstance(libredditInstancesList) + } + if (redditFrontend == "teddit") { + if (tedditInstancesList.length === 0) return + randomInstance = utils.getRandomInstance(tedditInstancesList) + } + return `${randomInstance}${url.pathname}${url.search}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableReddit && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList = []; - if (redditFrontend == 'libreddit') { - if (protocol == 'loki') instancesList = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...libredditI2pCustomRedirects]; - else 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 (protocol == 'loki') instancesList = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - if ([ - ...redditRedirects.libreddit.normal, - ...redditRedirects.libreddit.tor - ].includes(protocolHost) - ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_"); - } - - 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 (disableReddit && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + let instancesList = [] + if (redditFrontend == "libreddit") { + if (protocol == "loki") instancesList = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...libredditI2pCustomRedirects] + else 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 (protocol == "loki") instancesList = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...tedditI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + if ([...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/img/", "/pics/w:null_") + } + + 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(async 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 => { - libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of r.cloudflareBlackList) { - let i; - - i = libredditNormalRedirectsChecks.indexOf(instance); - if (i > -1) libredditNormalRedirectsChecks.splice(i, 1); - - i = tedditNormalRedirectsChecks.indexOf(instance); - if (i > -1) tedditNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableReddit: false, - redditFrontend: 'libreddit', - redditRedirects: redirects, - - libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, - libredditNormalCustomRedirects: [], - - libredditTorRedirectsChecks: [...redirects.libreddit.tor], - libredditTorCustomRedirects: [], - - libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], - libredditI2pCustomRedirects: [], - - libredditLokiRedirectsChecks: [...redirects.libreddit.loki], - libredditLokiCustomRedirects: [], - - tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, - tedditNormalCustomRedirects: [], - - tedditTorRedirectsChecks: [...redirects.teddit.tor], - tedditTorCustomRedirects: [], - - tedditI2pRedirectsChecks: [...redirects.teddit.i2p], - tedditI2pCustomRedirects: [], - - tedditLokiRedirectsChecks: [...redirects.teddit.loki], - tedditLokiCustomRedirects: [] - }, () => resolve()); - }); - }); - }); + return new Promise(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.get("cloudflareBlackList", async r => { + libredditNormalRedirectsChecks = [...redirects.libreddit.normal] + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareBlackList) { + let i + + i = libredditNormalRedirectsChecks.indexOf(instance) + if (i > -1) libredditNormalRedirectsChecks.splice(i, 1) + + i = tedditNormalRedirectsChecks.indexOf(instance) + if (i > -1) tedditNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableReddit: false, + redditFrontend: "libreddit", + redditRedirects: redirects, + + libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, + libredditNormalCustomRedirects: [], + + libredditTorRedirectsChecks: [...redirects.libreddit.tor], + libredditTorCustomRedirects: [], + + libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], + libredditI2pCustomRedirects: [], + + libredditLokiRedirectsChecks: [...redirects.libreddit.loki], + libredditLokiCustomRedirects: [], + + tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, + tedditNormalCustomRedirects: [], + + tedditTorRedirectsChecks: [...redirects.teddit.tor], + tedditTorCustomRedirects: [], + + tedditI2pRedirectsChecks: [...redirects.teddit.i2p], + tedditI2pCustomRedirects: [], + + tedditLokiRedirectsChecks: [...redirects.teddit.loki], + tedditLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - initLibredditCookies, - pasteLibredditCookies, - initTedditCookies, - pasteTedditCookies, - - redirect, - initDefaults, - switchInstance, -}; + setRedirects, + initLibredditCookies, + pasteLibredditCookies, + initTedditCookies, + pasteTedditCookies, + + redirect, + initDefaults, + switchInstance, +} |