aboutsummaryrefslogtreecommitdiffstats
path: root/src/pages/background
diff options
context:
space:
mode:
authorHygna <hygna@proton.me>2022-10-04 19:10:07 +0100
committerHygna <hygna@proton.me>2022-10-04 19:10:07 +0100
commitc87bbba349ced5cbc5d9559fbf8af88f9557ad24 (patch)
treec8289fd3f245ee365310731f36b66be5405acd39 /src/pages/background
parentMerge branch 'optimizations' (diff)
downloadlibredirect-c87bbba349ced5cbc5d9559fbf8af88f9557ad24.zip
Ported 87d68cb662
Diffstat (limited to 'src/pages/background')
-rw-r--r--src/pages/background/background.js314
1 files changed, 33 insertions, 281 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 7186144b..cad08580 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,68 +1,25 @@
-<<<<<<< HEAD
"use strict"
import generalHelper from "../../assets/javascripts/general.js"
import utils from "../../assets/javascripts/utils.js"
-
-import youtubeHelper from "../../assets/javascripts/youtube/youtube.js"
-import youtubeMusicHelper from "../../assets/javascripts/youtubeMusic.js"
-import twitterHelper from "../../assets/javascripts/twitter.js"
-import instagramHelper from "../../assets/javascripts/instagram.js"
-import redditHelper from "../../assets/javascripts/reddit.js"
-import searchHelper from "../../assets/javascripts/search.js"
-import translateHelper from "../../assets/javascripts/translate/translate.js"
-import mapsHelper from "../../assets/javascripts/maps.js"
-import wikipediaHelper from "../../assets/javascripts/wikipedia.js"
-import mediumHelper from "../../assets/javascripts/medium.js"
-import quoraHelper from "../../assets/javascripts/quora.js"
-import libremdbHelper from "../../assets/javascripts/imdb.js"
-import reutersHelper from "../../assets/javascripts/reuters.js"
-import imgurHelper from "../../assets/javascripts/imgur.js"
-import tiktokHelper from "../../assets/javascripts/tiktok.js"
-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"
+import servicesHelper from "../../assets/javascripts/services.js"
window.browser = window.browser || window.chrome
-browser.runtime.onInstalled.addListener(details => {
- function initDefaults() {
+function initDefaults() {
+ browser.storage.local.clear(() => {
fetch("/instances/blacklist.json")
.then(response => response.text())
.then(async data => {
- browser.storage.local.clear(() => {
- browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare }, () => {
- browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate }, () => {
- browser.storage.local.set({ offlineBlackList: JSON.parse(data).offline }, () => {
- generalHelper.initDefaults()
- youtubeHelper.initDefaults()
- youtubeMusicHelper.initDefaults()
- twitterHelper.initDefaults()
- instagramHelper.initDefaults()
- mapsHelper.initDefaults()
- searchHelper.initDefaults()
- translateHelper.initDefaults()
- mediumHelper.initDefaults()
- quoraHelper.initDefaults()
- libremdbHelper.initDefaults()
- reutersHelper.initDefaults()
- redditHelper.initDefaults()
- wikipediaHelper.initDefaults()
- imgurHelper.initDefaults()
- tiktokHelper.initDefaults()
- sendTargetsHelper.initDefaults()
- peertubeHelper.initDefaults()
- lbryHelper.initDefaults()
- })
- })
- })
+ browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
+ await generalHelper.initDefaults()
+ await servicesHelper.initDefaults()
})
})
- }
- if (details.reason == "install") initDefaults()
+ })
+}
+browser.runtime.onInstalled.addListener(details => {
// if (details.reason == 'install' || (details.reason == "update" && details.previousVersion != browser.runtime.getManifest().version)) {
// if (details.reason == "update")
// browser.storage.local.get(null, r => {
@@ -74,6 +31,25 @@ browser.runtime.onInstalled.addListener(details => {
// })
// else initDefaults();
// }
+ switch (details.reason) {
+ case "install":
+ initDefaults()
+ break
+ case "update":
+ fetch("/instances/blacklist.json")
+ .then(response => response.text())
+ .then(async data => {
+ browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
+ switch (details.previousVersion) {
+ case "2.2.1":
+ await generalHelper.initDefaults()
+ await servicesHelper.initDefaults()
+ await servicesHelper.upgradeOptions()
+ break
+ }
+ })
+ })
+ }
})
let BYPASSTABs = []
@@ -89,24 +65,7 @@ browser.webRequest.onBeforeRequest.addListener(
return null
}
- let newUrl = youtubeMusicHelper.redirect(url, details.type)
- if (!newUrl) newUrl = youtubeHelper.redirect(url, details.type, details.tabId, initiator)
- if (!newUrl) newUrl = twitterHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = instagramHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = mapsHelper.redirect(url, initiator)
- if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = quoraHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = libremdbHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = reutersHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = peertubeHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = lbryHelper.redirect(url, details.type, initiator)
- if (!newUrl) newUrl = translateHelper.redirect(url)
- if (!newUrl) newUrl = searchHelper.redirect(url)
- if (!newUrl) newUrl = wikipediaHelper.redirect(url)
+ let newUrl = servicesHelper.redirect(url, details.type, initiator)
if (details.frameAncestors && details.frameAncestors.length > 0 && generalHelper.isException(new URL(details.frameAncestors[0].url))) newUrl = null
@@ -140,6 +99,7 @@ browser.tabs.onRemoved.addListener(tabId => {
}
})
+/*
browser.webRequest.onHeadersReceived.addListener(
e => {
let response = youtubeHelper.removeXFrameOptions(e)
@@ -149,23 +109,10 @@ browser.webRequest.onHeadersReceived.addListener(
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
)
+*/
async function redirectOfflineInstance(url, tabId) {
- let newUrl = await youtubeHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await twitterHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await instagramHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await redditHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await searchHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await translateHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await mediumHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await quoraHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await libremdbHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await tiktokHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url, true)
- if (!newUrl) newUrl = await youtubeMusicHelper.switchInstance(url, true)
+ let newUrl = await servicesHelper.switchInstance(url, true)
if (newUrl) {
if (counter >= 5) {
@@ -182,7 +129,7 @@ async function redirectOfflineInstance(url, tabId) {
let counter = 0
function isAutoRedirect() {
- return new Promise(resolve => browser.storage.local.get("autoRedirect", r => resolve(r.autoRedirect == true)))
+ return new Promise(resolve => browser.storage.local.get("options", r => resolve(r.options.autoRedirect == true)))
}
browser.webRequest.onResponseStarted.addListener(
@@ -242,198 +189,3 @@ browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.function === "unify") utils.unify(false).then(r => sendResponse({ response: r }))
return true
})
-
-browser.storage.local.set({ version: browser.runtime.getManifest().version })
-=======
-"use strict"
-
-import generalHelper from "../../assets/javascripts/general.js"
-import utils from "../../assets/javascripts/utils.js"
-import servicesHelper from "../../assets/javascripts/services.js"
-
-window.browser = window.browser || window.chrome
-
-function initDefaults() {
- browser.storage.local.clear(() => {
- fetch("/instances/blacklist.json")
- .then(response => response.text())
- .then(async data => {
- browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
- await generalHelper.initDefaults()
- await servicesHelper.initDefaults()
- })
- })
- })
-}
-
-browser.runtime.onInstalled.addListener(details => {
- // if (details.reason == 'install' || (details.reason == "update" && details.previousVersion != browser.runtime.getManifest().version)) {
- // if (details.reason == "update")
- // browser.storage.local.get(null, r => {
- // if (r.theme) {
- // const old = encodeURIComponent(JSON.stringify(r))
- // browser.tabs.create({ url: browser.runtime.getURL(`/pages/background/reset_warning.html?data=${old}`) });
- // }
- // initDefaults();
- // })
- // else initDefaults();
- // }
- switch (details.reason) {
- case "install":
- initDefaults()
- break
- case "update":
- fetch("/instances/blacklist.json")
- .then(response => response.text())
- .then(async data => {
- browser.storage.local.set({ blacklists: JSON.parse(data) }, async () => {
- switch (details.previousVersion) {
- case "2.2.1":
- await generalHelper.initDefaults()
- await servicesHelper.initDefaults()
- await servicesHelper.upgradeOptions()
- break
- }
- })
- })
- }
-})
-
-let BYPASSTABs = []
-browser.webRequest.onBeforeRequest.addListener(
- details => {
- const url = new URL(details.url)
- if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/.*.json$/).test(url.href) && details.type == "xmlhttprequest") return
- let initiator
- try {
- if (details.originUrl) initiator = new URL(details.originUrl)
- else if (details.initiator) initiator = new URL(details.initiator)
- } catch {
- return null
- }
-
- let newUrl = servicesHelper.redirect(url, details.type, initiator)
-
- if (details.frameAncestors && details.frameAncestors.length > 0 && generalHelper.isException(new URL(details.frameAncestors[0].url))) newUrl = null
-
- if (generalHelper.isException(url)) newUrl = "BYPASSTAB"
- if (BYPASSTABs.includes(details.tabId)) newUrl = null
-
- if (newUrl) {
- if (newUrl === "CANCEL") {
- console.log(`Canceled ${url}`)
- return { cancel: true }
- }
- if (newUrl === "BYPASSTAB") {
- console.log(`Bypassed ${details.tabId} ${url}`)
- if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId)
- return null
- }
- console.info("Redirecting", url.href, "=>", newUrl)
- return { redirectUrl: newUrl }
- }
- return null
- },
- { urls: ["<all_urls>"] },
- ["blocking"]
-)
-
-browser.tabs.onRemoved.addListener(tabId => {
- const i = BYPASSTABs.indexOf(tabId)
- if (i > -1) {
- BYPASSTABs.splice(i, 1)
- console.log("Removed BYPASSTABs", tabId)
- }
-})
-
-/*
-browser.webRequest.onHeadersReceived.addListener(
- e => {
- let response = youtubeHelper.removeXFrameOptions(e)
- if (!response) response = twitterHelper.removeXFrameOptions(e)
- return response
- },
- { urls: ["<all_urls>"] },
- ["blocking", "responseHeaders"]
-)
-*/
-
-async function redirectOfflineInstance(url, tabId) {
- let newUrl = await servicesHelper.switchInstance(url, true)
-
- if (newUrl) {
- if (counter >= 5) {
- browser.tabs.update(tabId, {
- url: `/pages/errors/instance_offline.html?url=${encodeURIComponent(newUrl)}`,
- })
- counter = 0
- } else {
- browser.tabs.update(tabId, { url: newUrl })
- counter++
- }
- }
-}
-let counter = 0
-
-function isAutoRedirect() {
- return new Promise(resolve => browser.storage.local.get("options", r => resolve(r.options.autoRedirect == true)))
-}
-
-browser.webRequest.onResponseStarted.addListener(
- async details => {
- if (!(await isAutoRedirect())) return null
- if (details.type == "main_frame" && details.statusCode >= 500) redirectOfflineInstance(new URL(details.url), details.tabId)
- },
- { urls: ["<all_urls>"] }
-)
-
-browser.webRequest.onErrorOccurred.addListener(
- async details => {
- if (!(await isAutoRedirect())) return
- if (details.type == "main_frame") redirectOfflineInstance(new URL(details.url), details.tabId)
- },
- { urls: ["<all_urls>"] }
-)
-
-browser.commands.onCommand.addListener(command => {
- if (command === "switchInstance") utils.switchInstance()
- else if (command == "copyRaw") utils.copyRaw()
- else if (command == "unify") utils.unify()
-})
-
-browser.contextMenus.create({
- id: "settings",
- title: browser.i18n.getMessage("Settings"),
- contexts: ["browser_action"],
-})
-
-browser.contextMenus.create({
- id: "switchInstance",
- title: browser.i18n.getMessage("switchInstance"),
- contexts: ["browser_action"],
-})
-
-browser.contextMenus.create({
- id: "copyRaw",
- title: browser.i18n.getMessage("copyRaw"),
- contexts: ["browser_action"],
-})
-
-browser.contextMenus.create({
- id: "unify",
- title: browser.i18n.getMessage("unifySettings"),
- contexts: ["browser_action"],
-})
-
-browser.contextMenus.onClicked.addListener(info => {
- if (info.menuItemId == "switchInstance") utils.switchInstance()
- else if (info.menuItemId == "settings") browser.runtime.openOptionsPage()
- else if (info.menuItemId == "copyRaw") utils.copyRaw()
- else if (info.menuItemId == "unify") utils.unify()
-})
-
-browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
- if (message.function === "unify") utils.unify(false).then(r => sendResponse({ response: r }))
- return true
-})
->>>>>>> optimizations