diff --git a/src/assets/javascripts/frontend.js b/src/assets/javascripts/frontend.js new file mode 100644 index 00000000..ab71cc0d --- /dev/null +++ b/src/assets/javascripts/frontend.js @@ -0,0 +1,143 @@ +class FrontEnd { + constructor({ enable, frontends, frontend, redirect }) { + this.redirects = {} + this.enable = enable + this.frontend = frontend + this.protocol = "normal" + this.protocolFallback = true + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + data = JSON.parse(data) + fetch("/instances/blacklist.json") + .then(response => response.text()) + .then(async blackList => { + blackList = JSON.parse(blackList) + for (const frontend in frontends) { + this.redirects[frontend] = {} + + this.redirects[frontend].cookies = [...frontends[frontend].cookies] + + for (const protocol in data[frontend]) { + this.redirects[frontend][protocol] = {} + + this.redirects[frontend][protocol].all = [...data[frontend][protocol]] + + this.redirects[frontend][protocol].custom = [] + + this.redirects[frontend][protocol].checked = [...data[frontend][protocol]] + for (const instance of blackList.cloudflare) { + const a = this.redirects[frontend][protocol].checked.indexOf(instance) + if (a > -1) this.redirects[frontend][protocol].checked.splice(a, 1) + } + for (const instance of blackList.offline) { + const a = this.redirects[frontend][protocol].checked.indexOf(instance) + if (a > -1) this.redirects[frontend][protocol].checked.splice(a, 1) + } + } + } + }) + }) + this.unifyCookies = from => + new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + const list = [...this.redirects[this.frontend][this.protocol]] + if (![...list.checked, ...list.custom].includes(protocolHost)) { + resolve() + return + } + for (const cookie of this.redirects[this.frontend].cookies) { + await utils.copyCookie(frontend, protocolHost, [...list.checked, list.custom], cookie) + } + resolve(true) + }) + + this.switchInstance = (url, disableOverride) => { + if (!this.enable && !disableOverride) return + + const protocolHost = utils.protocolHost(url) + + const list = [...this.redirects[this.frontend][this.protocol]] + if (!list.all.includes(protocolHost)) return + + let userList = [...list.checked, ...list.custom] + if (userList.length === 0 && this.protocolFallback) userList = [...list.normal.all] + + const i = userList.indexOf(protocolHost) + if (i > -1) userList.splice(i, 1) + if (userList.length === 0) return + + const randomInstance = utils.getRandomInstance(userList) + return `${randomInstance}${url.pathname}${url.search}` + } + + this.redirect = (url, type, initiator, disableOverride) => { + const result = redirect(url, type, initiator, disableOverride) + if (result == "BYPASSTAB") return "BYPASSTAB" + if (result) { + const list = [...this.redirects[this.frontend][this.protocol]] + let userList = [...list.checked, ...list.custom] + const randomInstance = utils.getRandomInstance(userList) + return `${randomInstance}${result.pathname}${result.search}` + } + } + + let init = () => new Promise(async resolve => {}) + } +} + +let Reddit = new FrontEnd({ + enable: true, + frontends: { + libreddit: { cookies: ["theme", "front_page", "layout", "wide", "post_sort", "comment_sort", "show_nsfw", "autoplay_videos", "use_hls", "hide_hls_notification", "subscriptions", "filters"] }, + teddit: { + cookies: [ + "collapse_child_comments", + "domain_instagram", + "domain_twitter", + "domain_youtube", + "flairs", + "highlight_controversial", + "nsfw_enabled", + "post_media_max_height", + "show_upvoted_percentage", + "show_upvotes", + "theme", + "videos_muted", + ], + }, + }, + frontend: "libreddit", + redirect: (url, type, initiator, disableOverride) => { + if (this.enable && !disableOverride) return + + const targets = [/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/] + 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 + + const protocolHost = utils.protocolHost(url) + + if (url.host === "i.redd.it") { + if (this.frontend == "libreddit") return `${protocolHost}/img${url.pathname}${url.search}` + if (this.frontend == "teddit") return `${protocolHost}/pics/w:null_${url.pathname.substring(1)}${url.search}` + } else if (url.host === "redd.it") { + // https://redd.it/foo => https://libredd.it/comments/foo + if (this.frontend == "libreddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) return `${protocolHost}/comments${url.pathname}${url.search}` + // https://redd.it/foo => https://teddit.net/comments/foo + if (this.frontend == "teddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) return `${protocolHost}/comments${url.pathname}${url.search}` + } else if (url.host === "preview.redd.it") { + if (this.frontend == "libreddit") return `${protocolHost}/preview/pre${url.pathname}${url.search}` + if (this.frontend == "teddit") return + } else { + return `${url.href}` + } + }, +}) + +export default {} diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js index 57368557..604e9a9e 100644 --- a/src/assets/javascripts/imdb.js +++ b/src/assets/javascripts/imdb.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.libremdb = val - libremdbNormalRedirectsChecks = [...redirects.libremdb.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = libremdbNormalRedirectsChecks.indexOf(instance) - if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - imdbRedirects: redirects, - libremdbNormalRedirectsChecks, - libremdbTorRedirectsChecks: [...redirects.libremdb.tor], - libremdbI2pRedirectsChecks: [...redirects.libremdb.i2p], - libremdbLokiRedirectsChecks: [...redirects.libremdb.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.libremdb = val + libremdbNormalRedirectsChecks = [...redirects.libremdb.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = libremdbNormalRedirectsChecks.indexOf(instance) + if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + imdbRedirects: redirects, + libremdbNormalRedirectsChecks, + libremdbTorRedirectsChecks: [...redirects.libremdb.tor], + libremdbI2pRedirectsChecks: [...redirects.libremdb.i2p], + libremdbLokiRedirectsChecks: [...redirects.libremdb.loki], + }, + () => resolve() + ) }) - }) + ) } let disableImdb, diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js index 15b9ccac..24e8cb8d 100644 --- a/src/assets/javascripts/imgur.js +++ b/src/assets/javascripts/imgur.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.rimgo = val - rimgoNormalRedirectsChecks = [...redirects.rimgo.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = rimgoNormalRedirectsChecks.indexOf(instance) - if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - imgurRedirects: redirects, - rimgoNormalRedirectsChecks, - rimgoTorRedirectsChecks: [...redirects.rimgo.tor], - rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], - rimgoLokiRedirectsChecks: [...redirects.rimgo.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.rimgo = val + rimgoNormalRedirectsChecks = [...redirects.rimgo.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = rimgoNormalRedirectsChecks.indexOf(instance) + if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + imgurRedirects: redirects, + rimgoNormalRedirectsChecks, + rimgoTorRedirectsChecks: [...redirects.rimgo.tor], + rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], + rimgoLokiRedirectsChecks: [...redirects.rimgo.loki], + }, + () => resolve() + ) }) - }) + ) } let disableImgur, diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js index d0aa07c0..bc580de7 100644 --- a/src/assets/javascripts/instagram.js +++ b/src/assets/javascripts/instagram.js @@ -16,21 +16,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => { - redirects.bibliogram = val - bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = bibliogramNormalRedirectsChecks.indexOf(instance) - if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - instagramRedirects: redirects, - bibliogramNormalRedirectsChecks, - bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor], - bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p], - bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => { + redirects.bibliogram = val + bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = bibliogramNormalRedirectsChecks.indexOf(instance) + if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + instagramRedirects: redirects, + bibliogramNormalRedirectsChecks, + bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor], + bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p], + bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki], + }, + () => resolve() + ) }) - }) + ) } let disableInstagram, diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js index 5e285ada..5819d132 100644 --- a/src/assets/javascripts/lbry.js +++ b/src/assets/javascripts/lbry.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.librarian = val - librarianNormalRedirectsChecks = [...redirects.librarian.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = librarianNormalRedirectsChecks.indexOf(instance) - if (a > -1) librarianNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - lbryTargetsRedirects: redirects, - librarianNormalRedirectsChecks, - librarianTorRedirectsChecks: [...redirects.librarian.tor], - librarianI2pRedirectsChecks: [...redirects.librarian.i2p], - librarianLokiRedirectsChecks: [...redirects.librarian.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.librarian = val + librarianNormalRedirectsChecks = [...redirects.librarian.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = librarianNormalRedirectsChecks.indexOf(instance) + if (a > -1) librarianNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + lbryTargetsRedirects: redirects, + librarianNormalRedirectsChecks, + librarianTorRedirectsChecks: [...redirects.librarian.tor], + librarianI2pRedirectsChecks: [...redirects.librarian.i2p], + librarianLokiRedirectsChecks: [...redirects.librarian.loki], + }, + () => resolve() + ) }) - }) + ) } let disableLbryTargets, diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js index 6e3c9af0..6911c9ba 100644 --- a/src/assets/javascripts/maps.js +++ b/src/assets/javascripts/maps.js @@ -21,21 +21,26 @@ redirects.osm = {} redirects.osm.normal = ["https://www.openstreetmap.org"] function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.facil = val - facilNormalRedirectsChecks = [...redirects.facil.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = facilNormalRedirectsChecks.indexOf(instance) - if (a > -1) facilNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - mapsRedirects: redirects, - facilNormalRedirectsChecks, - facilTorRedirectsChecks: [...redirects.facil.tor], - facilI2pRedirectsChecks: [...redirects.facil.i2p], - facilLokiRedirectsChecks: [...redirects.facil.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.facil = val + facilNormalRedirectsChecks = [...redirects.facil.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = facilNormalRedirectsChecks.indexOf(instance) + if (a > -1) facilNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + mapsRedirects: redirects, + facilNormalRedirectsChecks, + facilTorRedirectsChecks: [...redirects.facil.tor], + facilI2pRedirectsChecks: [...redirects.facil.i2p], + facilLokiRedirectsChecks: [...redirects.facil.loki], + }, + () => resolve() + ) }) - }) + ) } let disableMaps, diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js index e5cb1dc4..386d234c 100644 --- a/src/assets/javascripts/medium.js +++ b/src/assets/javascripts/medium.js @@ -40,21 +40,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.scribe = val - scribeNormalRedirectsChecks = [...redirects.scribe.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = scribeNormalRedirectsChecks.indexOf(instance) - if (a > -1) scribeNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - mediumRedirects: redirects, - scribeNormalRedirectsChecks, - scribeTorRedirectsChecks: [...redirects.scribe.tor], - scribeI2pRedirectsChecks: [...redirects.scribe.i2p], - scribeLokiRedirectsChecks: [...redirects.scribe.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.scribe = val + scribeNormalRedirectsChecks = [...redirects.scribe.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = scribeNormalRedirectsChecks.indexOf(instance) + if (a > -1) scribeNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + mediumRedirects: redirects, + scribeNormalRedirectsChecks, + scribeTorRedirectsChecks: [...redirects.scribe.tor], + scribeI2pRedirectsChecks: [...redirects.scribe.i2p], + scribeLokiRedirectsChecks: [...redirects.scribe.loki], + }, + () => resolve() + ) }) - }) + ) } let disableMedium, diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js index 478a18f0..e1ff406f 100644 --- a/src/assets/javascripts/peertube.js +++ b/src/assets/javascripts/peertube.js @@ -15,21 +15,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.simpleertube = val - simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = simpleertubeNormalRedirectsChecks.indexOf(instance) - if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - peertubeRedirects: redirects, - simpleertubeNormalRedirectsChecks, - simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], - simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p], - simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.simpleertube = val + simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = simpleertubeNormalRedirectsChecks.indexOf(instance) + if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + peertubeRedirects: redirects, + simpleertubeNormalRedirectsChecks, + simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], + simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p], + simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki], + }, + () => resolve() + ) }) - }) + ) } let disablePeertubeTargets, diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js index 578cfe76..4473c3d7 100644 --- a/src/assets/javascripts/quora.js +++ b/src/assets/javascripts/quora.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.quetre = val - quetreNormalRedirectsChecks = [...redirects.quetre.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = quetreNormalRedirectsChecks.indexOf(instance) - if (a > -1) quetreNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - quoraRedirects: redirects, - quetreNormalRedirectsChecks, - quetreTorRedirectsChecks: [...redirects.quetre.tor], - quetreI2pRedirectsChecks: [...redirects.quetre.i2p], - quetreLokiRedirectsChecks: [...redirects.quetre.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.quetre = val + quetreNormalRedirectsChecks = [...redirects.quetre.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = quetreNormalRedirectsChecks.indexOf(instance) + if (a > -1) quetreNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + quoraRedirects: redirects, + quetreNormalRedirectsChecks, + quetreTorRedirectsChecks: [...redirects.quetre.tor], + quetreI2pRedirectsChecks: [...redirects.quetre.i2p], + quetreLokiRedirectsChecks: [...redirects.quetre.loki], + }, + () => resolve() + ) }) - }) + ) } let disableQuora, @@ -95,9 +100,7 @@ function redirect(url, type, initiator, disableOverride) { if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects] } - if (instancesList.length === 0) { - return - } + if (instancesList.length === 0) return const randomInstance = utils.getRandomInstance(instancesList) return `${randomInstance}${url.pathname}` diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js index ca1993b5..209ee7e3 100644 --- a/src/assets/javascripts/reddit.js +++ b/src/assets/javascripts/reddit.js @@ -16,29 +16,34 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects = val - libredditNormalRedirectsChecks = [...redirects.libreddit.normal] - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = libredditNormalRedirectsChecks.indexOf(instance) - if (a > -1) libredditNormalRedirectsChecks.splice(a, 1) + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects = val + libredditNormalRedirectsChecks = [...redirects.libreddit.normal] + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + 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, - libredditTorRedirectsChecks: [...redirects.libreddit.tor], - libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], - libredditLokiRedirectsChecks: [...redirects.libreddit.loki], - tedditNormalRedirectsChecks, - tedditTorRedirectsChecks: [...redirects.teddit.tor], - tedditI2pRedirectsChecks: [...redirects.teddit.i2p], - tedditLokiRedirectsChecks: [...redirects.teddit.loki], + const b = tedditNormalRedirectsChecks.indexOf(instance) + if (b > -1) tedditNormalRedirectsChecks.splice(b, 1) + } + browser.storage.local.set( + { + redditRedirects: redirects, + libredditNormalRedirectsChecks, + libredditTorRedirectsChecks: [...redirects.libreddit.tor], + libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], + libredditLokiRedirectsChecks: [...redirects.libreddit.loki], + tedditNormalRedirectsChecks, + tedditTorRedirectsChecks: [...redirects.teddit.tor], + tedditI2pRedirectsChecks: [...redirects.teddit.i2p], + tedditLokiRedirectsChecks: [...redirects.teddit.loki], + }, + () => resolve() + ) }) - }) + ) } let disableReddit, @@ -304,7 +309,9 @@ function switchInstance(url, disableOverride) { 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/") + 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] @@ -312,7 +319,9 @@ function switchInstance(url, disableOverride) { 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_") + if ([...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor].includes(protocolHost)) { + url.pathname = url.pathname.replace("/img/", "/pics/w:null_") + } } const i = instancesList.indexOf(protocolHost) @@ -333,9 +342,8 @@ function initDefaults() { .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]] - } + for (const frontend of frontends) redirects[frontend] = dataJson[frontend] + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], async r => { libredditNormalRedirectsChecks = [...redirects.libreddit.normal] tedditNormalRedirectsChecks = [...redirects.teddit.normal] diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js index 51d16329..16459b4a 100644 --- a/src/assets/javascripts/reuters.js +++ b/src/assets/javascripts/reuters.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.neuters = val - neutersNormalRedirectsChecks = [...redirects.neuters.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = neutersNormalRedirectsChecks.indexOf(instance) - if (a > -1) neutersNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - neutersRedirects: redirects, - neutersNormalRedirectsChecks, - neutersTorRedirectsChecks: [...redirects.neuters.tor], - neutersI2pRedirectsChecks: [...redirects.neuters.i2p], - neutersLokiRedirectsChecks: [...redirects.neuters.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.neuters = val + neutersNormalRedirectsChecks = [...redirects.neuters.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = neutersNormalRedirectsChecks.indexOf(instance) + if (a > -1) neutersNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + neutersRedirects: redirects, + neutersNormalRedirectsChecks, + neutersTorRedirectsChecks: [...redirects.neuters.tor], + neutersI2pRedirectsChecks: [...redirects.neuters.i2p], + neutersLokiRedirectsChecks: [...redirects.neuters.loki], + }, + () => resolve() + ) }) - }) + ) } let disableReuters, diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js index 64b56caa..548e7629 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -7,7 +7,7 @@ const targets = [/^https?:\/{2}search\.libredirect\.invalid/] const frontends = new Array("searx", "searxng", "whoogle", "librex") const protocols = new Array("normal", "tor", "i2p", "loki") -const redirects = {} +let redirects = {} for (let i = 0; i < frontends.length; i++) { redirects[frontends[i]] = {} @@ -17,45 +17,50 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects = val - searxNormalRedirectsChecks = [...redirects.searx.normal] - searxngNormalRedirectsChecks = [...redirects.searxng.normal] - whoogleNormalRedirectsChecks = [...redirects.whoogle.normal] - librexNormalRedirectsChecks = [...redirects.librex.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = searxNormalRedirectsChecks.indexOf(instance) - if (a > -1) searxNormalRedirectsChecks.splice(a, 1) + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects = val + searxNormalRedirectsChecks = [...redirects.searx.normal] + searxngNormalRedirectsChecks = [...redirects.searxng.normal] + whoogleNormalRedirectsChecks = [...redirects.whoogle.normal] + librexNormalRedirectsChecks = [...redirects.librex.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = searxNormalRedirectsChecks.indexOf(instance) + if (a > -1) searxNormalRedirectsChecks.splice(a, 1) - const b = searxngNormalRedirectsChecks.indexOf(instance) - if (b > -1) searxngNormalRedirectsChecks.splice(b, 1) + const b = searxngNormalRedirectsChecks.indexOf(instance) + if (b > -1) searxngNormalRedirectsChecks.splice(b, 1) - const c = whoogleNormalRedirectsChecks.indexOf(instance) - if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1) + 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, - searxTorRedirectsChecks: [...redirects.searx.tor], - searxI2pRedirectsChecks: [...redirects.searx.i2p], - searxLokiRedirectsChecks: [...redirects.searx.loki], - searxngNormalRedirectsChecks, - searxngTorRedirectsChecks: [...redirects.searxng.tor], - searxngI2pRedirectsChecks: [...redirects.searxng.i2p], - searxngLokiRedirectsChecks: [...redirects.searxng.loki], - whoogleNormalRedirectsChecks, - whoogleTorRedirectsChecks: [...redirects.whoogle.tor], - whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], - whoogleLokiRedirectsChecks: [...redirects.whoogle.loki], - librexNormalRedirectsChecks, - librexTorRedirectsChecks: [...redirects.librex.tor], - librexI2pRedirectsChecks: [...redirects.librex.i2p], - librexLokiRedirectsChecks: [...redirects.librex.loki], + const d = librexNormalRedirectsChecks.indexOf(instance) + if (d > -1) librexNormalRedirectsChecks.splice(d, 1) + } + browser.storage.local.set( + { + searchRedirects: redirects, + searxNormalRedirectsChecks, + searxTorRedirectsChecks: [...redirects.searx.tor], + searxI2pRedirectsChecks: [...redirects.searx.i2p], + searxLokiRedirectsChecks: [...redirects.searx.loki], + searxngNormalRedirectsChecks, + searxngTorRedirectsChecks: [...redirects.searxng.tor], + searxngI2pRedirectsChecks: [...redirects.searxng.i2p], + searxngLokiRedirectsChecks: [...redirects.searxng.loki], + whoogleNormalRedirectsChecks, + whoogleTorRedirectsChecks: [...redirects.whoogle.tor], + whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], + whoogleLokiRedirectsChecks: [...redirects.whoogle.loki], + librexNormalRedirectsChecks, + librexTorRedirectsChecks: [...redirects.librex.tor], + librexI2pRedirectsChecks: [...redirects.librex.i2p], + librexLokiRedirectsChecks: [...redirects.librex.loki], + }, + () => resolve() + ) }) - }) + ) } let disableSearch, diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js index a52ab6ff..a7b5f20b 100644 --- a/src/assets/javascripts/sendTargets.js +++ b/src/assets/javascripts/sendTargets.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.send = val - sendNormalRedirectsChecks = [...redirects.send.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = sendNormalRedirectsChecks.indexOf(instance) - if (a > -1) sendNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - sendTargetsRedirects: redirects, - sendNormalRedirectsChecks, - sendTorRedirectsChecks: [...redirects.send.tor], - sendI2pRedirectsChecks: [...redirects.send.i2p], - sendLokiRedirectsChecks: [...redirects.send.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.send = val + sendNormalRedirectsChecks = [...redirects.send.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = sendNormalRedirectsChecks.indexOf(instance) + if (a > -1) sendNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + sendTargetsRedirects: redirects, + sendNormalRedirectsChecks, + sendTorRedirectsChecks: [...redirects.send.tor], + sendI2pRedirectsChecks: [...redirects.send.i2p], + sendLokiRedirectsChecks: [...redirects.send.loki], + }, + () => resolve() + ) }) - }) + ) } let disableSendTarget, diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js index 71f07687..78106a15 100644 --- a/src/assets/javascripts/tiktok.js +++ b/src/assets/javascripts/tiktok.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.proxiTok = val - proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = proxiTokNormalRedirectsChecks.indexOf(instance) - if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - tiktokRedirects: redirects, - proxiTokNormalRedirectsChecks, - proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], - proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], - proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.proxiTok = val + proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = proxiTokNormalRedirectsChecks.indexOf(instance) + if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + tiktokRedirects: redirects, + proxiTokNormalRedirectsChecks, + proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], + proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], + proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], + }, + () => resolve() + ) }) - }) + ) } function initProxiTokCookies(test, from) { diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js index 993c630f..fa103169 100644 --- a/src/assets/javascripts/translate/translate.js +++ b/src/assets/javascripts/translate/translate.js @@ -91,29 +91,34 @@ init() browser.storage.onChanged.addListener(init) function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects = val - simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal] - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = simplyTranslateNormalCustomRedirects.indexOf(instance) - if (a > -1) simplyTranslateNormalCustomRedirects.splice(a, 1) + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects = val + simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal] + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = simplyTranslateNormalCustomRedirects.indexOf(instance) + if (a > -1) simplyTranslateNormalCustomRedirects.splice(a, 1) - const b = lingvaNormalRedirectsChecks.indexOf(instance) - if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1) - } - browser.storage.local.set({ - translateRedirects: redirects, - simplyTranslateNormalRedirectsChecks, - simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], - simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], - simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], - lingvaNormalRedirectsChecks, - lingvaTorRedirectsChecks: [...redirects.lingva.tor], - lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], - lingvaLokiRedirectsChecks: [...redirects.lingva.loki], + const b = lingvaNormalRedirectsChecks.indexOf(instance) + if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1) + } + browser.storage.local.set( + { + translateRedirects: redirects, + simplyTranslateNormalRedirectsChecks, + simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], + simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], + simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], + lingvaNormalRedirectsChecks, + lingvaTorRedirectsChecks: [...redirects.lingva.tor], + lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], + lingvaLokiRedirectsChecks: [...redirects.lingva.loki], + }, + () => resolve() + ) }) - }) + ) } function copyPasteLingvaLocalStorage(test, url, tabId) { diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js index 7111ad00..2f68dfc2 100644 --- a/src/assets/javascripts/twitter.js +++ b/src/assets/javascripts/twitter.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], r => { - redirects.nitter = val - nitterNormalRedirectsChecks = [...redirects.nitter.normal] - for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) { - let i = nitterNormalRedirectsChecks.indexOf(instance) - if (i > -1) nitterNormalRedirectsChecks.splice(i, 1) - } - browser.storage.local.set({ - twitterRedirects: redirects, - nitterNormalRedirectsChecks, - nitterTorRedirectsChecks: [...redirects.nitter.tor], - nitterI2pRedirectsChecks: [...redirects.nitter.i2p], - nitterLokiRedirectsChecks: [...redirects.nitter.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], r => { + redirects.nitter = val + nitterNormalRedirectsChecks = [...redirects.nitter.normal] + for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) { + let i = nitterNormalRedirectsChecks.indexOf(instance) + if (i > -1) nitterNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + twitterRedirects: redirects, + nitterNormalRedirectsChecks, + nitterTorRedirectsChecks: [...redirects.nitter.tor], + nitterI2pRedirectsChecks: [...redirects.nitter.i2p], + nitterLokiRedirectsChecks: [...redirects.nitter.loki], + }, + () => resolve() + ) }) - }) + ) } let disableTwitter, diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index 50ada765..5ca5c30b 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -28,14 +28,48 @@ let authenticateBlackList = [] let offlineBlackList = [] async function initBlackList() { return new Promise(resolve => { - fetch("/instances/blacklist.json") - .then(response => response.text()) - .then(data => { - cloudflareBlackList = JSON.parse(data).cloudflare - authenticateBlackList = JSON.parse(data).authenticate - offlineBlackList = JSON.parse(data).offline + browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], r => { + cloudflareBlackList = r.cloudflareBlackList + authenticateBlackList = r.authenticateBlackList + offlineBlackList = r.offlineBlackList + }) + if (cloudflareBlackList.length == 0) { + fetch("/instances/blacklist.json") + .then(response => response.text()) + .then(data => { + cloudflareBlackList = JSON.parse(data).cloudflare + authenticateBlackList = JSON.parse(data).authenticate + offlineBlackList = JSON.parse(data).offline + }) + } + resolve() + }) +} + +function updateBlackList() { + return new Promise(async resolve => { + let http = new XMLHttpRequest() + let fallback = new XMLHttpRequest() + http.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/blacklist.json", false) + http.send(null) + if (http.status != 200) { + fallback.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/blacklist.json", false) + fallback.send(null) + if (fallback.status === 200) { + http = fallback + } else { resolve() - }) + return + } + } + const blackList = JSON.parse(http.responseText) + browser.storage.local.set({ + cloudflareBlackList: blackList.cloudflare, + authenticateBlackList: blackList.authenticate, + offlineBlackList: blackList.offline, + }) + ;(cloudflareBlackList = blackList.cloudflare), (authenticateBlackList = blackList.authenticate), (offlineBlackList = blackList.offline) + resolve() }) } @@ -55,45 +89,45 @@ function updateInstances() { return } } - await initBlackList() + await updateBlackList() const instances = JSON.parse(http.responseText) - youtubeHelper.setRedirects({ + await youtubeHelper.setRedirects({ invidious: instances.invidious, piped: instances.piped, pipedMaterial: instances.pipedMaterial, cloudtube: instances.cloudtube, }) - twitterHelper.setRedirects(instances.nitter) - instagramHelper.setRedirects(instances.bibliogram) - redditHelper.setRedirects({ + await twitterHelper.setRedirects(instances.nitter) + await instagramHelper.setRedirects(instances.bibliogram) + await redditHelper.setRedirects({ libreddit: instances.libreddit, teddit: instances.teddit, }) - translateHelper.setRedirects({ + await translateHelper.setRedirects({ simplyTranslate: instances.simplyTranslate, lingva: instances.lingva, }) - searchHelper.setRedirects({ + await 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) - reutersHelper.setRedirects(instances.neuters) - youtubeMusicHelper.setRedirects({ + await wikipediaHelper.setRedirects(instances.wikiless) + await mediumHelper.setRedirects(instances.scribe) + await quoraHelper.setRedirects(instances.quetre) + await libremdbHelper.setRedirects(instances.libremdb) + await sendTargetsHelper.setRedirects(instances.send) + await tiktokHelper.setRedirects(instances.proxiTok) + await lbryHelper.setRedirects(instances.librarian) + await reutersHelper.setRedirects(instances.neuters) + await youtubeMusicHelper.setRedirects({ beatbump: instances.beatbump, hyperpipe: instances.hyperpipe, }) - mapsHelper.setRedirects(instances.facil) - peertubeHelper.setRedirects(instances.simpleertube) + await mapsHelper.setRedirects(instances.facil) + await peertubeHelper.setRedirects(instances.simpleertube) console.info("Successfully updated Instances") resolve(true) @@ -511,7 +545,7 @@ function latency(name, frontend, document, location) { latencyElement.addEventListener("click", async () => { let reloadWindow = () => location.reload() latencyElement.addEventListener("click", reloadWindow) - let key = `${name} Redirects` + let key = `${name}Redirects` browser.storage.local.get(key, r => { let redirects = r[key] const oldHtml = latencyLabel.innerHTML diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js index 2d0f75a1..1e06ed44 100644 --- a/src/assets/javascripts/wikipedia.js +++ b/src/assets/javascripts/wikipedia.js @@ -17,21 +17,26 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects.wikiless = val - wikilessNormalRedirectsChecks = [...redirects.wikiless.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = wikilessNormalRedirectsChecks.indexOf(instance) - if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1) - } - browser.storage.local.set({ - wikipediaRedirects: redirects, - wikilessNormalRedirectsChecks, - wikilessTorRedirectsChecks: [...redirects.wikiless.tor], - wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p], - wikilessLokiRedirectsChecks: [...redirects.wikiless.loki], + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects.wikiless = val + wikilessNormalRedirectsChecks = [...redirects.wikiless.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = wikilessNormalRedirectsChecks.indexOf(instance) + if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set( + { + wikipediaRedirects: redirects, + wikilessNormalRedirectsChecks, + wikilessTorRedirectsChecks: [...redirects.wikiless.tor], + wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p], + wikilessLokiRedirectsChecks: [...redirects.wikiless.loki], + }, + () => resolve() + ) }) - }) + ) } let disableWikipedia, diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js index 32f06b9c..bdb9449a 100644 --- a/src/assets/javascripts/youtube/youtube.js +++ b/src/assets/javascripts/youtube/youtube.js @@ -30,45 +30,50 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects = val - invidiousNormalRedirectsChecks = [...redirects.invidious.normal] - pipedNormalRedirectsChecks = [...redirects.piped.normal] - pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal] - cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = invidiousNormalRedirectsChecks.indexOf(instance) - if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1) + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects = val + invidiousNormalRedirectsChecks = [...redirects.invidious.normal] + pipedNormalRedirectsChecks = [...redirects.piped.normal] + pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal] + cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = invidiousNormalRedirectsChecks.indexOf(instance) + if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1) - const b = pipedNormalRedirectsChecks.indexOf(instance) - if (b > -1) pipedNormalRedirectsChecks.splice(b, 1) + const b = pipedNormalRedirectsChecks.indexOf(instance) + if (b > -1) pipedNormalRedirectsChecks.splice(b, 1) - const c = pipedMaterialNormalRedirectsChecks.indexOf(instance) - if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1) + const c = pipedMaterialNormalRedirectsChecks.indexOf(instance) + if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1) - const d = cloudtubeNormalRedirectsChecks.indexOf(instance) - if (c > -1) cloudtubeNormalRedirectsChecks.splice(d, 1) - } - browser.storage.local.set({ - youtubeRedirects: redirects, - invidiousNormalRedirectsChecks, - invidiousTorRedirectsChecks: [...redirects.invidious.tor], - invidiousI2pRedirectsChecks: [...redirects.invidious.i2p], - invidiousLokiRedirectsChecks: [...redirects.invidious.loki], - pipedNormalRedirectsChecks, - pipedTorRedirectsChecks: [...redirects.piped.tor], - pipedI2pRedirectsChecks: [...redirects.piped.i2p], - pipedLokiRedirectsChecks: [...redirects.piped.loki], - pipedMaterialNormalRedirectsChecks, - pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor], - pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p], - pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki], - cloudtubeNormalRedirectsChecks, - cloudtubeTorRedirectsChecks: [...redirects.cloudtube.tor], - cloudtubeI2pRedirectsChecks: [...redirects.cloudtube.i2p], - cloudtubeLokiRedirectsChecks: [...redirects.cloudtube.loki], + const d = cloudtubeNormalRedirectsChecks.indexOf(instance) + if (c > -1) cloudtubeNormalRedirectsChecks.splice(d, 1) + } + browser.storage.local.set( + { + youtubeRedirects: redirects, + invidiousNormalRedirectsChecks, + invidiousTorRedirectsChecks: [...redirects.invidious.tor], + invidiousI2pRedirectsChecks: [...redirects.invidious.i2p], + invidiousLokiRedirectsChecks: [...redirects.invidious.loki], + pipedNormalRedirectsChecks, + pipedTorRedirectsChecks: [...redirects.piped.tor], + pipedI2pRedirectsChecks: [...redirects.piped.i2p], + pipedLokiRedirectsChecks: [...redirects.piped.loki], + pipedMaterialNormalRedirectsChecks, + pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor], + pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p], + pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki], + cloudtubeNormalRedirectsChecks, + cloudtubeTorRedirectsChecks: [...redirects.cloudtube.tor], + cloudtubeI2pRedirectsChecks: [...redirects.cloudtube.i2p], + cloudtubeLokiRedirectsChecks: [...redirects.cloudtube.loki], + }, + () => resolve() + ) }) - }) + ) } let disableYoutube, diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js index 5d980cfe..757378f4 100644 --- a/src/assets/javascripts/youtubeMusic.js +++ b/src/assets/javascripts/youtubeMusic.js @@ -19,29 +19,34 @@ for (let i = 0; i < frontends.length; i++) { } function setRedirects(val) { - browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { - redirects = val - beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal] - hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal] - for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { - const a = beatbumpNormalRedirectsChecks.indexOf(instance) - if (a > -1) beatbumpNormalRedirectsChecks.splice(a, 1) + return new Promise(resolve => + browser.storage.local.get(["cloudflareBlackList", "offlineBlackList"], r => { + redirects = val + beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal] + hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal] + for (const instance of [...r.cloudflareBlackList, ...r.offlineBlackList]) { + const a = beatbumpNormalRedirectsChecks.indexOf(instance) + if (a > -1) beatbumpNormalRedirectsChecks.splice(a, 1) - const b = hyperpipeNormalRedirectsChecks.indexOf(instance) - if (b > -1) hyperpipeNormalRedirectsChecks.splice(b, 1) - } - browser.storage.local.set({ - youtubeMusicRedirects: redirects, - beatbumpNormalRedirectsChecks, - beatbumpTorRedirectsChecks: [...redirects.beatbump.tor], - beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p], - beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki], - hyperpipeNormalRedirectsChecks, - hyperpipeTorRedirectsChecks: [...redirects.hyperpipe.tor], - hyperpipeI2pRedirectsChecks: [...redirects.hyperpipe.i2p], - hyperpipeLokiRedirectsChecks: [...redirects.hyperpipe.loki], + const b = hyperpipeNormalRedirectsChecks.indexOf(instance) + if (b > -1) hyperpipeNormalRedirectsChecks.splice(b, 1) + } + browser.storage.local.set( + { + youtubeMusicRedirects: redirects, + beatbumpNormalRedirectsChecks, + beatbumpTorRedirectsChecks: [...redirects.beatbump.tor], + beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p], + beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki], + hyperpipeNormalRedirectsChecks, + hyperpipeTorRedirectsChecks: [...redirects.hyperpipe.tor], + hyperpipeI2pRedirectsChecks: [...redirects.hyperpipe.i2p], + hyperpipeLokiRedirectsChecks: [...redirects.hyperpipe.loki], + }, + () => resolve() + ) }) - }) + ) } let disableYoutubeMusic, diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index eab4a924..085d7273 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -661,7 +661,7 @@ for k1, v1 in mightyList.items(): cloudflare.append(instance) if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_authenticate(instance): authenticate.append(instance) - if not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_offline(instance): + elif not instance.endswith('.onion') and not instance.endswith('.i2p') and not instance.endswith('.loki') and is_offline(instance): offline.append(instance) peertube() diff --git a/src/pages/background/background.js b/src/pages/background/background.js index c6e9ab7a..39c10052 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -22,8 +22,11 @@ import sendTargetsHelper from "../../assets/javascripts/sendTargets.js" import peertubeHelper from "../../assets/javascripts/peertube.js" import lbryHelper from "../../assets/javascripts/lbry.js" +import frontend from "../../assets/javascripts/frontend.js" + window.browser = window.browser || window.chrome + browser.runtime.onInstalled.addListener(details => { function initDefaults() { fetch("/instances/blacklist.json") diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 077b3da2..b8541ff9 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -30,9 +30,9 @@ Medium -
Quora
-
IMDb
-
Reuters
+
Quora
+
IMDb
+
Reuters
PeerTube
LBRY
@@ -237,19 +237,19 @@
- Quora + Quora
- IMDb + IMDb
- Reuters + Reuters
@@ -1774,7 +1774,7 @@
-

Quora

+

Quora


@@ -1881,7 +1881,7 @@
-

IMDb

+

IMDb


@@ -1988,7 +1988,7 @@
-

Reuters

+

Reuters


@@ -3186,4 +3186,4 @@
- + \ No newline at end of file diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js index d6824251..61b422f4 100644 --- a/src/pages/options/widgets/general.js +++ b/src/pages/options/widgets/general.js @@ -36,15 +36,16 @@ updateInstancesElement.addEventListener("click", async () => { let exportSettingsElement = document.getElementById("export-settings") function exportSettings() { - browser.storage.local.get(null, result => { + return browser.storage.local.get(null, result => { let resultString = JSON.stringify(result, null, " ") exportSettingsElement.href = "data:application/json;base64," + btoa(encodeURI(resultString)) exportSettingsElement.download = "libredirect-settings.json" + return }) } exportSettings() -document.getElementById("general_page").addEventListener("click", exportSettings) +document.getElementById("general_page").onclick = exportSettings let importSettingsElement = document.getElementById("import-settings") let importSettingsElementText = document.getElementById("import_settings_text") @@ -82,28 +83,28 @@ resetSettings.addEventListener("click", async () => { .then(async data => { browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare }, () => { browser.storage.local.set({ offlineBlackList: JSON.parse(data).offline }, () => { - browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate }, async () => { - await generalHelper.initDefaults() - await youtubeHelper.initDefaults() - await youtubeMusicHelper.initDefaults() - await twitterHelper.initDefaults() - await instagramHelper.initDefaults() - await mapsHelper.initDefaults() - await searchHelper.initDefaults() - await translateHelper.initDefaults() - await mediumHelper.initDefaults() - await quoraHelper.initDefaults() - await libremdbHelper.initDefaults() - await reutersHelper.initDefaults() - await redditHelper.initDefaults() - await wikipediaHelper.initDefaults() - await imgurHelper.initDefaults() - await tiktokHelper.initDefaults() - await sendTargetsHelper.initDefaults() - await peertubeHelper.initDefaults() - await lbryHelper.initDefaults() - location.reload() - }) + browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate }, async () => { + await generalHelper.initDefaults() + await youtubeHelper.initDefaults() + await youtubeMusicHelper.initDefaults() + await twitterHelper.initDefaults() + await instagramHelper.initDefaults() + await mapsHelper.initDefaults() + await searchHelper.initDefaults() + await translateHelper.initDefaults() + await mediumHelper.initDefaults() + await quoraHelper.initDefaults() + await libremdbHelper.initDefaults() + await reutersHelper.initDefaults() + await redditHelper.initDefaults() + await wikipediaHelper.initDefaults() + await imgurHelper.initDefaults() + await tiktokHelper.initDefaults() + await sendTargetsHelper.initDefaults() + await peertubeHelper.initDefaults() + await lbryHelper.initDefaults() + location.reload() + }) }) }) }) diff --git a/src/pages/options/widgets/general.pug b/src/pages/options/widgets/general.pug index e523d5bb..891217ca 100644 --- a/src/pages/options/widgets/general.pug +++ b/src/pages/options/widgets/general.pug @@ -172,19 +172,19 @@ section#general_page.option-block div div img(src="../../../assets/images/quora.png") - x(data-localise="__MSG_quora__") Quora + x() Quora input#quora(type="checkbox") div div img(src="../../../assets/images/imdb.svg") - x(data-localise="__MSG_imdb__") IMDb + x IMDb input#imdb(type="checkbox") div div img(src="../../../assets/images/reuters.svg") - x(data-localise="__MSG_reuters__") Reuters + x Reuters input#reuters(type="checkbox") div diff --git a/src/pages/options/widgets/imdb.pug b/src/pages/options/widgets/imdb.pug index 008e1c00..257d2c1a 100644 --- a/src/pages/options/widgets/imdb.pug +++ b/src/pages/options/widgets/imdb.pug @@ -1,6 +1,6 @@ section#imdb_page.option-block .some-block.option-block - h1(data-localise="__MSG_imdb__") IMDb + h1() IMDb hr .some-block.option-block h4(data-localise="__MSG_enable__") Enable diff --git a/src/pages/options/widgets/quora.pug b/src/pages/options/widgets/quora.pug index 9e45abc9..addfe280 100644 --- a/src/pages/options/widgets/quora.pug +++ b/src/pages/options/widgets/quora.pug @@ -1,6 +1,6 @@ section#quora_page.option-block .some-block.option-block - h1(data-localise="__MSG_quora__") Quora + h1() Quora hr .some-block.option-block h4(data-localise="__MSG_enable__") Enable diff --git a/src/pages/options/widgets/reuters.pug b/src/pages/options/widgets/reuters.pug index 08a37d50..9ed6b3b9 100644 --- a/src/pages/options/widgets/reuters.pug +++ b/src/pages/options/widgets/reuters.pug @@ -1,6 +1,6 @@ section#reuters_page.option-block .some-block.option-block - h1(data-localise="__MSG_reuters__") Reuters + h1() Reuters hr .some-block.option-block h4(data-localise="__MSG_enable__") Enable diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html index 25f70f48..1c3f6ea2 100644 --- a/src/pages/popup/popup.html +++ b/src/pages/popup/popup.html @@ -50,15 +50,15 @@
-

Quora

+

Quora

-

IMDb

+

IMDb

-

Reuters

+

Reuters

@@ -144,15 +144,15 @@
-

Quora

+

Quora

-

IMDb

+

IMDb

-

Reuters

+

Reuters

diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug index 7da687cc..cc7fc7a2 100644 --- a/src/pages/popup/popup.pug +++ b/src/pages/popup/popup.pug @@ -58,19 +58,19 @@ mixin services .quora.some-block a.title(href="https://quora.com") img(src="../../assets/images/quora.png") - h4(data-localise="__MSG_quora__") Quora + h4() Quora input.disable-quora(type="checkbox") .imdb.some-block a.title(href="https://imdb.com") img(src="../../assets/images/imdb.svg") - h4(data-localise="__MSG_imdb__") IMDb + h4() IMDb input.disable-imdb(type="checkbox") .reuters.some-block a.title(href="https://reuters.com") img(src="../../assets/images/reuters.svg") - h4(data-localise="__MSG_reuters__") Reuters + h4() Reuters input.disable-reuters(type="checkbox") .peertube.some-block diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug index c7f8e0a6..37fe9375 100644 --- a/src/pages/widgets/links.pug +++ b/src/pages/widgets/links.pug @@ -44,15 +44,15 @@ mixin links(service) .title img(src="../../../assets/images/quora.png") - a(href="#quora" data-localise="__MSG_quora__") Quora + a(href="#quora" ) Quora .title img(src="../../../assets/images/imdb.svg") - a(href="#imdb" data-localise="__MSG_imdb__") IMDb + a(href="#imdb") IMDb .title img(src="../../../assets/images/reuters.svg") - a(href="#reuters" data-localise="__MSG_reuters__") Reuters + a(href="#reuters") Reuters .title img(src="../../../assets/images/peertube-icon.svg")