about summary refs log tree commit diff stats
path: root/src/pages/background/background.js
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
committerManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
commita9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch)
tree2cb69c855b36e82128a00e5895d5f5409d5e0a5e /src/pages/background/background.js
parentMerge branch 'BobIsMyManager-librex' (diff)
parent, (diff)
downloadlibredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to 'src/pages/background/background.js')
-rw-r--r--src/pages/background/background.js459
1 files changed, 224 insertions, 235 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 293a2c84..359a912d 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -1,263 +1,252 @@
-"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";
-
-
-window.browser = window.browser || window.chrome;
-
-browser.runtime.onInstalled.addListener(
-  details => {
-    function initDefaults() {
-      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 },
-                  () => {
-                    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();
-                  })
-              })
-          });
-      })
-    };
-    if (details.reason == 'install') initDefaults();
-
-    // 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();
-    // }
-  }
-)
-
-youtubeHelper.pasteInvidiousCookies();
-translateHelper.pasteSimplyTranslateCookies();
-twitterHelper.pasteNitterCookies();
-wikipediaHelper.pasteWikilessCookies();
-searchHelper.pasteSearxCookies();
-searchHelper.pasteSearxngCookies();
-searchHelper.pasteLibrexCookies();
-redditHelper.pasteLibredditCookies();
-redditHelper.pasteTedditCookies();
-tiktokHelper.pasteProxiTokCookies();
-
-
-let BYPASSTABs = [];
+"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"
+
+window.browser = window.browser || window.chrome
+
+browser.runtime.onInstalled.addListener(details => {
+	function initDefaults() {
+		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 }, () => {
+							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()
+						})
+					})
+				})
+			})
+	}
+	if (details.reason == "install") initDefaults()
+
+	// 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();
+	// }
+})
+
+youtubeHelper.pasteInvidiousCookies()
+translateHelper.pasteSimplyTranslateCookies()
+twitterHelper.pasteNitterCookies()
+wikipediaHelper.pasteWikilessCookies()
+searchHelper.pasteSearxCookies()
+searchHelper.pasteSearxngCookies()
+searchHelper.pasteLibrexCookies()
+redditHelper.pasteLibredditCookies()
+redditHelper.pasteTedditCookies()
+tiktokHelper.pasteProxiTokCookies()
+
+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 = youtubeMusicHelper.redirect(url, details.type)
-    if (!newUrl) newUrl = youtubeHelper.redirect(url, details.type, 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);
-
-    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"]
-);
+	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 = youtubeMusicHelper.redirect(url, details.type)
+		if (!newUrl) newUrl = youtubeHelper.redirect(url, details.type, 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)
+
+		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.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"]
-);
+	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 youtubeHelper.switchInstance(url);
-  if (!newUrl) newUrl = await twitterHelper.switchInstance(url);
-  if (!newUrl) newUrl = await instagramHelper.switchInstance(url);
-  if (!newUrl) newUrl = await redditHelper.switchInstance(url);
-  if (!newUrl) newUrl = await searchHelper.switchInstance(url);
-  if (!newUrl) newUrl = await translateHelper.switchInstance(url);
-  if (!newUrl) newUrl = await mediumHelper.switchInstance(url);
-  if (!newUrl) newUrl = await quoraHelper.switchInstance(url);
-  if (!newUrl) newUrl = await libremdbHelper.switchInstance(url);
-  if (!newUrl) newUrl = await tiktokHelper.switchInstance(url);
-  if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
-  if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
-  if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
-  if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
-
-  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 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)
+
+	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;
+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("autoRedirect", r => resolve(r.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>"] }
+	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>"] }
+	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.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"]
-});
+	id: "settings",
+	title: browser.i18n.getMessage("Settings"),
+	contexts: ["browser_action"],
+})
 
 browser.contextMenus.create({
-  id: "switchInstance",
-  title: browser.i18n.getMessage("switchInstance"),
-  contexts: ["browser_action"]
-});
+	id: "switchInstance",
+	title: browser.i18n.getMessage("switchInstance"),
+	contexts: ["browser_action"],
+})
 
 browser.contextMenus.create({
-  id: "copyRaw",
-  title: browser.i18n.getMessage("copyRaw"),
-  contexts: ["browser_action"]
-});
+	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();
-  }
-);
+	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;
-});
+	if (message.function === "unify") utils.unify(false).then(r => sendResponse({ response: r }))
+	return true
+})
 
-browser.storage.local.set({"version": browser.runtime.getManifest().version})
+browser.storage.local.set({ version: browser.runtime.getManifest().version })