aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets
diff options
context:
space:
mode:
authorBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-26 22:28:50 +0100
committerBobIsMyManager <bimmgitsignature.nly8m@simplelogin.co>2022-07-26 22:28:50 +0100
commit2a0596f08fb54e2faef4bcb4548a28f5837fc067 (patch)
treecf5851f95c37da269a561623cee0d3967ca321ec /src/assets
parentI should really inspect diffs before commiting (diff)
downloadlibredirect-2a0596f08fb54e2faef4bcb4548a28f5837fc067.zip
Many things
Made all instances updateable Added hyperpipe Closes https://github.com/libredirect/libredirect/issues/398 Added cloudtube Closes https://github.com/libredirect/libredirect/issues/397 Start using prettier
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/general.js110
-rw-r--r--src/assets/javascripts/imdb.js307
-rw-r--r--src/assets/javascripts/imgur.js333
-rw-r--r--src/assets/javascripts/instagram.js318
-rw-r--r--src/assets/javascripts/lbry.js262
-rw-r--r--src/assets/javascripts/localise.js46
-rw-r--r--src/assets/javascripts/maps.js459
-rw-r--r--src/assets/javascripts/medium.js342
-rw-r--r--src/assets/javascripts/peertube.js313
-rw-r--r--src/assets/javascripts/quora.js294
-rw-r--r--src/assets/javascripts/reddit.js762
-rw-r--r--src/assets/javascripts/reuters.js234
-rw-r--r--src/assets/javascripts/search.js1139
-rw-r--r--src/assets/javascripts/sendTargets.js288
-rw-r--r--src/assets/javascripts/tiktok.js389
-rw-r--r--src/assets/javascripts/translate/get_lingva_preferences.js18
-rw-r--r--src/assets/javascripts/translate/set_lingva_preferences.js24
-rw-r--r--src/assets/javascripts/translate/translate.js674
-rw-r--r--src/assets/javascripts/twitter.js495
-rw-r--r--src/assets/javascripts/utils.js820
-rw-r--r--src/assets/javascripts/wikipedia.js420
-rw-r--r--src/assets/javascripts/youtube/get_pipedMaterial_preferences.js10
-rw-r--r--src/assets/javascripts/youtube/get_piped_preferences.js44
-rw-r--r--src/assets/javascripts/youtube/set_pipedMaterial_preferences.js13
-rw-r--r--src/assets/javascripts/youtube/set_piped_preferences.js84
-rw-r--r--src/assets/javascripts/youtube/youtube.js1257
-rw-r--r--src/assets/javascripts/youtubeMusic.js354
27 files changed, 5235 insertions, 4574 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index 1c27a55d..0b34c148 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -1,78 +1,66 @@
-"use strict";
-window.browser = window.browser || window.chrome;
+"use strict"
+window.browser = window.browser || window.chrome
function isException(url) {
- for (const item of exceptions.url)
- if (item == `${url.protocol}//${url.host}`) return true;
- for (const item of exceptions.regex)
- if (new RegExp(item).test(url.href)) return true;
- return false;
+ for (const item of exceptions.url) if (item == `${url.protocol}//${url.host}`) return true
+ for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true
+ return false
}
-let exceptions;
+let exceptions
function init() {
- browser.storage.local.get(
- 'exceptions',
- r => {
- exceptions = r.exceptions;
- }
- )
+ browser.storage.local.get("exceptions", r => {
+ exceptions = r.exceptions
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- exceptions: {
- "url": [],
- "regex": [],
- },
- theme: "DEFAULT",
- popupFrontends: [
- "youtube",
- "twitter",
- "instagram",
- "tiktok",
- "imgur",
- "reddit",
- "quora",
- "translate",
- "maps",
- ],
- autoRedirect: false,
- firstPartyIsolate: false,
- protocol: "normal",
- protocolFallback: true
- }, () => resolve())
- )
+ return new Promise(resolve =>
+ browser.storage.local.set(
+ {
+ exceptions: {
+ url: [],
+ regex: [],
+ },
+ theme: "DEFAULT",
+ popupFrontends: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"],
+ autoRedirect: false,
+ firstPartyIsolate: false,
+ protocol: "normal",
+ protocolFallback: true,
+ },
+ () => resolve()
+ )
+ )
}
const allPopupFrontends = [
- "youtube",
- "youtubeMusic",
- "twitter",
- "instagram",
- "tiktok",
- "imgur",
- "reddit",
- "search",
- "translate",
- "maps",
- "wikipedia",
- "medium",
- "quora",
- "imdb",
- "reuters",
- "peertube",
- "lbry",
- "sendTargets"
-];
+ "youtube",
+ "youtubeMusic",
+ "twitter",
+ "instagram",
+ "tiktok",
+ "imgur",
+ "reddit",
+ "search",
+ "translate",
+ "maps",
+ "wikipedia",
+ "medium",
+ "quora",
+ "imdb",
+ "reuters",
+ "peertube",
+ "lbry",
+ "sendTargets",
+]
export default {
- isException,
- initDefaults,
- allPopupFrontends,
+ isException,
+ initDefaults,
+ allPopupFrontends,
}
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 2a8ac2f6..9981f1b9 100644
--- a/src/assets/javascripts/imdb.js
+++ b/src/assets/javascripts/imdb.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(?:www\.|)imdb\.com.*/
-];
+const targets = [/^https?:\/{2}(?:www\.|)imdb\.com.*/]
const frontends = new Array("libremdb")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -12,182 +10,197 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.libremdb = val;
- libremdbNormalRedirectsChecks = [...redirects.libremdb.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = libremdbNormalRedirectsChecks.indexOf(instance);
- if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- imdbRedirects: redirects,
- libremdbNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.libremdb = val
+ libremdbNormalRedirectsChecks = [...redirects.libremdb.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = libremdbNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ imdbRedirects: redirects,
+ libremdbNormalRedirectsChecks,
+ })
+ })
}
-let
- disableImdb,
- protocol,
- protocolFallback,
- imdbRedirects,
- libremdbNormalRedirectsChecks,
- libremdbNormalCustomRedirects,
- libremdbTorRedirectsChecks,
- libremdbTorCustomRedirects,
- libremdbI2pCustomRedirects,
- libremdbLokiCustomRedirects;
+let disableImdb,
+ protocol,
+ protocolFallback,
+ imdbRedirects,
+ libremdbNormalRedirectsChecks,
+ libremdbNormalCustomRedirects,
+ libremdbTorRedirectsChecks,
+ libremdbTorCustomRedirects,
+ libremdbI2pCustomRedirects,
+ libremdbLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableImdb",
- "protocol",
- "protocolFallback",
- "imdbRedirects",
- "libremdbNormalRedirectsChecks",
- "libremdbNormalCustomRedirects",
- "libremdbTorRedirectsChecks",
- "libremdbTorCustomRedirects",
- "libremdbI2pCustomRedirects",
- "libremdbLokiCustomRedirects"
- ],
- r => {
- disableImdb = r.disableImdb;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- imdbRedirects = r.imdbRedirects;
- libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks;
- libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects;
- libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks;
- libremdbTorCustomRedirects = r.libremdbTorCustomRedirects;
- libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects;
- libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableImdb",
+ "protocol",
+ "protocolFallback",
+ "imdbRedirects",
+ "libremdbNormalRedirectsChecks",
+ "libremdbNormalCustomRedirects",
+ "libremdbTorRedirectsChecks",
+ "libremdbTorCustomRedirects",
+ "libremdbI2pCustomRedirects",
+ "libremdbLokiCustomRedirects",
+ ],
+ r => {
+ disableImdb = r.disableImdb
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ imdbRedirects = r.imdbRedirects
+ libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks
+ libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects
+ libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks
+ libremdbTorCustomRedirects = r.libremdbTorCustomRedirects
+ libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects
+ libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableImdb && !disableOverride) return;
- if (url.pathname == "/") return;
- if (type != "main_frame") return;
- const all = [
- ...imdbRedirects.libremdb.normal,
- ...libremdbNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableImdb && !disableOverride) return
+ if (url.pathname == "/") return
+ if (type != "main_frame") return
+ const all = [...imdbRedirects.libremdb.normal, ...libremdbNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...imdbRedirects.libremdb.normal,
- ...imdbRedirects.libremdb.tor,
- ...libremdbNormalCustomRedirects,
- ...libremdbTorCustomRedirects,
- ...libremdbI2pCustomRedirects,
- ...libremdbLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...imdbRedirects.libremdb.normal,
+ ...imdbRedirects.libremdb.tor,
+ ...libremdbNormalCustomRedirects,
+ ...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://imdb.com${url.pathname}${url.search}`);
- })
+ resolve(`https://imdb.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableImdb && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...imdbRedirects.libremdb.tor,
- ...imdbRedirects.libremdb.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableImdb && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...imdbRedirects.libremdb.tor,
+ ...imdbRedirects.libremdb.normal,
- ...libremdbNormalCustomRedirects,
- ...libremdbTorCustomRedirects,
- ...libremdbI2pCustomRedirects,
- ...libremdbLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...libremdbNormalCustomRedirects,
+ ...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableImdb: true,
- imdbRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableImdb: true,
+ imdbRedirects: redirects,
- libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
- libremdbNormalCustomRedirects: [],
+ libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
+ libremdbNormalCustomRedirects: [],
- libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
- libremdbTorCustomRedirects: [],
+ libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
+ libremdbTorCustomRedirects: [],
- libremdbI2pRedirectsChecks: [],
- libremdbI2pCustomRedirects: [],
+ libremdbI2pRedirectsChecks: [],
+ libremdbI2pCustomRedirects: [],
- libremdbLokiRedirectsChecks: [],
- libremdbLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ libremdbLokiRedirectsChecks: [],
+ libremdbLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js
index f373276f..9ccd24af 100644
--- a/src/assets/javascripts/imgur.js
+++ b/src/assets/javascripts/imgur.js
@@ -1,6 +1,6 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
const targets = /^https?:\/{2}([im]\.)?imgur\.(com|io)(\/|$)/
@@ -10,91 +10,95 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- redirects.rimgo = dataJson.rimgo;
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ redirects.rimgo = dataJson.rimgo
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- rimgoTorRedirectsChecks = [...redirects.rimgo.tor];
- rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p];
+ rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+ rimgoTorRedirectsChecks = [...redirects.rimgo.tor]
+ rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p]
- for (const instance of r.cloudflareBlackList) {
- const a = rimgoNormalRedirectsChecks.indexOf(instance);
- if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1);
+ for (const instance of r.cloudflareBlackList) {
+ const a = rimgoNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1)
- const b = rimgoTorRedirectsChecks.indexOf(instance);
- if (b > -1) rimgoTorRedirectsChecks.splice(b, 1);
+ const b = rimgoTorRedirectsChecks.indexOf(instance)
+ if (b > -1) rimgoTorRedirectsChecks.splice(b, 1)
- const c = rimgoI2pRedirectsChecks.indexOf(instance);
- if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1);
- }
+ const c = rimgoI2pRedirectsChecks.indexOf(instance)
+ if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1)
+ }
- browser.storage.local.set({
- imgurRedirects: redirects,
- rimgoNormalRedirectsChecks,
- rimgoTorRedirectsChecks,
- rimgoI2pRedirectsChecks,
- }, () => resolve());
- })
- })
+ browser.storage.local.set(
+ {
+ imgurRedirects: redirects,
+ rimgoNormalRedirectsChecks,
+ rimgoTorRedirectsChecks,
+ rimgoI2pRedirectsChecks,
+ },
+ () => resolve()
+ )
+ })
+ })
}
-let
- disableImgur,
- imgurRedirects,
- protocol,
- protocolFallback,
- rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects,
- rimgoTorRedirectsChecks,
- rimgoTorCustomRedirects,
- rimgoI2pRedirectsChecks,
- rimgoI2pCustomRedirects,
- rimgoLokiCustomRedirects;
+let disableImgur,
+ imgurRedirects,
+ protocol,
+ protocolFallback,
+ rimgoNormalRedirectsChecks,
+ rimgoNormalCustomRedirects,
+ rimgoTorRedirectsChecks,
+ rimgoTorCustomRedirects,
+ rimgoI2pRedirectsChecks,
+ rimgoI2pCustomRedirects,
+ rimgoLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableImgur",
- "imgurRedirects",
- "protocol",
- "protocolFallback",
- "rimgoNormalRedirectsChecks",
- "rimgoNormalCustomRedirects",
- "rimgoTorRedirectsChecks",
- "rimgoTorCustomRedirects",
- "rimgoI2pRedirectsChecks",
- "rimgoI2pCustomRedirects",
- "rimgoLokiCustomRedirects"
- ],
- r => {
- disableImgur = r.disableImgur;
- imgurRedirects = r.imgurRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks;
- rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects;
- rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks;
- rimgoTorCustomRedirects = r.rimgoTorCustomRedirects;
- rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks;
- rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects;
- rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableImgur",
+ "imgurRedirects",
+ "protocol",
+ "protocolFallback",
+ "rimgoNormalRedirectsChecks",
+ "rimgoNormalCustomRedirects",
+ "rimgoTorRedirectsChecks",
+ "rimgoTorCustomRedirects",
+ "rimgoI2pRedirectsChecks",
+ "rimgoI2pCustomRedirects",
+ "rimgoLokiCustomRedirects",
+ ],
+ r => {
+ disableImgur = r.disableImgur
+ imgurRedirects = r.imgurRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks
+ rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects
+ rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks
+ rimgoTorCustomRedirects = r.rimgoTorCustomRedirects
+ rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks
+ rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects
+ rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
// https://imgur.com/gallery/s4WXQmn
@@ -104,108 +108,127 @@ browser.storage.onChanged.addListener(init)
// https://i.imgur.com/CFSQArP.jpeg
function all() {
- return [
- ...imgurRedirects.rimgo.normal,
- ...imgurRedirects.rimgo.tor,
- ...imgurRedirects.rimgo.i2p,
- ...rimgoNormalCustomRedirects,
- ...rimgoTorCustomRedirects,
- ...rimgoI2pCustomRedirects,
- ...rimgoLokiCustomRedirects
- ];
+ return [
+ ...imgurRedirects.rimgo.normal,
+ ...imgurRedirects.rimgo.tor,
+ ...imgurRedirects.rimgo.i2p,
+ ...rimgoNormalCustomRedirects,
+ ...rimgoTorCustomRedirects,
+ ...rimgoI2pCustomRedirects,
+ ...rimgoLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableImgur && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) return;
- if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return;
- if (!targets.test(url.href)) return;
- if (url.pathname.includes("delete/")) return;
+ if (disableImgur && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
+ if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return
+ if (!targets.test(url.href)) return
+ if (url.pathname.includes("delete/")) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://imgur.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://imgur.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableImgur && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableImgur && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- rimgoNormalRedirectsChecks = [...redirects.rimgo.normal];
- for (const instance of r.cloudflareBlackList) {
- const i = rimgoNormalRedirectsChecks.indexOf(instance);
- if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableImgur: false,
- imgurRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = rimgoNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableImgur: false,
+ imgurRedirects: redirects,
- rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
- rimgoNormalCustomRedirects: [],
+ rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
+ rimgoNormalCustomRedirects: [],
- rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
- rimgoTorCustomRedirects: [],
+ rimgoTorRedirectsChecks: [...redirects.rimgo.tor],
+ rimgoTorCustomRedirects: [],
- rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
- rimgoI2pCustomRedirects: [],
+ rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
+ rimgoI2pCustomRedirects: [],
- rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
- rimgoLokiCustomRedirects: []
- }, () => resolve());
- });
- });
- });
+ rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
+ rimgoLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- reverse,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ redirect,
+ reverse,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js
index 182ff4d9..2e4503e7 100644
--- a/src/assets/javascripts/instagram.js
+++ b/src/assets/javascripts/instagram.js
@@ -1,200 +1,208 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
-const targets = [
- "instagram.com",
- "www.instagram.com",
-];
+const targets = ["instagram.com", "www.instagram.com"]
const frontends = new Array("bibliogram")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', async r => {
- redirects.bibliogram = val;
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- instagramRedirects: redirects,
- bibliogramNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ redirects.bibliogram = val
+ bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = bibliogramNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ instagramRedirects: redirects,
+ bibliogramNormalRedirectsChecks,
+ })
+ })
}
-let
- disableInstagram,
- protocol,
- protocolFallback,
- instagramRedirects,
- bibliogramNormalRedirectsChecks,
- bibliogramTorRedirectsChecks,
- bibliogramNormalCustomRedirects,
- bibliogramTorCustomRedirects,
- bibliogramI2pCustomRedirects,
- bibliogramLokiCustomRedirects;
+let disableInstagram,
+ protocol,
+ protocolFallback,
+ instagramRedirects,
+ bibliogramNormalRedirectsChecks,
+ bibliogramTorRedirectsChecks,
+ bibliogramNormalCustomRedirects,
+ bibliogramTorCustomRedirects,
+ bibliogramI2pCustomRedirects,
+ bibliogramLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableInstagram",
- "protocol",
- "protocolFallback",
- "instagramRedirects",
- "bibliogramNormalRedirectsChecks",
- "bibliogramTorRedirectsChecks",
- "bibliogramNormalCustomRedirects",
- "bibliogramTorCustomRedirects",
- "bibliogramI2pCustomRedirects",
- "bibliogramLokiCustomRedirects"
- ],
- r => {
- disableInstagram = r.disableInstagram;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- instagramRedirects = r.instagramRedirects;
- bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks;
- bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks;
- bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects;
- bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects;
- bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects;
- bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableInstagram",
+ "protocol",
+ "protocolFallback",
+ "instagramRedirects",
+ "bibliogramNormalRedirectsChecks",
+ "bibliogramTorRedirectsChecks",
+ "bibliogramNormalCustomRedirects",
+ "bibliogramTorCustomRedirects",
+ "bibliogramI2pCustomRedirects",
+ "bibliogramLokiCustomRedirects",
+ ],
+ r => {
+ disableInstagram = r.disableInstagram
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ instagramRedirects = r.instagramRedirects
+ bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks
+ bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks
+ bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects
+ bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects
+ bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects
+ bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...instagramRedirects.bibliogram.normal,
- ...instagramRedirects.bibliogram.tor,
- ...bibliogramNormalCustomRedirects,
- ...bibliogramTorCustomRedirects,
- ...bibliogramI2pCustomRedirects,
- ...bibliogramLokiCustomRedirects
- ]
+ return [
+ ...instagramRedirects.bibliogram.normal,
+ ...instagramRedirects.bibliogram.tor,
+ ...bibliogramNormalCustomRedirects,
+ ...bibliogramTorCustomRedirects,
+ ...bibliogramI2pCustomRedirects,
+ ...bibliogramLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableInstagram && !disableOverride) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (!targets.includes(url.host)) return;
- if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
+ if (disableInstagram && !disableOverride) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (!targets.includes(url.host)) return
+ if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
- const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/];
- if (bypassPaths.some(rx => rx.test(url.pathname))) return;
+ const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/]
+ if (bypassPaths.some(rx => rx.test(url.pathname))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
- let randomInstance = utils.getRandomInstance(instancesList)
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
+ let randomInstance = utils.getRandomInstance(instancesList)
- const reservedPaths = ["u", "p", "privacy",];
- if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1]))
- return `${randomInstance}${url.pathname}${url.search}`;
- if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv"))
- return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`;
- else
- return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
+ const reservedPaths = ["u", "p", "privacy"]
+ if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1])) return `${randomInstance}${url.pathname}${url.search}`
+ if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv")) return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, "")}${url.search}`
+ else return `${randomInstance}/u${url.pathname}${url.search}` // Likely a user profile, redirect to '/u/...'
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- if (url.pathname.startsWith('/p')) resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`);
- if (url.pathname.startsWith('/u')) resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`);
- resolve(`https://instagram.com${url.pathname}${url.search}`);
- })
+ if (url.pathname.startsWith("/p")) resolve(`https://instagram.com${url.pathname.replace("/p", "")}${url.search}`)
+ if (url.pathname.startsWith("/u")) resolve(`https://instagram.com${url.pathname.replace("/u", "")}${url.search}`)
+ resolve(`https://instagram.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableInstagram && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableInstagram && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', r => {
- bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal];
- for (const instance of r.cloudflareBlackList) {
- const i = bibliogramNormalRedirectsChecks.indexOf(instance);
- if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableInstagram: false,
- instagramRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", r => {
+ bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = bibliogramNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ disableInstagram: false,
+ instagramRedirects: redirects,
- bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
- bibliogramNormalCustomRedirects: [],
+ bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
+ bibliogramNormalCustomRedirects: [],
- bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
- bibliogramTorCustomRedirects: [],
+ bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
+ bibliogramTorCustomRedirects: [],
- bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
- bibliogramI2pCustomRedirects: [],
+ bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
+ bibliogramI2pCustomRedirects: [],
- bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
- bibliogramLokiCustomRedirects: []
- })
- resolve();
- }
- )
- })
- })
+ bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
+ bibliogramLokiCustomRedirects: [],
+ })
+ resolve()
+ })
+ })
+ })
}
export default {
- setRedirects,
- reverse,
- redirect,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ reverse,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index cfdf1bb0..7f39b734 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -1,8 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-let targets = ["odysee.com"];
+let targets = ["odysee.com"]
const frontends = new Array("librarian")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -10,160 +10,166 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.librarian = val;
- librarianNormalRedirectsChecks = [...redirects.librarian.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = librarianNormalRedirectsChecks.indexOf(instance);
- if (a > -1) librarianNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- lbryTargetsRedirects: redirects,
- librarianNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.librarian = val
+ librarianNormalRedirectsChecks = [...redirects.librarian.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = librarianNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) librarianNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ lbryTargetsRedirects: redirects,
+ librarianNormalRedirectsChecks,
+ })
+ })
}
-let
- disableLbryTargets,
- protocol,
- protocolFallback,
- lbryTargetsRedirects,
- librarianNormalRedirectsChecks,
- librarianNormalCustomRedirects,
- librarianTorRedirectsChecks,
- librarianTorCustomRedirects,
- librarianI2pRedirectsChecks,
- librarianI2pCustomRedirects,
- librarianLokiCustomRedirects;
+let disableLbryTargets,
+ protocol,
+ protocolFallback,
+ lbryTargetsRedirects,
+ librarianNormalRedirectsChecks,
+ librarianNormalCustomRedirects,
+ librarianTorRedirectsChecks,
+ librarianTorCustomRedirects,
+ librarianI2pRedirectsChecks,
+ librarianI2pCustomRedirects,
+ librarianLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableLbryTargets",
- "protocol",
- "protocolFallback",
- "lbryTargetsRedirects",
- "librarianNormalRedirectsChecks",
- "librarianNormalCustomRedirects",
- "librarianTorRedirectsChecks",
- "librarianTorCustomRedirects",
- "librarianI2pRedirectsChecks",
- "librarianI2pCustomRedirects",
- "librarianLokiCustomRedirects"
- ],
- r => {
- disableLbryTargets = r.disableLbryTargets;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- lbryTargetsRedirects = r.lbryTargetsRedirects;
- librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks;
- librarianNormalCustomRedirects = r.librarianNormalCustomRedirects;
- librarianTorRedirectsChecks = r.librarianTorRedirectsChecks;
- librarianTorCustomRedirects = r.librarianTorCustomRedirects;
- librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks;
- librarianI2pCustomRedirects = r.librarianI2pCustomRedirects;
- librarianLokiCustomRedirects = r.librarianLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableLbryTargets",
+ "protocol",
+ "protocolFallback",
+ "lbryTargetsRedirects",
+ "librarianNormalRedirectsChecks",
+ "librarianNormalCustomRedirects",
+ "librarianTorRedirectsChecks",
+ "librarianTorCustomRedirects",
+ "librarianI2pRedirectsChecks",
+ "librarianI2pCustomRedirects",
+ "librarianLokiCustomRedirects",
+ ],
+ r => {
+ disableLbryTargets = r.disableLbryTargets
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ lbryTargetsRedirects = r.lbryTargetsRedirects
+ librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks
+ librarianNormalCustomRedirects = r.librarianNormalCustomRedirects
+ librarianTorRedirectsChecks = r.librarianTorRedirectsChecks
+ librarianTorCustomRedirects = r.librarianTorCustomRedirects
+ librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks
+ librarianI2pCustomRedirects = r.librarianI2pCustomRedirects
+ librarianLokiCustomRedirects = r.librarianLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...redirects.librarian.normal,
- ...redirects.librarian.tor,
- ...librarianNormalCustomRedirects,
- ...librarianTorCustomRedirects,
- ...librarianI2pCustomRedirects,
- ...librarianLokiCustomRedirects
- ];
+ return [...redirects.librarian.normal, ...redirects.librarian.tor, ...librarianNormalCustomRedirects, ...librarianTorCustomRedirects, ...librarianI2pCustomRedirects, ...librarianLokiCustomRedirects]
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableLbryTargets && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableLbryTargets && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function redirect(url, type, initiator, disableOverride) {
- if (disableLbryTargets && !disableOverride) return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.includes(url.host)) return;
- if (type != "main_frame") return;
+ if (disableLbryTargets && !disableOverride) return
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.includes(url.host)) return
+ if (type != "main_frame") return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableLbryTargets: true,
- lbryTargetsRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableLbryTargets: true,
+ lbryTargetsRedirects: redirects,
- librarianNormalRedirectsChecks: [...redirects.librarian.normal],
- librarianNormalCustomRedirects: [],
+ librarianNormalRedirectsChecks: [...redirects.librarian.normal],
+ librarianNormalCustomRedirects: [],
- librarianTorRedirectsChecks: [...redirects.librarian.tor],
- librarianTorCustomRedirects: [],
+ librarianTorRedirectsChecks: [...redirects.librarian.tor],
+ librarianTorCustomRedirects: [],
- librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
- librarianI2pCustomRedirects: [],
+ librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
+ librarianI2pCustomRedirects: [],
- librarianLokiRedirectsChecks: [...redirects.librarian.loki],
- librarianLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ librarianLokiRedirectsChecks: [...redirects.librarian.loki],
+ librarianLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/localise.js b/src/assets/javascripts/localise.js
index a4bbca92..34ccd66b 100644
--- a/src/assets/javascripts/localise.js
+++ b/src/assets/javascripts/localise.js
@@ -1,31 +1,31 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
function localisePage() {
- function getMessage(tag) {
- return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => {
- return v1 ? browser.i18n.getMessage(v1) : null;
- });
- }
+ function getMessage(tag) {
+ return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => {
+ return v1 ? browser.i18n.getMessage(v1) : null
+ })
+ }
- const elements = document.querySelectorAll("[data-localise]");
- for (let i in elements)
- if (elements.hasOwnProperty(i)) {
- const obj = elements[i];
- const tag = obj.getAttribute("data-localise").toString();
- const msg = getMessage(tag);
- if (msg && msg !== tag) obj.textContent = msg;
- }
+ const elements = document.querySelectorAll("[data-localise]")
+ for (let i in elements)
+ if (elements.hasOwnProperty(i)) {
+ const obj = elements[i]
+ const tag = obj.getAttribute("data-localise").toString()
+ const msg = getMessage(tag)
+ if (msg && msg !== tag) obj.textContent = msg
+ }
- const placeholders = document.querySelectorAll("[data-localise-placeholder]");
- for (let i in placeholders)
- if (placeholders.hasOwnProperty(i)) {
- const obj = placeholders[i];
- const tag = obj.getAttribute("data-localise-placeholder").toString();
- const msg = getMessage(tag);
- if (msg && msg !== tag) obj.placeholder = msg;
- }
+ const placeholders = document.querySelectorAll("[data-localise-placeholder]")
+ for (let i in placeholders)
+ if (placeholders.hasOwnProperty(i)) {
+ const obj = placeholders[i]
+ const tag = obj.getAttribute("data-localise-placeholder").toString()
+ const msg = getMessage(tag)
+ if (msg && msg !== tag) obj.placeholder = msg
+ }
}
export default {
- localisePage
+ localisePage,
}
diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js
index fd65b1c5..9fb10b9d 100644
--- a/src/assets/javascripts/maps.js
+++ b/src/assets/javascripts/maps.js
@@ -1,247 +1,294 @@
-"use strict";
+"use strict"
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
-const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
+const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/
-let redirects = {
- 'osm': {
- "normal": [
- "https://www.openstreetmap.org"
- ]
- },
- 'facil': {
- "normal": [
- "https://facilmap.org"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
-};
+const frontends = new Array("facil")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+let redirects = {}
-let
- disableMaps,
- mapsFrontend,
- protocol,
- protocolFallback,
- facilNormalRedirectsChecks,
- facilNormalCustomRedirects,
- facilTorCustomRedirects,
- facilI2pCustomRedirects,
- facilLokiCustomRedirects;
-
-function init() {
- browser.storage.local.get(
- [
- "disableMaps",
- "mapsFrontend",
- "protocol",
- "protocolFallback",
- "facilNormalRedirectsChecks",
- "facilNormalCustomRedirects",
- "facilTorCustomRedirects",
- "facilI2pCustomRedirects",
- "facilLokiCustomRedirects"
- ],
- r => {
- disableMaps = r.disableMaps;
- mapsFrontend = r.mapsFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- facilNormalRedirectsChecks = r.facilNormalRedirectsChecks;
- facilNormalCustomRedirects = r.facilNormalCustomRedirects;
- facilTorCustomRedirects = r.facilTorCustomRedirects;
- facilI2pCustomRedirects = r.facilI2pCustomRedirects;
- facilLokiCustomRedirects = r.facilLokiCustomRedirects;
- }
- )
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-init();
-browser.storage.onChanged.addListener(init)
-
-function redirect(url, initiator) {
- if (disableMaps) return;
- if (initiator && initiator.host === "earth.google.com") return;
- if (!url.href.match(targets)) return;
- const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
- const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/;
- const placeRegex = /\/place\/(.*)\//;
- const travelModes = {
- driving: "fossgis_osrm_car",
- walking: "fossgis_osrm_foot",
- bicycling: "fossgis_osrm_bike",
- transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
- };
- const travelModesFacil = {
- driving: "car",
- walking: "pedestrian",
- bicycling: "bicycle",
- transit: "car", // not implemented on Facil, default to car.
- };
- const osmLayers = {
- none: "S",
- transit: "T",
- traffic: "S", // not implemented on OSM, default to standard.
- bicycling: "C",
- };
- function addressToLatLng(address) {
- const xmlhttp = new XMLHttpRequest();
- xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false);
- xmlhttp.send();
- if (xmlhttp.status === 200) {
- const json = JSON.parse(xmlhttp.responseText)[0];
- if (json) {
- console.log('json', json)
- return [
- `${json.lat},${json.lon}`,
- `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`,
- ];
- }
- }
- console.info("Error: Status is " + xmlhttp.status);
- }
+redirects.osm = {}
+redirects.osm.normal = ["https://www.openstreetmap.org"]
- let randomInstance;
- if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.facil = val
+ facilNormalRedirectsChecks = [...redirects.facil.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = facilNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) facilNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ mapsRedirects: redirects,
+ facilNormalRedirectsChecks,
+ })
+ })
+}
- if (mapsFrontend == 'facil') {
- if (protocol == 'loki') randomInstance = utils.getRandomInstance(...facilLokiCustomRedirects);
- else if (protocol == 'i2p') randomInstance = utils.getRandomInstance(...facilI2pCustomRedirects);
- else if (protocol == 'tor') randomInstance = utils.getRandomInstance(...facilTorCustomRedirects);
- if ((randomInstance == "" && protocolFallback) || protocol == 'normal') {
- randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
- }
- }
+let disableMaps,
+ mapsFrontend,
+ protocol,
+ protocolFallback,
+ facilNormalRedirectsChecks,
+ facilNormalCustomRedirects,
+ facilTorRedirectsChecks,
+ facilTorCustomRedirects,
+ facilI2pRedirectsChecks,
+ facilI2pCustomRedirects,
+ facilLokiRedirectsChecks,
+ facilLokiCustomRedirects
- let mapCentre = "#";
- let prefs = {};
+function init() {
+ browser.storage.local.get(
+ [
+ "disableMaps",
+ "mapsFrontend",
+ "protocol",
+ "protocolFallback",
+ "facilNormalRedirectsChecks",
+ "facilNormalCustomRedirects",
+ "facilTorRedirectsChecks",
+ "facilTorCustomRedirects",
+ "facilI2pRedirectsChecks",
+ "facilI2pCustomRedirects",
+ "facilLokiRedirectsChecks",
+ "facilLokiCustomRedirects",
+ ],
+ r => {
+ disableMaps = r.disableMaps
+ mapsFrontend = r.mapsFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ facilNormalRedirectsChecks = r.facilNormalRedirectsChecks
+ facilNormalCustomRedirects = r.facilNormalCustomRedirects
+ facilTorRedirectsChecks = r.facilTorRedirectsChecks
+ facilTorCustomRedirects = r.facilTorCustomRedirects
+ facilI2pRedirectsChecks = r.facilI2pRedirectsChecks
+ facilI2pCustomRedirects = r.facilI2pCustomRedirects
+ facilLokiRedirectsChecks = r.facilLokiRedirectsChecks
+ facilLokiCustomRedirects = r.facilLokiCustomRedirects
+ }
+ )
+}
- if (url.pathname.match(mapCentreRegex)) { // Set map centre if present
- var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex);
- } else if (url.searchParams.has("center")) {
- var [lat, lon] = url.searchParams.get("center").split(",");
- var zoom = url.searchParams.get("zoom") ?? "17";
- }
+init()
+browser.storage.onChanged.addListener(init)
- if (lat && lon && zoom) {
- if (mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`;
- if (mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`;
- }
+function redirect(url, initiator) {
+ if (disableMaps) return
+ if (initiator && initiator.host === "earth.google.com") return
+ if (!url.href.match(targets)) return
+ const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/
+ const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/
+ const placeRegex = /\/place\/(.*)\//
+ const travelModes = {
+ driving: "fossgis_osrm_car",
+ walking: "fossgis_osrm_foot",
+ bicycling: "fossgis_osrm_bike",
+ transit: "fossgis_osrm_car", // not implemented on OSM, default to car.
+ }
+ const travelModesFacil = {
+ driving: "car",
+ walking: "pedestrian",
+ bicycling: "bicycle",
+ transit: "car", // not implemented on Facil, default to car.
+ }
+ const osmLayers = {
+ none: "S",
+ transit: "T",
+ traffic: "S", // not implemented on OSM, default to standard.
+ bicycling: "C",
+ }
+ function addressToLatLng(address) {
+ const xmlhttp = new XMLHttpRequest()
+ xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false)
+ xmlhttp.send()
+ if (xmlhttp.status === 200) {
+ const json = JSON.parse(xmlhttp.responseText)[0]
+ if (json) {
+ console.log("json", json)
+ return [`${json.lat},${json.lon}`, `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`]
+ }
+ }
+ console.info("Error: Status is " + xmlhttp.status)
+ }
- if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")];
+ let instancesList
+ switch (mapsFrontend) {
+ case "osm":
+ instancesList = [...redirects.osm.normal]
+ break
+ case "facil":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...facilLokiRedirectsChecks, ...facilLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...facilI2pRedirectsChecks, ...facilI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...facilTorRedirectsChecks, ...facilTorCustomRedirects]
+ }
+ if ((instancesList == "" && protocolFallback) || protocol == "normal") {
+ instancesList = [...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]
+ }
+ }
+ const randomInstance = utils.getRandomInstance(instancesList)
- if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API
- // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
- console.log("embed life");
+ let mapCentre = "#"
+ let prefs = {}
- let query = "";
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.has("query");
+ if (url.pathname.match(mapCentreRegex)) {
+ // Set map centre if present
+ var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex)
+ } else if (url.searchParams.has("center")) {
+ var [lat, lon] = url.searchParams.get("center").split(",")
+ var zoom = url.searchParams.get("zoom") ?? "17"
+ }
- else if (url.searchParams.has("pb"))
- try { query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; }
- catch (error) { console.error(error); } // Unable to find map marker in URL.
+ if (lat && lon && zoom) {
+ if (mapsFrontend == "osm") mapCentre = `#map=${zoom}/${lat}/${lon}`
+ if (mapsFrontend == "facil") mapCentre = `#${zoom}/${lat}/${lon}`
+ }
- let [coords, boundingbox] = addressToLatLng(query);
- prefs.bbox = boundingbox;
- prefs.marker = coords;
- prefs.layer = "mapnik";
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') return `${randomInstance}/export/embed.html?${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${query}`;
+ if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")]
- } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions
- // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
+ if (url.pathname.includes("/embed")) {
+ // Handle Google Maps Embed API
+ // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France
+ console.log("embed life")
- let travMod = url.searchParams.get("travelmode");
- if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod];
+ let query = ""
+ if (url.searchParams.has("q")) query = url.searchParams.get("q")
+ else if (url.searchParams.has("query")) query = url.searchParams.has("query")
+ else if (url.searchParams.has("pb"))
+ try {
+ query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]
+ } catch (error) {
+ console.error(error)
+ } // Unable to find map marker in URL.
- let orgVal = url.searchParams.get("origin");
- let destVal = url.searchParams.get("destination");
+ let [coords, boundingbox] = addressToLatLng(query)
+ prefs.bbox = boundingbox
+ prefs.marker = coords
+ prefs.layer = "mapnik"
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (mapsFrontend == "osm") return `${randomInstance}/export/embed.html?${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${query}`
+ } else if (url.pathname.includes("/dir")) {
+ // Handle Google Maps Directions
+ // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling
- let org; addressToLatLng(orgVal, a => org = a);
- let dest; addressToLatLng(destVal, a => dest = a);
- prefs.route = `${org};${dest}`;
+ let travMod = url.searchParams.get("travelmode")
+ if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod]
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (mapsFrontend == 'osm') return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`;
+ let orgVal = url.searchParams.get("origin")
+ let destVal = url.searchParams.get("destination")
- } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute
- // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
- console.log("data life");
+ let org
+ addressToLatLng(orgVal, a => (org = a))
+ let dest
+ addressToLatLng(destVal, a => (dest = a))
+ prefs.route = `${org};${dest}`
- let [, mlat, mlon] = url.pathname.match(dataLatLngRegex);
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (mapsFrontend == "osm") return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`
+ } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) {
+ // Get marker from data attribute
+ // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948
+ console.log("data life")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
+ let [, mlat, mlon] = url.pathname.match(dataLatLngRegex)
- } else if (url.searchParams.has("ll")) { // Get marker from ll param
- // https://maps.google.com/?ll=38.882147,-76.99017
- console.log("ll life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else if (url.searchParams.has("ll")) {
+ // Get marker from ll param
+ // https://maps.google.com/?ll=38.882147,-76.99017
+ console.log("ll life")
- const [mlat, mlon] = url.searchParams.get("ll").split(",");
+ const [mlat, mlon] = url.searchParams.get("ll").split(",")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`
- } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param.
- // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
- console.log("viewpoint life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else if (url.searchParams.has("viewpoint")) {
+ // Get marker from viewpoint param.
+ // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80
+ console.log("viewpoint life")
- const [mlat, mlon] = url.searchParams.get("viewpoint").split(",");
+ const [mlat, mlon] = url.searchParams.get("viewpoint").split(",")
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`;
- } else { // Use query as search if present.
- console.log("normal life");
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}`
+ if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}`
+ } else {
+ // Use query as search if present.
+ console.log("normal life")
- let query;
- if (url.searchParams.has("q")) query = url.searchParams.get("q");
- else if (url.searchParams.has("query")) query = url.searchParams.get("query");
- else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1];
+ let query
+ if (url.searchParams.has("q")) query = url.searchParams.get("q")
+ else if (url.searchParams.has("query")) query = url.searchParams.get("query")
+ else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1]
- let prefsEncoded = new URLSearchParams(prefs).toString();
- if (query) {
- if (mapsFrontend == 'osm') return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk/${query}`;
- }
- }
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ if (query) {
+ if (mapsFrontend == "osm") return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk/${query}`
+ }
+ }
- let prefsEncoded = new URLSearchParams(prefs).toString();
- console.log("mapCentre", mapCentre);
- console.log("prefs", prefs);
- console.log("prefsEncoded", prefsEncoded);
- if (mapsFrontend == 'osm') return `${randomInstance}/${mapCentre}&${prefsEncoded}`;
- if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk`;
+ let prefsEncoded = new URLSearchParams(prefs).toString()
+ console.log("mapCentre", mapCentre)
+ console.log("prefs", prefs)
+ console.log("prefsEncoded", prefsEncoded)
+ if (mapsFrontend == "osm") return `${randomInstance}/${mapCentre}&${prefsEncoded}`
+ if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk`
}
-async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- disableMaps: false,
- mapsFrontend: 'osm',
- mapsRedirects: redirects,
- facilNormalRedirectsChecks: [...redirects.facil.normal],
- facilNormalCustomRedirects: [],
-
- facilTorRedirectsChecks: [...redirects.facil.tor],
- facilTorCustomRedirects: [],
+function initDefaults() {
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableMaps: false,
+ mapsFrontend: "osm",
+ mapsRedirects: redirects,
+ facilNormalRedirectsChecks: [...redirects.facil.normal],
+ facilNormalCustomRedirects: [],
- facilI2pRedirectsChecks: [...redirects.facil.i2p],
- facilI2pCustomRedirects: [],
+ facilTorRedirectsChecks: [...redirects.facil.tor],
+ facilTorCustomRedirects: [],
- facilLokiRedirectsChecks: [...redirects.facil.loki],
- facilLokiCustomRedirects: []
- }, () => resolve())
- )
+ facilI2pRedirectsChecks: [...redirects.facil.i2p],
+ facilI2pCustomRedirects: [],
+ facilLokiRedirectsChecks: [...redirects.facil.loki],
+ facilLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- redirect,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index ddd955c1..4c03471c 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -1,207 +1,219 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
const targets = [
- // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
- /^medium\.com/,
- /.*\.medium\.com/,
- // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
+ // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
+ /^medium\.com/,
+ /.*\.medium\.com/,
+ // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
- /^towardsdatascience\.com/,
- /^uxdesign\.cc/,
- /^uxplanet\.org/,
- /^betterprogramming\.pub/,
- /^aninjusticemag\.com/,
- /^betterhumans\.pub/,
- /^psiloveyou\.xyz/,
- /^entrepreneurshandbook\.co/,
- /^blog\.coinbase\.com/,
+ /^towardsdatascience\.com/,
+ /^uxdesign\.cc/,
+ /^uxplanet\.org/,
+ /^betterprogramming\.pub/,
+ /^aninjusticemag\.com/,
+ /^betterhumans\.pub/,
+ /^psiloveyou\.xyz/,
+ /^entrepreneurshandbook\.co/,
+ /^blog\.coinbase\.com/,
- /^ levelup\.gitconnected\.com /,
- /^javascript\.plainenglish\.io /,
- /^blog\.bitsrc\.io /,
- /^ itnext\.io /,
- /^codeburst\.io /,
- /^infosecwriteups\.com /,
- /^ blog\.devgenius.io /,
- /^ writingcooperative\.com /,
-];
+ /^ levelup\.gitconnected\.com /,
+ /^javascript\.plainenglish\.io /,
+ /^blog\.bitsrc\.io /,
+ /^ itnext\.io /,
+ /^codeburst\.io /,
+ /^infosecwriteups\.com /,
+ /^ blog\.devgenius.io /,
+ /^ writingcooperative\.com /,
+]
const frontends = new Array("scribe")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.scribe = val;
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = scribeNormalRedirectsChecks.indexOf(instance);
- if (a > -1) scribeNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- mediumRedirects: redirects,
- scribeNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.scribe = val
+ scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = scribeNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) scribeNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ mediumRedirects: redirects,
+ scribeNormalRedirectsChecks,
+ })
+ })
}
-let
- disableMedium,
- mediumRedirects,
- scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects,
- scribeTorRedirectsChecks,
- scribeTorCustomRedirects,
- scribeI2pCustomRedirects,
- scribeLokiCustomRedirects,
- protocol,
- protocolFallback;
+let disableMedium,
+ mediumRedirects,
+ scribeNormalRedirectsChecks,
+ scribeNormalCustomRedirects,
+ scribeTorRedirectsChecks,
+ scribeTorCustomRedirects,
+ scribeI2pCustomRedirects,
+ scribeLokiCustomRedirects,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableMedium",
- "mediumRedirects",
- "scribeNormalRedirectsChecks",
- "scribeNormalCustomRedirects",
- "scribeTorRedirectsChecks",
- "scribeTorCustomRedirects",
- "scribeI2pCustomRedirects",
- "scribeLokiCustomRedirects",
- "protocol",
- "protocolFallback"
- ],
- r => {
- disableMedium = r.disableMedium;
- mediumRedirects = r.mediumRedirects;
- scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks;
- scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
- scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
- scribeTorCustomRedirects = r.scribeTorCustomRedirects;
- scribeI2pCustomRedirects = r.scribeI2pCustomRedirects;
- scribeLokiCustomRedirects = r.scribeLokiCustomRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableMedium",
+ "mediumRedirects",
+ "scribeNormalRedirectsChecks",
+ "scribeNormalCustomRedirects",
+ "scribeTorRedirectsChecks",
+ "scribeTorCustomRedirects",
+ "scribeI2pCustomRedirects",
+ "scribeLokiCustomRedirects",
+ "protocol",
+ "protocolFallback",
+ ],
+ r => {
+ disableMedium = r.disableMedium
+ mediumRedirects = r.mediumRedirects
+ scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks
+ scribeNormalCustomRedirects = r.scribeNormalCustomRedirects
+ scribeTorRedirectsChecks = r.scribeTorRedirectsChecks
+ scribeTorCustomRedirects = r.scribeTorCustomRedirects
+ scribeI2pCustomRedirects = r.scribeI2pCustomRedirects
+ scribeLokiCustomRedirects = r.scribeLokiCustomRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableMedium && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return;
- if (initiator && (
- [
- ...mediumRedirects.scribe.normal,
- ...mediumRedirects.scribe.tor,
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ...scribeI2pCustomRedirects,
- ...scribeLokiCustomRedirects
- ].includes(initiator.origin))) return;
+ if (disableMedium && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return
+ if (
+ initiator &&
+ [...mediumRedirects.scribe.normal, ...mediumRedirects.scribe.tor, ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, ...scribeI2pCustomRedirects, ...scribeLokiCustomRedirects].includes(
+ initiator.origin
+ )
+ )
+ return
- if (!targets.some(rx => rx.test(url.host))) return;
- if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return;
+ if (!targets.some(rx => rx.test(url.host))) return
+ if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableMedium && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...mediumRedirects.scribe.tor,
- ...mediumRedirects.scribe.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableMedium && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...mediumRedirects.scribe.tor,
+ ...mediumRedirects.scribe.normal,
- ...scribeNormalCustomRedirects,
- ...scribeTorCustomRedirects,
- ...scribeI2pCustomRedirects,
- ...scribeLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...scribeNormalCustomRedirects,
+ ...scribeTorCustomRedirects,
+ ...scribeI2pCustomRedirects,
+ ...scribeLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList',
- async r => {
- scribeNormalRedirectsChecks = [...redirects.scribe.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = scribeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableMedium: false,
- mediumRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = scribeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) scribeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableMedium: false,
+ mediumRedirects: redirects,
- scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
- scribeNormalCustomRedirects: [],
+ scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
+ scribeNormalCustomRedirects: [],
- scribeTorRedirectsChecks: [...redirects.scribe.tor],
- scribeTorCustomRedirects: [],
+ scribeTorRedirectsChecks: [...redirects.scribe.tor],
+ scribeTorCustomRedirects: [],
- scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
- scribeI2pCustomRedirects: [],
+ scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
+ scribeI2pCustomRedirects: [],
- scribeLokiRedirectsChecks: [...redirects.scribe.loki],
- scribeLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ scribeLokiRedirectsChecks: [...redirects.scribe.loki],
+ scribeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js
index d05e4b27..de25cfaa 100644
--- a/src/assets/javascripts/peertube.js
+++ b/src/assets/javascripts/peertube.js
@@ -1,180 +1,201 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-let redirects = {
- "simpleertube": {
- "normal": [
- "https://tube.simple-web.org",
- "https://tube.ftild3.org",
- "https://stube.alefvanoon.xyz",
- "https://st.phreedom.club",
- "https://simpleertube.esmailelbob.xyz",
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
+const frontends = new Array("simpleertube")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+
+let redirects = {}
+
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-function setRedirects(val) {
- redirects.simpleertube = val;
- browser.storage.local.set({ peertubeTargetsRedirects: redirects })
- for (const item of simpleertubeNormalRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeNormalRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeNormalRedirectsChecks })
- for (const item of simpleertubeTorRedirectsChecks)
- if (!redirects.simpleertube.normal.includes(item)) {
- var index = simpleertubeTorRedirectsChecks.indexOf(item);
- if (index !== -1) simpleertubeTorRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set({ simpleertubeTorRedirectsChecks })
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.simpleertube = val
+ simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = simpleertubeNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ peertubeRedirects: redirects,
+ simpleertubeNormalRedirectsChecks,
+ })
+ })
}
-let
- disablePeertubeTargets,
- peertubeRedirects,
- simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects,
- simpleertubeTorRedirectsChecks,
- simpleertubeTorCustomRedirects,
- simpleertubeI2pCustomRedirects,
- simpleertubeLokiCustomRedirects,
- peerTubeTargets,
- protocol,
- protocolFallback;
+let disablePeertubeTargets,
+ peertubeRedirects,
+ simpleertubeNormalRedirectsChecks,
+ simpleertubeNormalCustomRedirects,
+ simpleertubeTorRedirectsChecks,
+ simpleertubeTorCustomRedirects,
+ simpleertubeI2pRedirectsChecks,
+ simpleertubeI2pCustomRedirects,
+ simpleertubeLokiRedirectsChecks,
+ simpleertubeLokiCustomRedirects,
+ peerTubeTargets,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disablePeertubeTargets",
- "peertubeRedirects",
- "simpleertubeNormalRedirectsChecks",
- "simpleertubeNormalCustomRedirects",
- "simpleertubeTorRedirectsChecks",
- "simpleertubeTorCustomRedirects",
- "simpleertubeI2pCustomRedirects",
- "simpleertubeLokiCustomRedirects",
- "peerTubeTargets",
- "protocol",
- "protocolFallback"
- ],
- r => {
- disablePeertubeTargets = r.disablePeertubeTargets;
- peertubeRedirects = r.peertubeRedirects;
- simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks;
- simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
- simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
- simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
- simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects;
- simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects;
- peerTubeTargets = r.peerTubeTargets;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disablePeertubeTargets",
+ "peertubeRedirects",
+ "simpleertubeNormalRedirectsChecks",
+ "simpleertubeNormalCustomRedirects",
+ "simpleertubeTorRedirectsChecks",
+ "simpleertubeTorCustomRedirects",
+ "simpleertubeI2pRedirectsChecks",
+ "simpleertubeI2pCustomRedirects",
+ "simpleertubeLokiRedirectsChecks",
+ "simpleertubeLokiCustomRedirects",
+ "peerTubeTargets",
+ "protocol",
+ "protocolFallback",
+ ],
+ r => {
+ disablePeertubeTargets = r.disablePeertubeTargets
+ peertubeRedirects = r.peertubeRedirects
+ simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks
+ simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects
+ simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks
+ simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects
+ simpleertubeI2pRedirectsChecks = r.simpleertubeI2pRedirectsChecks
+ simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects
+ simpleertubeLokiRedirectsChecks = r.simpleertubeLokiRedirectsChecks
+ simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects
+ peerTubeTargets = r.peerTubeTargets
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...redirects.simpleertube.normal,
- ...redirects.simpleertube.tor,
- ...simpleertubeNormalCustomRedirects,
- ...simpleertubeTorCustomRedirects,
- ...simpleertubeI2pCustomRedirects,
- ...simpleertubeLokiCustomRedirects
- ];
+ return [
+ ...simpleertubeNormalRedirectsChecks,
+ ...simpleertubeTorRedirectsChecks,
+ ...simpleertubeI2pRedirectsChecks,
+ ...simpleertubeLokiRedirectsChecks,
+ ...simpleertubeNormalCustomRedirects,
+ ...simpleertubeTorCustomRedirects,
+ ...simpleertubeI2pCustomRedirects,
+ ...simpleertubeLokiCustomRedirects,
+ ]
}
function redirect(url, type, initiator, disableOverride) {
- if (disablePeertubeTargets && !disableOverride) return;
- if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return;
- let protocolHost = utils.protocolHost(url);
- if (!peerTubeTargets.includes(protocolHost)) return;
- if (type != "main_frame") return;
+ if (disablePeertubeTargets && !disableOverride) return
+ if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return
+ let protocolHost = utils.protocolHost(url)
+ if (!peerTubeTargets.includes(protocolHost)) return
+ if (type != "main_frame") return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance;
- return `${randomInstance}/${url.host}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ if (url.host == "search.joinpeertube.org" || url.host == "sepiasearch.org") return randomInstance
+ return `${randomInstance}/${url.host}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disablePeertubeTargets && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disablePeertubeTargets && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- browser.storage.local.get('cloudflareBlackList', async r => {
- simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = simpleertubeNormalRedirectsChecks.indexOf(instance);
- if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube],
- disablePeertubeTargets: true,
- peertubeRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = simpleertubeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ peerTubeTargets: ["https://search.joinpeertube.org", ...dataJson.peertube],
+ disablePeertubeTargets: true,
+ peertubeRedirects: redirects,
- simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
- simpleertubeNormalCustomRedirects: [],
+ simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks,
+ simpleertubeNormalCustomRedirects: [],
- simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
- simpleertubeTorCustomRedirects: [],
+ simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
+ simpleertubeTorCustomRedirects: [],
- simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
- simpleertubeI2pCustomRedirects: [],
+ simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
+ simpleertubeI2pCustomRedirects: [],
- simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
- simpleertubeLokiCustomRedirects: []
- }, () => resolve());
- })
- })
- })
+ simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
+ simpleertubeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- switchInstance,
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index fed321de..3f9e4189 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)quora\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)quora\.com.*/]
let redirects = {}
@@ -12,183 +10,183 @@ const frontends = new Array("quetre")
const protocols = new Array("normal", "tor", "i2p", "loki")
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.quetre = val;
- quetreNormalRedirectsChecks = [...redirects.quetre.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = quetreNormalRedirectsChecks.indexOf(instance);
- if (a > -1) quetreNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- quoraRedirects: redirects,
- quetreNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.quetre = val
+ quetreNormalRedirectsChecks = [...redirects.quetre.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = quetreNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) quetreNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ quoraRedirects: redirects,
+ quetreNormalRedirectsChecks,
+ })
+ })
}
-let
- disableQuora,
- protocol,
- protocolFallback,
- quoraRedirects,
- quetreNormalRedirectsChecks,
- quetreNormalCustomRedirects,
- quetreTorRedirectsChecks,
- quetreTorCustomRedirects,
- quetreI2pCustomRedirects,
- quetreLokiCustomRedirects;
+let disableQuora,
+ protocol,
+ protocolFallback,
+ quoraRedirects,
+ quetreNormalRedirectsChecks,
+ quetreNormalCustomRedirects,
+ quetreTorRedirectsChecks,
+ quetreTorCustomRedirects,
+ quetreI2pCustomRedirects,
+ quetreLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableQuora",
- "protocol",
- "protocolFallback",
- "quoraRedirects",
- "quetreNormalRedirectsChecks",
- "quetreNormalCustomRedirects",
- "quetreTorRedirectsChecks",
- "quetreTorCustomRedirects",
- "quetreI2pCustomRedirects",
- "quetreLokiCustomRedirects"
- ],
- r => {
- disableQuora = r.disableQuora;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- quoraRedirects = r.quoraRedirects;
- quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks;
- quetreNormalCustomRedirects = r.quetreNormalCustomRedirects;
- quetreTorRedirectsChecks = r.quetreTorRedirectsChecks;
- quetreTorCustomRedirects = r.quetreTorCustomRedirects;
- quetreI2pCustomRedirects = r.quetreI2pCustomRedirects;
- quetreLokiCustomRedirects = r.quetreLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableQuora",
+ "protocol",
+ "protocolFallback",
+ "quoraRedirects",
+ "quetreNormalRedirectsChecks",
+ "quetreNormalCustomRedirects",
+ "quetreTorRedirectsChecks",
+ "quetreTorCustomRedirects",
+ "quetreI2pCustomRedirects",
+ "quetreLokiCustomRedirects",
+ ],
+ r => {
+ disableQuora = r.disableQuora
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ quoraRedirects = r.quoraRedirects
+ quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks
+ quetreNormalCustomRedirects = r.quetreNormalCustomRedirects
+ quetreTorRedirectsChecks = r.quetreTorRedirectsChecks
+ quetreTorCustomRedirects = r.quetreTorCustomRedirects
+ quetreI2pCustomRedirects = r.quetreI2pCustomRedirects
+ quetreLokiCustomRedirects = r.quetreLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableQuora && !disableOverride) return;
- if (url.pathname == "/" && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...quoraRedirects.quetre.normal,
- ...quetreNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableQuora && !disableOverride) return
+ if (url.pathname == "/" && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...quoraRedirects.quetre.normal,
- ...quoraRedirects.quetre.tor,
- ...quetreNormalCustomRedirects,
- ...quetreTorCustomRedirects,
- ...quetreI2pCustomRedirects,
- ...quetreLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [...quoraRedirects.quetre.normal, ...quoraRedirects.quetre.tor, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://quora.com${url.pathname}${url.search}`);
- })
+ resolve(`https://quora.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableQuora && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...quoraRedirects.quetre.tor,
- ...quoraRedirects.quetre.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableQuora && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [...quoraRedirects.quetre.tor, ...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- ...quetreNormalCustomRedirects,
- ...quetreTorCustomRedirects,
- ...quetreI2pCustomRedirects,
- ...quetreLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects];
- }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
-
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableQuora: false,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableQuora: false,
- quoraRedirects: redirects,
+ quoraRedirects: redirects,
- quetreNormalRedirectsChecks: [...redirects.quetre.normal],
- quetreNormalCustomRedirects: [],
+ quetreNormalRedirectsChecks: [...redirects.quetre.normal],
+ quetreNormalCustomRedirects: [],
- quetreTorRedirectsChecks: [...redirects.quetre.tor],
- quetreTorCustomRedirects: [],
+ quetreTorRedirectsChecks: [...redirects.quetre.tor],
+ quetreTorCustomRedirects: [],
- quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
- quetreI2pCustomRedirects: [],
+ quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
+ quetreI2pCustomRedirects: [],
- quetreLokiRedirectsChecks: [...redirects.quetre.loki],
- quetreLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ quetreLokiRedirectsChecks: [...redirects.quetre.loki],
+ quetreLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js
index bc7b687f..699dcf1a 100644
--- a/src/assets/javascripts/reddit.js
+++ b/src/assets/javascripts/reddit.js
@@ -1,264 +1,261 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
- /^https?:\/{2}(i\.|preview\.)redd\.it/,
-];
-let redirects = {};
+const targets = [/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/]
+let redirects = {}
const frontends = new Array("libreddit", "teddit")
const protocols = new Array("normal", "tor", "i2p", "loki")
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects = val;
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareBlackList) {
- const a = libredditNormalRedirectsChecks.indexOf(instance);
- if (a > -1) libredditNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
+ tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = libredditNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) libredditNormalRedirectsChecks.splice(a, 1)
- const b = tedditNormalRedirectsChecks.indexOf(instance);
- if (b > -1) tedditNormalRedirectsChecks.splice(b, 1);
- }
- browser.storage.local.set({
- redditRedirects: redirects,
- libredditNormalRedirectsChecks,
- tedditNormalRedirectsChecks
- })
- })
+ const b = tedditNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) tedditNormalRedirectsChecks.splice(b, 1)
+ }
+ browser.storage.local.set({
+ redditRedirects: redirects,
+ libredditNormalRedirectsChecks,
+ tedditNormalRedirectsChecks,
+ })
+ })
}
-let
- disableReddit,
- redditFrontend,
- redditRedirects,
- protocol,
- protocolFallback,
-
- libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects,
-
- libredditTorRedirectsChecks,
- libredditTorCustomRedirects,
-
- libredditI2pCustomRedirects,
-
- libredditLokiCustomRedirects,
-
- tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects,
-
- tedditTorRedirectsChecks,
- tedditTorCustomRedirects,
-
- tedditI2pCustomRedirects,
- tedditLokiCustomRedirects;
+let disableReddit,
+ redditFrontend,
+ redditRedirects,
+ protocol,
+ protocolFallback,
+ libredditNormalRedirectsChecks,
+ libredditNormalCustomRedirects,
+ libredditTorRedirectsChecks,
+ libredditTorCustomRedirects,
+ libredditI2pCustomRedirects,
+ libredditLokiCustomRedirects,
+ tedditNormalRedirectsChecks,
+ tedditNormalCustomRedirects,
+ tedditTorRedirectsChecks,
+ tedditTorCustomRedirects,
+ tedditI2pCustomRedirects,
+ tedditLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableReddit",
- "redditFrontend",
- "redditRedirects",
- "protocol",
- "protocolFallback",
- "libredditNormalRedirectsChecks",
- "libredditNormalCustomRedirects",
- "libredditTorRedirectsChecks",
- "libredditTorCustomRedirects",
- "libredditI2pCustomRedirects",
- "libredditLokiCustomRedirects",
- "tedditNormalRedirectsChecks",
- "tedditNormalCustomRedirects",
- "tedditTorRedirectsChecks",
- "tedditTorCustomRedirects",
- "tedditI2pCustomRedirects",
- "tedditLokiCustomRedirects"
- ],
- r => {
- disableReddit = r.disableReddit;
- redditFrontend = r.redditFrontend;
- redditRedirects = r.redditRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks;
- libredditNormalCustomRedirects = r.libredditNormalCustomRedirects;
- libredditTorRedirectsChecks = r.libredditTorRedirectsChecks;
- libredditTorCustomRedirects = r.libredditTorCustomRedirects;
- libredditI2pCustomRedirects = r.libredditI2pCustomRedirects;
- libredditLokiCustomRedirects = r.libredditLokiCustomRedirects;
- tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks;
- tedditNormalCustomRedirects = r.tedditNormalCustomRedirects;
- tedditTorRedirectsChecks = r.tedditTorRedirectsChecks;
- tedditTorCustomRedirects = r.tedditTorCustomRedirects;
- tedditI2pCustomRedirects = r.tedditI2pCustomRedirects;
- tedditLokiCustomRedirects = r.tedditLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableReddit",
+ "redditFrontend",
+ "redditRedirects",
+ "protocol",
+ "protocolFallback",
+ "libredditNormalRedirectsChecks",
+ "libredditNormalCustomRedirects",
+ "libredditTorRedirectsChecks",
+ "libredditTorCustomRedirects",
+ "libredditI2pCustomRedirects",
+ "libredditLokiCustomRedirects",
+ "tedditNormalRedirectsChecks",
+ "tedditNormalCustomRedirects",
+ "tedditTorRedirectsChecks",
+ "tedditTorCustomRedirects",
+ "tedditI2pCustomRedirects",
+ "tedditLokiCustomRedirects",
+ ],
+ r => {
+ disableReddit = r.disableReddit
+ redditFrontend = r.redditFrontend
+ redditRedirects = r.redditRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks
+ libredditNormalCustomRedirects = r.libredditNormalCustomRedirects
+ libredditTorRedirectsChecks = r.libredditTorRedirectsChecks
+ libredditTorCustomRedirects = r.libredditTorCustomRedirects
+ libredditI2pCustomRedirects = r.libredditI2pCustomRedirects
+ libredditLokiCustomRedirects = r.libredditLokiCustomRedirects
+ tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks
+ tedditNormalCustomRedirects = r.tedditNormalCustomRedirects
+ tedditTorRedirectsChecks = r.tedditTorRedirectsChecks
+ tedditTorCustomRedirects = r.tedditTorCustomRedirects
+ tedditI2pCustomRedirects = r.tedditI2pCustomRedirects
+ tedditLokiCustomRedirects = r.tedditLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initLibredditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (![
- ...libredditNormalRedirectsChecks,
- ...libredditTorRedirectsChecks,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ...libredditI2pCustomRedirects,
- ...libredditLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...libredditNormalRedirectsChecks,
+ ...libredditTorRedirectsChecks,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- await utils.copyCookie('libreddit', from, checkedInstances, "theme");
- await utils.copyCookie('libreddit', from, checkedInstances, "front_page");
- await utils.copyCookie('libreddit', from, checkedInstances, "layout");
- await utils.copyCookie('libreddit', from, checkedInstances, "wide");
- await utils.copyCookie('libreddit', from, checkedInstances, "post_sort");
- await utils.copyCookie('libreddit', from, checkedInstances, "comment_sort");
- await utils.copyCookie('libreddit', from, checkedInstances, "show_nsfw");
- await utils.copyCookie('libreddit', from, checkedInstances, "autoplay_videos");
- await utils.copyCookie('libreddit', from, checkedInstances, "use_hls");
- await utils.copyCookie('libreddit', from, checkedInstances, "hide_hls_notification");
- await utils.copyCookie('libreddit', from, checkedInstances, "subscriptions");
- await utils.copyCookie('libreddit', from, checkedInstances, "filters");
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ await utils.copyCookie("libreddit", from, checkedInstances, "theme")
+ await utils.copyCookie("libreddit", from, checkedInstances, "front_page")
+ await utils.copyCookie("libreddit", from, checkedInstances, "layout")
+ await utils.copyCookie("libreddit", from, checkedInstances, "wide")
+ await utils.copyCookie("libreddit", from, checkedInstances, "post_sort")
+ await utils.copyCookie("libreddit", from, checkedInstances, "comment_sort")
+ await utils.copyCookie("libreddit", from, checkedInstances, "show_nsfw")
+ await utils.copyCookie("libreddit", from, checkedInstances, "autoplay_videos")
+ await utils.copyCookie("libreddit", from, checkedInstances, "use_hls")
+ await utils.copyCookie("libreddit", from, checkedInstances, "hide_hls_notification")
+ await utils.copyCookie("libreddit", from, checkedInstances, "subscriptions")
+ await utils.copyCookie("libreddit", from, checkedInstances, "filters")
+ }
+ resolve(true)
+ })
}
function pasteLibredditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'libreddit' || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('libreddit', checkedInstances, "theme");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "front_page");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "layout");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "wide");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "post_sort");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "comment_sort");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "show_nsfw");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "autoplay_videos");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "use_hls");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "hide_hls_notification");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "subscriptions");
- utils.getCookiesFromStorage('libreddit', checkedInstances, "filters");
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit || redditFrontend != "libreddit" || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "theme")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "front_page")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "layout")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "wide")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "post_sort")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "comment_sort")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "show_nsfw")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "autoplay_videos")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "use_hls")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "hide_hls_notification")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "subscriptions")
+ utils.getCookiesFromStorage("libreddit", checkedInstances, "filters")
+ resolve()
+ })
}
function initTedditCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...tedditNormalRedirectsChecks,
- ...tedditTorRedirectsChecks,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ...tedditI2pCustomRedirects,
- ...tedditI2pCustomRedirects
-
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![...tedditNormalRedirectsChecks, ...tedditTorRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects, ...tedditI2pCustomRedirects, ...tedditI2pCustomRedirects].includes(
+ protocolHost
+ )
+ )
+ resolve()
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- await utils.copyCookie('teddit', from, checkedInstances, 'collapse_child_comments')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_instagram')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_twitter')
- await utils.copyCookie('teddit', from, checkedInstances, 'domain_youtube')
- await utils.copyCookie('teddit', from, checkedInstances, 'flairs')
- await utils.copyCookie('teddit', from, checkedInstances, 'highlight_controversial')
- await utils.copyCookie('teddit', from, checkedInstances, 'nsfw_enabled')
- await utils.copyCookie('teddit', from, checkedInstances, 'post_media_max_height')
- await utils.copyCookie('teddit', from, checkedInstances, 'show_upvoted_percentage')
- await utils.copyCookie('teddit', from, checkedInstances, 'show_upvotes')
- await utils.copyCookie('teddit', from, checkedInstances, 'theme')
- await utils.copyCookie('teddit', from, checkedInstances, 'videos_muted')
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ await utils.copyCookie("teddit", from, checkedInstances, "collapse_child_comments")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_instagram")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_twitter")
+ await utils.copyCookie("teddit", from, checkedInstances, "domain_youtube")
+ await utils.copyCookie("teddit", from, checkedInstances, "flairs")
+ await utils.copyCookie("teddit", from, checkedInstances, "highlight_controversial")
+ await utils.copyCookie("teddit", from, checkedInstances, "nsfw_enabled")
+ await utils.copyCookie("teddit", from, checkedInstances, "post_media_max_height")
+ await utils.copyCookie("teddit", from, checkedInstances, "show_upvoted_percentage")
+ await utils.copyCookie("teddit", from, checkedInstances, "show_upvotes")
+ await utils.copyCookie("teddit", from, checkedInstances, "theme")
+ await utils.copyCookie("teddit", from, checkedInstances, "videos_muted")
+ }
+ resolve(true)
+ })
}
function pasteTedditCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableReddit || redditFrontend != 'teddit' || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('teddit', checkedInstances, 'collapse_child_comments')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_instagram')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_twitter')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_youtube')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'flairs')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'highlight_controversial')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'nsfw_enabled')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'post_media_max_height')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvoted_percentage')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvotes')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'theme')
- utils.getCookiesFromStorage('teddit', checkedInstances, 'videos_muted')
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit || redditFrontend != "teddit" || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("teddit", checkedInstances, "collapse_child_comments")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_instagram")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_twitter")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "domain_youtube")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "flairs")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "highlight_controversial")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "nsfw_enabled")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "post_media_max_height")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvoted_percentage")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvotes")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "theme")
+ utils.getCookiesFromStorage("teddit", checkedInstances, "videos_muted")
+ resolve()
+ })
}
function all() {
- return [
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor,
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor,
- ...libredditNormalCustomRedirects,
- ...libredditTorCustomRedirects,
- ...libredditI2pCustomRedirects,
- ...libredditLokiCustomRedirects,
- ...tedditNormalCustomRedirects,
- ...tedditTorCustomRedirects,
- ...tedditI2pCustomRedirects,
- ...tedditLokiCustomRedirects
- ];
+ return [
+ ...redditRedirects.libreddit.normal,
+ ...redditRedirects.libreddit.tor,
+ ...redditRedirects.teddit.normal,
+ ...redditRedirects.teddit.tor,
+ ...libredditNormalCustomRedirects,
+ ...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects,
+ ...tedditNormalCustomRedirects,
+ ...tedditTorCustomRedirects,
+ ...tedditI2pCustomRedirects,
+ ...tedditLokiCustomRedirects,
+ ]
}
// https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
@@ -267,188 +264,189 @@ function all() {
// https://teddit.net/vids/1mq8d0ma3yk81.mp4
// https://teddit.net/pics/w:null_4v3t1vgvrzk81.png
-
// redd.it/t5379n
// https://v.redd.it/z08avb339n801/DASH_1_2_M
// https://i.redd.it/bfkhs659tzk81.jpg
function redirect(url, type, initiator, disableOverride) {
- if (disableReddit && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return;
- const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
- if (url.pathname.match(bypassPaths)) return;
+ if (disableReddit && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return
+ const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/
+ if (url.pathname.match(bypassPaths)) return
- let libredditInstancesList = [];
- let tedditInstancesList = [];
+ let libredditInstancesList = []
+ let tedditInstancesList = []
- if (protocol == 'loki') {
- libredditInstancesList = [...libredditLokiCustomRedirects];
- tedditInstancesList = [...tedditLokiCustomRedirects];
- }
- else if (protocol == 'i2p') {
- libredditInstancesList = [...libredditI2pCustomRedirects];
- tedditInstancesList = [...tedditI2pCustomRedirects];
- }
- else if (protocol == 'tor') {
- libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
+ if (protocol == "loki") {
+ libredditInstancesList = [...libredditLokiCustomRedirects]
+ tedditInstancesList = [...tedditLokiCustomRedirects]
+ } else if (protocol == "i2p") {
+ libredditInstancesList = [...libredditI2pCustomRedirects]
+ tedditInstancesList = [...tedditI2pCustomRedirects]
+ } else if (protocol == "tor") {
+ libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
- if (url.host === "i.redd.it") {
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`;
- }
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/img${url.pathname}${url.search}`
- }
- }
- else if (url.host === "redd.it") {
- if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (libredditInstancesList.length === 0) return;
- let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- // https://redd.it/foo => https://libredd.it/comments/foo
- return `${libredditRandomInstance}/comments${url.pathname}${url.search}`;
- }
- if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
- if (tedditInstancesList.length === 0) return;
- let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList);
- // https://redd.it/foo => https://teddit.net/comments/foo
- return `${tedditRandomInstance}/comments${url.pathname}${url.search}`
- }
- }
- else if (url.host === 'preview.redd.it') {
- if (redditFrontend == 'teddit') return;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList);
- return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`;
- }
- }
+ if (url.host === "i.redd.it") {
+ if (redditFrontend == "teddit") {
+ if (tedditInstancesList.length === 0) return
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList)
+ return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`
+ }
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ return `${libredditRandomInstance}/img${url.pathname}${url.search}`
+ }
+ } else if (url.host === "redd.it") {
+ if (redditFrontend == "libreddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (libredditInstancesList.length === 0) return
+ let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ // https://redd.it/foo => https://libredd.it/comments/foo
+ return `${libredditRandomInstance}/comments${url.pathname}${url.search}`
+ }
+ if (redditFrontend == "teddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) {
+ if (tedditInstancesList.length === 0) return
+ let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList)
+ // https://redd.it/foo => https://teddit.net/comments/foo
+ return `${tedditRandomInstance}/comments${url.pathname}${url.search}`
+ }
+ } else if (url.host === "preview.redd.it") {
+ if (redditFrontend == "teddit") return
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList)
+ return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`
+ }
+ }
- let randomInstance;
- if (redditFrontend == 'libreddit') {
- if (libredditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(libredditInstancesList);
- }
- if (redditFrontend == 'teddit') {
- if (tedditInstancesList.length === 0) return;
- randomInstance = utils.getRandomInstance(tedditInstancesList);
- }
- return `${randomInstance}${url.pathname}${url.search}`;
+ let randomInstance
+ if (redditFrontend == "libreddit") {
+ if (libredditInstancesList.length === 0) return
+ randomInstance = utils.getRandomInstance(libredditInstancesList)
+ }
+ if (redditFrontend == "teddit") {
+ if (tedditInstancesList.length === 0) return
+ randomInstance = utils.getRandomInstance(tedditInstancesList)
+ }
+ return `${randomInstance}${url.pathname}${url.search}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableReddit && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (redditFrontend == 'libreddit') {
- if (protocol == 'loki') instancesList = [...libredditLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...libredditI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- }
- if ([
- ...redditRedirects.teddit.normal,
- ...redditRedirects.teddit.tor
- ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/");
- }
- else if (redditFrontend == 'teddit') {
- if (protocol == 'loki') instancesList = [...tedditLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...tedditI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- }
- if ([
- ...redditRedirects.libreddit.normal,
- ...redditRedirects.libreddit.tor
- ].includes(protocolHost)
- ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_");
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableReddit && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (redditFrontend == "libreddit") {
+ if (protocol == "loki") instancesList = [...libredditLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...libredditI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
+ }
+ if ([...redditRedirects.teddit.normal, ...redditRedirects.teddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/")
+ } else if (redditFrontend == "teddit") {
+ if (protocol == "loki") instancesList = [...tedditLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...tedditI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
+ }
+ if ([...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/img/", "/pics/w:null_")
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- libredditNormalRedirectsChecks = [...redirects.libreddit.normal];
- tedditNormalRedirectsChecks = [...redirects.teddit.normal]
- for (const instance of r.cloudflareBlackList) {
- let i;
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ libredditNormalRedirectsChecks = [...redirects.libreddit.normal]
+ tedditNormalRedirectsChecks = [...redirects.teddit.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
- i = libredditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) libredditNormalRedirectsChecks.splice(i, 1);
+ i = libredditNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) libredditNormalRedirectsChecks.splice(i, 1)
- i = tedditNormalRedirectsChecks.indexOf(instance);
- if (i > -1) tedditNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableReddit: false,
- redditFrontend: 'libreddit',
- redditRedirects: redirects,
+ i = tedditNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) tedditNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableReddit: false,
+ redditFrontend: "libreddit",
+ redditRedirects: redirects,
- libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
- libredditNormalCustomRedirects: [],
+ libredditNormalRedirectsChecks: libredditNormalRedirectsChecks,
+ libredditNormalCustomRedirects: [],
- libredditTorRedirectsChecks: [...redirects.libreddit.tor],
- libredditTorCustomRedirects: [],
+ libredditTorRedirectsChecks: [...redirects.libreddit.tor],
+ libredditTorCustomRedirects: [],
- libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
- libredditI2pCustomRedirects: [],
+ libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
+ libredditI2pCustomRedirects: [],
- libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
- libredditLokiCustomRedirects: [],
+ libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
+ libredditLokiCustomRedirects: [],
- tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
- tedditNormalCustomRedirects: [],
+ tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
+ tedditNormalCustomRedirects: [],
- tedditTorRedirectsChecks: [...redirects.teddit.tor],
- tedditTorCustomRedirects: [],
+ tedditTorRedirectsChecks: [...redirects.teddit.tor],
+ tedditTorCustomRedirects: [],
- tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
- tedditI2pCustomRedirects: [],
+ tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
+ tedditI2pCustomRedirects: [],
- tedditLokiRedirectsChecks: [...redirects.teddit.loki],
- tedditLokiCustomRedirects: []
- }, () => resolve());
- });
- });
- });
+ tedditLokiRedirectsChecks: [...redirects.teddit.loki],
+ tedditLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- initLibredditCookies,
- pasteLibredditCookies,
- initTedditCookies,
- pasteTedditCookies,
+ setRedirects,
+ initLibredditCookies,
+ pasteLibredditCookies,
+ initTedditCookies,
+ pasteTedditCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index e1d18a40..e4afa19c 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -1,152 +1,140 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)reuters\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)reuters\.com.*/]
-let redirects = {
- "neuters": {
- "normal": [
- "https://neuters.de"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- }
-}
+const frontends = new Array("neuters")
+const protocols = new Array("normal", "tor", "i2p", "loki")
-// const frontends = new Array("neuters")
-// const protocols = new Array("normal", "tor", "i2p", "loki")
+let redirects = {}
-// for (let i = 0; i < frontends.length; i++) {
-// redirects[frontends[i]] = {}
-// for (let x = 0; x < protocols.length; x++) {
-// redirects[frontends[i]][protocols[x]] = []
-// }
-// }
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
+}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.neuters = val;
- neutersNormalRedirectsChecks = [...redirects.neuters.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = neutersNormalRedirectsChecks.indexOf(instance);
- if (a > -1) neutersNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- neutersRedirects: redirects,
- neutersNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.neuters = val
+ neutersNormalRedirectsChecks = [...redirects.neuters.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = neutersNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) neutersNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ neutersRedirects: redirects,
+ neutersNormalRedirectsChecks,
+ })
+ })
}
-let
- disableReuters,
- protocol,
- protocolFallback,
- reutersRedirects,
- neutersNormalRedirectsChecks,
- neutersNormalCustomRedirects,
- neutersTorRedirectsChecks,
- neutersTorCustomRedirects,
- neutersI2pCustomRedirects,
- neutersLokiCustomRedirects;
+let disableReuters,
+ protocol,
+ protocolFallback,
+ reutersRedirects,
+ neutersNormalRedirectsChecks,
+ neutersNormalCustomRedirects,
+ neutersTorRedirectsChecks,
+ neutersTorCustomRedirects,
+ neutersI2pCustomRedirects,
+ neutersLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableReuters",
- "protocol",
- "protocolFallback",
- "reutersRedirects",
- "neutersNormalRedirectsChecks",
- "neutersNormalCustomRedirects",
- "neutersTorRedirectsChecks",
- "neutersTorCustomRedirects",
- "neutersI2pCustomRedirects",
- "neutersLokiCustomRedirects"
- ],
- r => {
- disableReuters = r.disableReuters;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- reutersRedirects = r.reutersRedirects;
- neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks;
- neutersNormalCustomRedirects = r.neutersNormalCustomRedirects;
- neutersTorRedirectsChecks = r.neutersTorRedirectsChecks;
- neutersTorCustomRedirects = r.neutersTorCustomRedirects;
- neutersI2pCustomRedirects = r.neutersI2pCustomRedirects;
- neutersLokiCustomRedirects = r.neutersLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableReuters",
+ "protocol",
+ "protocolFallback",
+ "reutersRedirects",
+ "neutersNormalRedirectsChecks",
+ "neutersNormalCustomRedirects",
+ "neutersTorRedirectsChecks",
+ "neutersTorCustomRedirects",
+ "neutersI2pCustomRedirects",
+ "neutersLokiCustomRedirects",
+ ],
+ r => {
+ disableReuters = r.disableReuters
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ reutersRedirects = r.reutersRedirects
+ neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks
+ neutersNormalCustomRedirects = r.neutersNormalCustomRedirects
+ neutersTorRedirectsChecks = r.neutersTorRedirectsChecks
+ neutersTorCustomRedirects = r.neutersTorCustomRedirects
+ neutersI2pCustomRedirects = r.neutersI2pCustomRedirects
+ neutersLokiCustomRedirects = r.neutersLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator, disableOverride) {
- if (disableReuters && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...reutersRedirects.neuters.normal,
- ...neutersNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableReuters && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...reutersRedirects.neuters.normal, ...neutersNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...neutersLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...neutersI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...neutersLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...neutersI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
- if (
- url.pathname.startsWith('/article/') ||
- url.pathname.startsWith('/pf/') ||
- url.pathname.startsWith('/arc/') ||
- url.pathname.startsWith('/resizer/')
- )
- return null;
- else if (url.pathname.endsWith('/'))
- return `${randomInstance}${url.pathname}`;
- else
- return `${randomInstance}${url.pathname}/`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
+ if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null
+ else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}`
+ else return `${randomInstance}${url.pathname}/`
}
function initDefaults() {
- return new Promise(resolve => {
- browser.storage.local.set({
- disableReuters: true,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableReuters: true,
- reutersRedirects: redirects,
+ reutersRedirects: redirects,
- neutersNormalRedirectsChecks: [...redirects.neuters.normal],
- neutersNormalCustomRedirects: [],
+ neutersNormalRedirectsChecks: [...redirects.neuters.normal],
+ neutersNormalCustomRedirects: [],
- neutersTorRedirectsChecks: [...redirects.neuters.tor],
- neutersTorCustomRedirects: [],
+ neutersTorRedirectsChecks: [...redirects.neuters.tor],
+ neutersTorCustomRedirects: [],
- neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
- neutersI2pCustomRedirects: [],
+ neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
+ neutersI2pCustomRedirects: [],
- neutersLokiRedirectsChecks: [...redirects.neuters.loki],
- neutersLokiCustomRedirects: []
- }, () => resolve());
- });
+ neutersLokiRedirectsChecks: [...redirects.neuters.loki],
+ neutersLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- initDefaults
-};
+ setRedirects,
+ redirect,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js
index 15272aa9..b076f5d0 100644
--- a/src/assets/javascripts/search.js
+++ b/src/assets/javascripts/search.js
@@ -1,16 +1,14 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}search\.libredirect\.invalid/,
-];
+const targets = [/^https?:\/{2}search\.libredirect\.invalid/]
// Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript
const frontends = new Array("searx", "searxng", "whoogle", "librex")
const protocols = new Array("normal", "tor", "i2p", "loki")
const redirects = {}
- /*
+/*
"searx": {
"normal": [],
"tor": [],
@@ -32,640 +30,673 @@ const redirects = {}
//let tmp = "{"
for (let i = 0; i < frontends.length; i++) {
- //redirects.frontends[i] = {}
- //redirects.push(frontends[i])
- //tmp = frontends[i]
- //tmp = tmp + '\n"' + frontends[i] + '": {'
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- //redirects.frontends[i].protocols = []
- //tmp = tmp + '\n"' + protocols[x] + '": [],'
- redirects[frontends[i]][protocols[x]] = []
- }
- //tmp = tmp + "\n},"
+ //redirects.frontends[i] = {}
+ //redirects.push(frontends[i])
+ //tmp = frontends[i]
+ //tmp = tmp + '\n"' + frontends[i] + '": {'
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ //redirects.frontends[i].protocols = []
+ //tmp = tmp + '\n"' + protocols[x] + '": [],'
+ redirects[frontends[i]][protocols[x]] = []
+ }
+ //tmp = tmp + "\n},"
}
//tmp = tmp + "\n}"
//const redirects = JSON.parse(tmp)
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', 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) {
- const a = searxNormalRedirectsChecks.indexOf(instance);
- if (a > -1) searxNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", 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) {
+ 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,
- searxngNormalRedirectsChecks,
- whoogleNormalRedirectsChecks,
- librexNormalRedirectsChecks,
- });
- })
+ const d = librexNormalRedirectsChecks.indexOf(instance)
+ if (d > -1) librexNormalRedirectsChecks.splice(d, 1)
+ }
+ browser.storage.local.set({
+ searchRedirects: redirects,
+ searxNormalRedirectsChecks,
+ searxngNormalRedirectsChecks,
+ whoogleNormalRedirectsChecks,
+ librexNormalRedirectsChecks,
+ })
+ })
}
-let
- disableSearch,
- searchFrontend,
- searchRedirects,
- protocol,
- protocolFallback,
- whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects,
- whoogleTorRedirectsChecks,
- whoogleTorCustomRedirects,
- whoogleI2pRedirectsChecks,
- whoogleI2pCustomRedirects,
- whoogleLokiCustomRedirects,
- searxNormalRedirectsChecks,
- searxNormalCustomRedirects,
- searxTorRedirectsChecks,
- searxTorCustomRedirects,
- searxI2pRedirectsChecks,
- searxI2pCustomRedirects,
- searxLokiCustomRedirects,
- searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects,
- searxngTorRedirectsChecks,
- searxngTorCustomRedirects,
- searxngI2pRedirectsChecks,
- searxngI2pCustomRedirects,
- searxngLokiCustomRedirects,
- librexNormalRedirectsChecks,
- librexNormalCustomRedirects,
- librexTorRedirectsChecks,
- librexTorCustomRedirects,
- librexI2pRedirectsChecks,
- librexI2pCustomRedirects,
- librexLokiCustomRedirects;
+let disableSearch,
+ searchFrontend,
+ searchRedirects,
+ protocol,
+ protocolFallback,
+ whoogleNormalRedirectsChecks,
+ whoogleNormalCustomRedirects,
+ whoogleTorRedirectsChecks,
+ whoogleTorCustomRedirects,
+ whoogleI2pRedirectsChecks,
+ whoogleI2pCustomRedirects,
+ whoogleLokiCustomRedirects,
+ searxNormalRedirectsChecks,
+ searxNormalCustomRedirects,
+ searxTorRedirectsChecks,
+ searxTorCustomRedirects,
+ searxI2pRedirectsChecks,
+ searxI2pCustomRedirects,
+ searxLokiCustomRedirects,
+ searxngNormalRedirectsChecks,
+ searxngNormalCustomRedirects,
+ searxngTorRedirectsChecks,
+ searxngTorCustomRedirects,
+ searxngI2pRedirectsChecks,
+ searxngI2pCustomRedirects,
+ searxngLokiCustomRedirects,
+ librexNormalRedirectsChecks,
+ librexNormalCustomRedirects,
+ librexTorRedirectsChecks,
+ librexTorCustomRedirects,
+ librexI2pRedirectsChecks,
+ librexI2pCustomRedirects,
+ librexLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableSearch",
- "searchFrontend",
- "searchRedirects",
- "protocol",
- "protocolFallback",
- "whoogleNormalRedirectsChecks",
- "whoogleNormalCustomRedirects",
- "whoogleTorRedirectsChecks",
- "whoogleTorCustomRedirects",
- "whoogleI2pRedirectsChecks",
- "whoogleI2pCustomRedirects",
- "whoogleLokiCustomRedirects",
- "searxNormalRedirectsChecks",
- "searxNormalCustomRedirects",
- "searxTorRedirectsChecks",
- "searxTorCustomRedirects",
- "searxI2pRedirectsChecks",
- "searxI2pCustomRedirects",
- "searxLokiCustomRedirects",
- "searxngNormalRedirectsChecks",
- "searxngNormalCustomRedirects",
- "searxngTorRedirectsChecks",
- "searxngTorCustomRedirects",
- "searxngI2pRedirectsChecks",
- "searxngI2pCustomRedirects",
- "searxngLokiCustomRedirects",
- "librexNormalRedirectsChecks",
- "librexNormalCustomRedirects",
- "librexTorRedirectsChecks",
- "librexTorCustomRedirects",
- "librexI2pRedirectsChecks",
- "librexI2pCustomRedirects",
- "librexLokiCustomRedirects"
- ],
- r => {
- disableSearch = r.disableSearch;
- searchFrontend = r.searchFrontend;
- searchRedirects = r.searchRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks;
- whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects;
- whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks;
- whoogleTorCustomRedirects = r.whoogleTorCustomRedirects;
- whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks;
- whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects;
- whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects;
- searxNormalRedirectsChecks = r.searxNormalRedirectsChecks;
- searxNormalCustomRedirects = r.searxNormalCustomRedirects;
- searxTorRedirectsChecks = r.searxTorRedirectsChecks;
- searxTorCustomRedirects = r.searxTorCustomRedirects;
- searxI2pRedirectsChecks = r.searxI2pRedirectsChecks;
- searxI2pCustomRedirects = r.searxI2pCustomRedirects;
- searxLokiCustomRedirects = r.searxLokiCustomRedirects;
- searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks;
- searxngNormalCustomRedirects = r.searxngNormalCustomRedirects;
- searxngTorRedirectsChecks = r.searxngTorRedirectsChecks;
- searxngTorCustomRedirects = r.searxngTorCustomRedirects;
- searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks;
- searxngI2pCustomRedirects = r.searxngI2pCustomRedirects;
- searxngLokiCustomRedirects = r.searxngLokiCustomRedirects;
- librexNormalRedirectsChecks = r.librexNormalRedirectsChecks;
- librexNormalCustomRedirects = r.librexNormalCustomRedirects;
- librexTorRedirectsChecks = r.librexTorRedirectsChecks;
- librexTorCustomRedirects = r.librexTorCustomRedirects;
- librexI2pRedirectsChecks = r.librexI2pRedirectsChecks;
- librexI2pCustomRedirects = r.librexI2pCustomRedirects;
- librexLokiCustomRedirects = r.librexLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableSearch",
+ "searchFrontend",
+ "searchRedirects",
+ "protocol",
+ "protocolFallback",
+ "whoogleNormalRedirectsChecks",
+ "whoogleNormalCustomRedirects",
+ "whoogleTorRedirectsChecks",
+ "whoogleTorCustomRedirects",
+ "whoogleI2pRedirectsChecks",
+ "whoogleI2pCustomRedirects",
+ "whoogleLokiCustomRedirects",
+ "searxNormalRedirectsChecks",
+ "searxNormalCustomRedirects",
+ "searxTorRedirectsChecks",
+ "searxTorCustomRedirects",
+ "searxI2pRedirectsChecks",
+ "searxI2pCustomRedirects",
+ "searxLokiCustomRedirects",
+ "searxngNormalRedirectsChecks",
+ "searxngNormalCustomRedirects",
+ "searxngTorRedirectsChecks",
+ "searxngTorCustomRedirects",
+ "searxngI2pRedirectsChecks",
+ "searxngI2pCustomRedirects",
+ "searxngLokiCustomRedirects",
+ "librexNormalRedirectsChecks",
+ "librexNormalCustomRedirects",
+ "librexTorRedirectsChecks",
+ "librexTorCustomRedirects",
+ "librexI2pRedirectsChecks",
+ "librexI2pCustomRedirects",
+ "librexLokiCustomRedirects",
+ ],
+ r => {
+ disableSearch = r.disableSearch
+ searchFrontend = r.searchFrontend
+ searchRedirects = r.searchRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks
+ whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects
+ whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks
+ whoogleTorCustomRedirects = r.whoogleTorCustomRedirects
+ whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks
+ whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects
+ whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects
+ searxNormalRedirectsChecks = r.searxNormalRedirectsChecks
+ searxNormalCustomRedirects = r.searxNormalCustomRedirects
+ searxTorRedirectsChecks = r.searxTorRedirectsChecks
+ searxTorCustomRedirects = r.searxTorCustomRedirects
+ searxI2pRedirectsChecks = r.searxI2pRedirectsChecks
+ searxI2pCustomRedirects = r.searxI2pCustomRedirects
+ searxLokiCustomRedirects = r.searxLokiCustomRedirects
+ searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks
+ searxngNormalCustomRedirects = r.searxngNormalCustomRedirects
+ searxngTorRedirectsChecks = r.searxngTorRedirectsChecks
+ searxngTorCustomRedirects = r.searxngTorCustomRedirects
+ searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks
+ searxngI2pCustomRedirects = r.searxngI2pCustomRedirects
+ searxngLokiCustomRedirects = r.searxngLokiCustomRedirects
+ librexNormalRedirectsChecks = r.librexNormalRedirectsChecks
+ librexNormalCustomRedirects = r.librexNormalCustomRedirects
+ librexTorRedirectsChecks = r.librexTorRedirectsChecks
+ librexTorCustomRedirects = r.librexTorCustomRedirects
+ librexI2pRedirectsChecks = r.librexI2pRedirectsChecks
+ librexI2pCustomRedirects = r.librexI2pCustomRedirects
+ librexLokiCustomRedirects = r.librexLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initSearxCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxNormalRedirectsChecks,
- ...searxNormalCustomRedirects,
- ...searxTorRedirectsChecks,
- ...searxTorCustomRedirects,
- ...searxI2pRedirectsChecks,
- ...searxI2pCustomRedirects,
- ...searxLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...searxNormalRedirectsChecks,
+ ...searxNormalCustomRedirects,
+ ...searxTorRedirectsChecks,
+ ...searxTorCustomRedirects,
+ ...searxI2pRedirectsChecks,
+ ...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- await utils.copyCookie('searx', from, checkedInstances, 'advanced_search');
- await utils.copyCookie('searx', from, checkedInstances, 'autocomplete');
- await utils.copyCookie('searx', from, checkedInstances, 'categories');
- await utils.copyCookie('searx', from, checkedInstances, 'disabled_engines');
- await utils.copyCookie('searx', from, checkedInstances, 'disabled_plugins');
- await utils.copyCookie('searx', from, checkedInstances, 'doi_resolver');
- await utils.copyCookie('searx', from, checkedInstances, 'enabled_engines');
- await utils.copyCookie('searx', from, checkedInstances, 'enabled_plugins');
- await utils.copyCookie('searx', from, checkedInstances, 'image_proxy');
- await utils.copyCookie('searx', from, checkedInstances, 'language');
- await utils.copyCookie('searx', from, checkedInstances, 'locale');
- await utils.copyCookie('searx', from, checkedInstances, 'method');
- await utils.copyCookie('searx', from, checkedInstances, 'oscar-style');
- await utils.copyCookie('searx', from, checkedInstances, 'results_on_new_tab');
- await utils.copyCookie('searx', from, checkedInstances, 'safesearch');
- await utils.copyCookie('searx', from, checkedInstances, 'theme');
- await utils.copyCookie('searx', from, checkedInstances, 'tokens');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ await utils.copyCookie("searx", from, checkedInstances, "advanced_search")
+ await utils.copyCookie("searx", from, checkedInstances, "autocomplete")
+ await utils.copyCookie("searx", from, checkedInstances, "categories")
+ await utils.copyCookie("searx", from, checkedInstances, "disabled_engines")
+ await utils.copyCookie("searx", from, checkedInstances, "disabled_plugins")
+ await utils.copyCookie("searx", from, checkedInstances, "doi_resolver")
+ await utils.copyCookie("searx", from, checkedInstances, "enabled_engines")
+ await utils.copyCookie("searx", from, checkedInstances, "enabled_plugins")
+ await utils.copyCookie("searx", from, checkedInstances, "image_proxy")
+ await utils.copyCookie("searx", from, checkedInstances, "language")
+ await utils.copyCookie("searx", from, checkedInstances, "locale")
+ await utils.copyCookie("searx", from, checkedInstances, "method")
+ await utils.copyCookie("searx", from, checkedInstances, "oscar-style")
+ await utils.copyCookie("searx", from, checkedInstances, "results_on_new_tab")
+ await utils.copyCookie("searx", from, checkedInstances, "safesearch")
+ await utils.copyCookie("searx", from, checkedInstances, "theme")
+ await utils.copyCookie("searx", from, checkedInstances, "tokens")
+ }
+ resolve(true)
+ })
}
function pasteSearxCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searx') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('searx', checkedInstances, 'advanced_search');
- utils.getCookiesFromStorage('searx', checkedInstances, 'autocomplete');
- utils.getCookiesFromStorage('searx', checkedInstances, 'categories');
- utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_engines');
- utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_plugins');
- utils.getCookiesFromStorage('searx', checkedInstances, 'doi_resolver');
- utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_engines');
- utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_plugins');
- utils.getCookiesFromStorage('searx', checkedInstances, 'image_proxy');
- utils.getCookiesFromStorage('searx', checkedInstances, 'language');
- utils.getCookiesFromStorage('searx', checkedInstances, 'locale');
- utils.getCookiesFromStorage('searx', checkedInstances, 'method');
- utils.getCookiesFromStorage('searx', checkedInstances, 'oscar-style');
- utils.getCookiesFromStorage('searx', checkedInstances, 'results_on_new_tab');
- utils.getCookiesFromStorage('searx', checkedInstances, 'safesearch');
- utils.getCookiesFromStorage('searx', checkedInstances, 'theme');
- utils.getCookiesFromStorage('searx', checkedInstances, 'tokens');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableSearch || searchFrontend != "searx") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("searx", checkedInstances, "advanced_search")
+ utils.getCookiesFromStorage("searx", checkedInstances, "autocomplete")
+ utils.getCookiesFromStorage("searx", checkedInstances, "categories")
+ utils.getCookiesFromStorage("searx", checkedInstances, "disabled_engines")
+ utils.getCookiesFromStorage("searx", checkedInstances, "disabled_plugins")
+ utils.getCookiesFromStorage("searx", checkedInstances, "doi_resolver")
+ utils.getCookiesFromStorage("searx", checkedInstances, "enabled_engines")
+ utils.getCookiesFromStorage("searx", checkedInstances, "enabled_plugins")
+ utils.getCookiesFromStorage("searx", checkedInstances, "image_proxy")
+ utils.getCookiesFromStorage("searx", checkedInstances, "language")
+ utils.getCookiesFromStorage("searx", checkedInstances, "locale")
+ utils.getCookiesFromStorage("searx", checkedInstances, "method")
+ utils.getCookiesFromStorage("searx", checkedInstances, "oscar-style")
+ utils.getCookiesFromStorage("searx", checkedInstances, "results_on_new_tab")
+ utils.getCookiesFromStorage("searx", checkedInstances, "safesearch")
+ utils.getCookiesFromStorage("searx", checkedInstances, "theme")
+ utils.getCookiesFromStorage("searx", checkedInstances, "tokens")
+ resolve()
+ })
}
function initSearxngCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...searxngNormalRedirectsChecks,
- ...searxngNormalCustomRedirects,
- ...searxngTorRedirectsChecks,
- ...searxngTorCustomRedirects,
- ...searxngI2pRedirectsChecks,
- ...searxngI2pCustomRedirects,
- ...searxngLokiCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...searxngNormalRedirectsChecks,
+ ...searxngNormalCustomRedirects,
+ ...searxngTorRedirectsChecks,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pRedirectsChecks,
+ ...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- await utils.copyCookie('searxng', from, checkedInstances, 'autocomplete');
- await utils.copyCookie('searxng', from, checkedInstances, 'categories');
- await utils.copyCookie('searxng', from, checkedInstances, 'disabled_engines');
- await utils.copyCookie('searxng', from, checkedInstances, 'disabled_plugins');
- await utils.copyCookie('searxng', from, checkedInstances, 'doi_resolver');
- await utils.copyCookie('searxng', from, checkedInstances, 'enabled_plugins');
- await utils.copyCookie('searxng', from, checkedInstances, 'enabled_engines');
- await utils.copyCookie('searxng', from, checkedInstances, 'image_proxy');
- await utils.copyCookie('searxng', from, checkedInstances, 'infinite_scroll');
- await utils.copyCookie('searxng', from, checkedInstances, 'language');
- await utils.copyCookie('searxng', from, checkedInstances, 'locale');
- await utils.copyCookie('searxng', from, checkedInstances, 'maintab');
- await utils.copyCookie('searxng', from, checkedInstances, 'method');
- await utils.copyCookie('searxng', from, checkedInstances, 'query_in_title');
- await utils.copyCookie('searxng', from, checkedInstances, 'results_on_new_tab');
- await utils.copyCookie('searxng', from, checkedInstances, 'safesearch');
- await utils.copyCookie('searxng', from, checkedInstances, 'simple_style');
- await utils.copyCookie('searxng', from, checkedInstances, 'theme');
- await utils.copyCookie('searxng', from, checkedInstances, 'tokens');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ await utils.copyCookie("searxng", from, checkedInstances, "autocomplete")
+ await utils.copyCookie("searxng", from, checkedInstances, "categories")
+ await utils.copyCookie("searxng", from, checkedInstances, "disabled_engines")
+ await utils.copyCookie("searxng", from, checkedInstances, "disabled_plugins")
+ await utils.copyCookie("searxng", from, checkedInstances, "doi_resolver")
+ await utils.copyCookie("searxng", from, checkedInstances, "enabled_plugins")
+ await utils.copyCookie("searxng", from, checkedInstances, "enabled_engines")
+ await utils.copyCookie("searxng", from, checkedInstances, "image_proxy")
+ await utils.copyCookie("searxng", from, checkedInstances, "infinite_scroll")
+ await utils.copyCookie("searxng", from, checkedInstances, "language")
+ await utils.copyCookie("searxng", from, checkedInstances, "locale")
+ await utils.copyCookie("searxng", from, checkedInstances, "maintab")
+ await utils.copyCookie("searxng", from, checkedInstances, "method")
+ await utils.copyCookie("searxng", from, checkedInstances, "query_in_title")
+ await utils.copyCookie("searxng", from, checkedInstances, "results_on_new_tab")
+ await utils.copyCookie("searxng", from, checkedInstances, "safesearch")
+ await utils.copyCookie("searxng", from, checkedInstances, "simple_style")
+ await utils.copyCookie("searxng", from, checkedInstances, "theme")
+ await utils.copyCookie("searxng", from, checkedInstances, "tokens")
+ }
+ resolve(true)
+ })
}
function pasteSearxngCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'searxng', protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('searxng', checkedInstances, 'autocomplete');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'categories');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_engines');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_plugins');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'doi_resolver');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_plugins');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_engines');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'image_proxy');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'infinite_scroll');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'language');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'locale');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'maintab');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'method');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'query_in_title');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'results_on_new_tab');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'safesearch');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'simple_style');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'theme');
- utils.getCookiesFromStorage('searxng', checkedInstances, 'tokens');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if ((disableSearch || searchFrontend != "searxng", protocol === undefined)) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("searxng", checkedInstances, "autocomplete")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "categories")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_engines")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_plugins")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "doi_resolver")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_plugins")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_engines")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "image_proxy")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "infinite_scroll")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "language")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "locale")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "maintab")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "method")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "query_in_title")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "results_on_new_tab")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "safesearch")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "simple_style")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "theme")
+ utils.getCookiesFromStorage("searxng", checkedInstances, "tokens")
+ resolve()
+ })
}
function initLibrexCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...librexNormalRedirectsChecks,
- ...librexNormalCustomRedirects,
- ...librexTorRedirectsChecks,
- ...librexTorCustomRedirects,
- ...librexI2pRedirectsChecks,
- ...librexI2pCustomRedirects,
- ...librexLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...librexNormalRedirectsChecks,
+ ...librexNormalCustomRedirects,
+ ...librexTorRedirectsChecks,
+ ...librexTorCustomRedirects,
+ ...librexI2pRedirectsChecks,
+ ...librexI2pCustomRedirects,
+ ...librexLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if(!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- await utils.copyCookie('librex', from, checkedInstances, 'bibliogram');
- await utils.copyCookie('librex', from, checkedInstances, 'disable_special');
- await utils.copyCookie('librex', from, checkedInstances, 'invidious');
- await utils.copyCookie('librex', from, checkedInstances, 'libreddit');
- await utils.copyCookie('librex', from, checkedInstances, 'nitter');
- await utils.copyCookie('librex', from, checkedInstances, 'proxitok');
- await utils.copyCookie('librex', from, checkedInstances, 'theme');
- await utils.copyCookie('librex', from, checkedInstances, 'wikiless');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ await utils.copyCookie("librex", from, checkedInstances, "bibliogram")
+ await utils.copyCookie("librex", from, checkedInstances, "disable_special")
+ await utils.copyCookie("librex", from, checkedInstances, "invidious")
+ await utils.copyCookie("librex", from, checkedInstances, "libreddit")
+ await utils.copyCookie("librex", from, checkedInstances, "nitter")
+ await utils.copyCookie("librex", from, checkedInstances, "proxitok")
+ await utils.copyCookie("librex", from, checkedInstances, "theme")
+ await utils.copyCookie("librex", from, checkedInstances, "wikiless")
+ }
+ resolve(true)
+ })
}
function pasteLibrexCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('librex', checkedInstances, 'bibliogram');
- utils.getCookiesFromStorage('librex', checkedInstances, 'disable_special');
- utils.getCookiesFromStorage('librex', checkedInstances, 'invidious');
- utils.getCookiesFromStorage('librex', checkedInstances, 'libreddit');
- utils.getCookiesFromStorage('librex', checkedInstances, 'nitter');
- utils.getCookiesFromStorage('librex', checkedInstances, 'proxitok');
- utils.getCookiesFromStorage('librex', checkedInstances, 'theme');
- utils.getCookiesFromStorage('librex', checkedInstances, 'wikiless');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if ((disableSearch || searchFrontend != "librex", protocol === undefined)) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("librex", checkedInstances, "bibliogram")
+ utils.getCookiesFromStorage("librex", checkedInstances, "disable_special")
+ utils.getCookiesFromStorage("librex", checkedInstances, "invidious")
+ utils.getCookiesFromStorage("librex", checkedInstances, "libreddit")
+ utils.getCookiesFromStorage("librex", checkedInstances, "nitter")
+ utils.getCookiesFromStorage("librex", checkedInstances, "proxitok")
+ utils.getCookiesFromStorage("librex", checkedInstances, "theme")
+ utils.getCookiesFromStorage("librex", checkedInstances, "wikiless")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (disableSearch && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.searchParams.has('tbm')) return;
- if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return;
- let randomInstance;
- let path;
- if (searchFrontend == 'searx') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...searxLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ if (disableSearch && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (url.searchParams.has("tbm")) return
+ if (url.hostname.includes("google") && !url.searchParams.has("q") && url.pathname != "/") return
+ let randomInstance
+ let path
+ if (searchFrontend == "searx") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...searxLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'searxng') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...searxngLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/"
+ } else if (searchFrontend == "searxng") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...searxngLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/";
- }
- else if (searchFrontend == 'whoogle') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...whoogleLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/"
+ } else if (searchFrontend == "whoogle") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...whoogleLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search";
- }
- else if (searchFrontend == 'librex') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...librexLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- if (instancesList.length === 0) { return; }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/search"
+ } else if (searchFrontend == "librex") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...librexLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) {
+ return
+ }
- randomInstance = utils.getRandomInstance(instancesList)
- path = "/search.php";
- }
+ randomInstance = utils.getRandomInstance(instancesList)
+ path = "/search.php"
+ }
- if (
- ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
- (url.hostname.includes('yandex') && !url.searchParams.has('text'))
- ) path = '/';
+ if (((url.hostname.includes("google") || url.hostname.includes("bing")) && !url.searchParams.has("q")) || (url.hostname.includes("yandex") && !url.searchParams.has("text"))) path = "/"
- let searchQuery = "";
- if (
- (
- url.hostname.includes('google') ||
- url.hostname.includes('bing') ||
- url.hostname.includes('search.libredirect.invalid')
- ) &&
- url.searchParams.has('q')
- ) searchQuery = `?q=${encodeURIComponent(url.searchParams.get('q'))}`;
- if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`;
+ let searchQuery = ""
+ if ((url.hostname.includes("google") || url.hostname.includes("bing") || url.hostname.includes("search.libredirect.invalid")) && url.searchParams.has("q"))
+ searchQuery = `?q=${encodeURIComponent(url.searchParams.get("q"))}`
+ if (url.hostname.includes("yandex") && url.searchParams.has("text")) searchQuery = `?q=${url.searchParams.get("text")}`
- return `${randomInstance}${path}${searchQuery}`;
+ return `${randomInstance}${path}${searchQuery}`
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableSearch && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- if (![
- ...searchRedirects.searx.normal,
- ...searchRedirects.searx.tor,
- ...searchRedirects.searx.i2p,
+ return new Promise(async resolve => {
+ await init()
+ if (disableSearch && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...searchRedirects.searx.normal,
+ ...searchRedirects.searx.tor,
+ ...searchRedirects.searx.i2p,
+
+ ...searchRedirects.searxng.normal,
+ ...searchRedirects.searxng.tor,
+ ...searchRedirects.searxng.i2p,
- ...searchRedirects.searxng.normal,
- ...searchRedirects.searxng.tor,
- ...searchRedirects.searxng.i2p,
+ ...searchRedirects.whoogle.normal,
+ ...searchRedirects.whoogle.tor,
+ ...searchRedirects.whoogle.i2p,
- ...searchRedirects.whoogle.normal,
- ...searchRedirects.whoogle.tor,
- ...searchRedirects.whoogle.i2p,
+ ...searchRedirects.librex.normal,
+ ...searchRedirects.librex.tor,
+ ...searchRedirects.librex.i2p,
- ...searchRedirects.librex.normal,
- ...searchRedirects.librex.tor,
- ...searchRedirects.librex.i2p,
+ ...searxNormalCustomRedirects,
+ ...searxTorCustomRedirects,
+ ...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects,
- ...searxNormalCustomRedirects,
- ...searxTorCustomRedirects,
- ...searxI2pCustomRedirects,
- ...searxLokiCustomRedirects,
+ ...searxngNormalCustomRedirects,
+ ...searxngTorCustomRedirects,
+ ...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
- ...searxngNormalCustomRedirects,
- ...searxngTorCustomRedirects,
- ...searxngI2pCustomRedirects,
- ...searxngLokiCustomRedirects,
+ ...whoogleNormalCustomRedirects,
+ ...whoogleTorCustomRedirects,
+ ...whoogleI2pCustomRedirects,
+ ...whoogleLokiCustomRedirects,
- ...whoogleNormalCustomRedirects,
- ...whoogleTorCustomRedirects,
- ...whoogleI2pCustomRedirects,
- ...whoogleLokiCustomRedirects,
+ ...librexNormalCustomRedirects,
+ ...librexTorCustomRedirects,
+ ...librexI2pCustomRedirects,
+ ...librexLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- ...librexNormalCustomRedirects,
- ...librexTorCustomRedirects,
- ...librexI2pCustomRedirects,
- ...librexLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ let instancesList = []
- let instancesList = [];
-
- if (protocol == 'loki') {
- if (searchFrontend == 'searx') instancesList = [...searxLokiCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngLokiCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleLokiCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexLokiCustomRedirects];
- }
- else if (protocol == 'tor') {
- if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects];
- }
- else if (protocol == 'i2p') {
- if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- else if (searchFrontend == 'librex') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects];
- }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ if (protocol == "loki") {
+ if (searchFrontend == "searx") instancesList = [...searxLokiCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngLokiCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleLokiCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexLokiCustomRedirects]
+ } else if (protocol == "tor") {
+ if (searchFrontend == "searx") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]
+ } else if (protocol == "i2p") {
+ if (searchFrontend == "searx") instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ if (searchFrontend == "searx") instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
+ else if (searchFrontend == "searxng") instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
+ else if (searchFrontend == "whoogle") instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]
+ else if (searchFrontend == "librex") instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]
+ }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- /*
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ /*
redirects.searx = dataJson.searx;
redirects.searxng = dataJson.searxng;
redirects.whoogle = dataJson.whoogle;
*/
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
- browser.storage.local.get('cloudflareBlackList', async r => {
- whoogleNormalRedirectsChecks = [...redirects.whoogle.normal];
- searxNormalRedirectsChecks = [...redirects.searx.normal];
- searxngNormalRedirectsChecks = [...redirects.searxng.normal];
- librexNormalRedirectsChecks = [...redirects.librex.normal];
- for (const instance of r.cloudflareBlackList) {
- let i;
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]
+ searxNormalRedirectsChecks = [...redirects.searx.normal]
+ searxngNormalRedirectsChecks = [...redirects.searxng.normal]
+ librexNormalRedirectsChecks = [...redirects.librex.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
- i = whoogleNormalRedirectsChecks.indexOf(instance);
- if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1);
+ i = whoogleNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1)
- i = searxNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxNormalRedirectsChecks.splice(i, 1);
+ i = searxNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) searxNormalRedirectsChecks.splice(i, 1)
- i = searxngNormalRedirectsChecks.indexOf(instance);
- if (i > -1) searxngNormalRedirectsChecks.splice(i, 1);
+ i = searxngNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) searxngNormalRedirectsChecks.splice(i, 1)
- i = librexNormalRedirectsChecks.indexOf(instance);
- if (i > -1) librexNormalRedirectsChecks.splice(i, 1)
- }
- browser.storage.local.set({
- disableSearch: false,
- searchFrontend: 'searxng',
- searchRedirects: redirects,
- searxngCustomSettings: false,
+ i = librexNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) librexNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableSearch: false,
+ searchFrontend: "searxng",
+ searchRedirects: redirects,
+ searxngCustomSettings: false,
- whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
- whoogleNormalCustomRedirects: [],
+ whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
+ whoogleNormalCustomRedirects: [],
- whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
- whoogleTorCustomRedirects: [],
+ whoogleTorRedirectsChecks: [...redirects.whoogle.tor],
+ whoogleTorCustomRedirects: [],
- whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
- whoogleI2pCustomRedirects: [],
+ whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
+ whoogleI2pCustomRedirects: [],
- whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
- whoogleLokiCustomRedirects: [],
+ whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
+ whoogleLokiCustomRedirects: [],
- searxNormalRedirectsChecks: searxNormalRedirectsChecks,
- searxNormalCustomRedirects: [],
+ searxNormalRedirectsChecks: searxNormalRedirectsChecks,
+ searxNormalCustomRedirects: [],
- searxTorRedirectsChecks: [...redirects.searx.tor],
- searxTorCustomRedirects: [],
+ searxTorRedirectsChecks: [...redirects.searx.tor],
+ searxTorCustomRedirects: [],
- searxI2pRedirectsChecks: [...redirects.searx.i2p],
- searxI2pCustomRedirects: [],
+ searxI2pRedirectsChecks: [...redirects.searx.i2p],
+ searxI2pCustomRedirects: [],
- searxLokiRedirectsChecks: [...redirects.searx.loki],
- searxLokiCustomRedirects: [],
+ searxLokiRedirectsChecks: [...redirects.searx.loki],
+ searxLokiCustomRedirects: [],
- searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
- searxngNormalCustomRedirects: [],
+ searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
+ searxngNormalCustomRedirects: [],
- searxngTorRedirectsChecks: [...redirects.searxng.tor],
- searxngTorCustomRedirects: [],
+ searxngTorRedirectsChecks: [...redirects.searxng.tor],
+ searxngTorCustomRedirects: [],
- searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
- searxngI2pCustomRedirects: [],
+ searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
+ searxngI2pCustomRedirects: [],
- searxngLokiRedirectsChecks: [...redirects.searxng.loki],
- searxngLokiCustomRedirects: [],
+ searxngLokiRedirectsChecks: [...redirects.searxng.loki],
+ searxngLokiCustomRedirects: [],
- librexNormalRedirectsChecks: librexNormalRedirectsChecks,
- librexNormalCustomRedirects: [],
+ librexNormalRedirectsChecks: librexNormalRedirectsChecks,
+ librexNormalCustomRedirects: [],
- librexTorRedirectsChecks: [...redirects.librex.tor],
- librexTorCustomRedirects: [],
+ librexTorRedirectsChecks: [...redirects.librex.tor],
+ librexTorCustomRedirects: [],
- librexI2pRedirectsChecks: [...redirects.librex.i2p],
- librexI2pCustomRedirects: [],
+ librexI2pRedirectsChecks: [...redirects.librex.i2p],
+ librexI2pCustomRedirects: [],
- librexLokiRedirectsChecks: [...redirects.librex.loki],
- librexLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ librexLokiRedirectsChecks: [...redirects.librex.loki],
+ librexLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- initSearxCookies,
- pasteSearxCookies,
- initSearxngCookies,
- pasteSearxngCookies,
- initLibrexCookies,
- pasteLibrexCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ setRedirects,
+ initSearxCookies,
+ pasteSearxCookies,
+ initSearxngCookies,
+ pasteSearxngCookies,
+ initLibrexCookies,
+ pasteLibrexCookies,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js
index 2ea95d21..ba892fe3 100644
--- a/src/assets/javascripts/sendTargets.js
+++ b/src/assets/javascripts/sendTargets.js
@@ -1,12 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}send\.libredirect\.invalid\/$/,
- /^ https ?: \/\/send\.firefox\.com\/$/,
- /^https?:\/{2}sendfiles\.online\/$/
-];
+const targets = [/^https?:\/{2}send\.libredirect\.invalid\/$/, /^ https ?: \/\/send\.firefox\.com\/$/, /^https?:\/{2}sendfiles\.online\/$/]
const frontends = new Array("send")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -14,167 +10,183 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.send = val;
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = sendNormalRedirectsChecks.indexOf(instance);
- if (a > -1) sendNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- sendTargetsRedirects: redirects,
- sendNormalRedirectsChecks,
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.send = val
+ sendNormalRedirectsChecks = [...redirects.send.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = sendNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) sendNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ sendTargetsRedirects: redirects,
+ sendNormalRedirectsChecks,
+ })
+ })
}
-let
- disableSendTarget,
- sendTargetsRedirects,
- sendNormalRedirectsChecks,
- sendNormalCustomRedirects,
- sendTorRedirectsChecks,
- sendTorCustomRedirects,
- sendI2pCustomRedirects,
- sendLokiCustomRedirects,
- protocol,
- protocolFallback;
+let disableSendTarget,
+ sendTargetsRedirects,
+ sendNormalRedirectsChecks,
+ sendNormalCustomRedirects,
+ sendTorRedirectsChecks,
+ sendTorCustomRedirects,
+ sendI2pCustomRedirects,
+ sendLokiCustomRedirects,
+ protocol,
+ protocolFallback
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableSendTarget",
- "sendTargetsRedirects",
- "protocol",
- "protocolFallback",
- "sendNormalRedirectsChecks",
- "sendNormalCustomRedirects",
- "sendTorRedirectsChecks",
- "sendTorCustomRedirects",
- "sendI2pCustomRedirects",
- "sendLokiCustomRedirects"
- ],
- r => {
- disableSendTarget = r.disableSendTarget;
- sendTargetsRedirects = r.sendTargetsRedirects;
- sendNormalRedirectsChecks = r.sendNormalRedirectsChecks;
- sendNormalCustomRedirects = r.sendNormalCustomRedirects;
- sendTorRedirectsChecks = r.sendTorRedirectsChecks;
- sendTorCustomRedirects = r.sendTorCustomRedirects;
- sendI2pCustomRedirects = r.sendI2pCustomRedirects;
- sendLokiCustomRedirects = r.sendLokiCustomRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableSendTarget",
+ "sendTargetsRedirects",
+ "protocol",
+ "protocolFallback",
+ "sendNormalRedirectsChecks",
+ "sendNormalCustomRedirects",
+ "sendTorRedirectsChecks",
+ "sendTorCustomRedirects",
+ "sendI2pCustomRedirects",
+ "sendLokiCustomRedirects",
+ ],
+ r => {
+ disableSendTarget = r.disableSendTarget
+ sendTargetsRedirects = r.sendTargetsRedirects
+ sendNormalRedirectsChecks = r.sendNormalRedirectsChecks
+ sendNormalCustomRedirects = r.sendNormalCustomRedirects
+ sendTorRedirectsChecks = r.sendTorRedirectsChecks
+ sendTorCustomRedirects = r.sendTorCustomRedirects
+ sendI2pCustomRedirects = r.sendI2pCustomRedirects
+ sendLokiCustomRedirects = r.sendLokiCustomRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...sendTargetsRedirects.send.normal,
- ...sendTargetsRedirects.send.tor,
- ...sendNormalCustomRedirects,
- ...sendTorRedirectsChecks,
- ...sendTorCustomRedirects,
- ...sendI2pCustomRedirects,
- ...sendLokiCustomRedirects
- ];
+ return [
+ ...sendTargetsRedirects.send.normal,
+ ...sendTargetsRedirects.send.tor,
+ ...sendNormalCustomRedirects,
+ ...sendTorRedirectsChecks,
+ ...sendTorCustomRedirects,
+ ...sendI2pCustomRedirects,
+ ...sendLokiCustomRedirects,
+ ]
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableSendTarget && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- if (url.pathname != '/') { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableSendTarget && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ if (url.pathname != "/") {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...sendLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function redirect(url, type, initiator, disableOverride) {
- if (disableSendTarget && !disableOverride) return;
- if (type != "main_frame") return;
- if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableSendTarget && !disableOverride) return
+ if (type != "main_frame") return
+ if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...sendLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- return randomInstance;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return randomInstance
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- sendNormalRedirectsChecks = [...redirects.send.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = sendNormalRedirectsChecks.indexOf(instance);
- if (i > -1) sendNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableSendTarget: false,
- sendTargetsRedirects: redirects,
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ sendNormalRedirectsChecks = [...redirects.send.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = sendNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) sendNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableSendTarget: false,
+ sendTargetsRedirects: redirects,
- sendNormalRedirectsChecks: sendNormalRedirectsChecks,
- sendNormalCustomRedirects: [],
+ sendNormalRedirectsChecks: sendNormalRedirectsChecks,
+ sendNormalCustomRedirects: [],
- sendTorRedirectsChecks: [...redirects.send.tor],
- sendTorCustomRedirects: [],
+ sendTorRedirectsChecks: [...redirects.send.tor],
+ sendTorCustomRedirects: [],
- sendI2pRedirectsChecks: [...redirects.send.i2p],
- sendI2pCustomRedirects: [],
+ sendI2pRedirectsChecks: [...redirects.send.i2p],
+ sendI2pCustomRedirects: [],
- sendLokiRedirectsChecks: [...redirects.send.loki],
- sendLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ sendLokiRedirectsChecks: [...redirects.send.loki],
+ sendLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js
index a5c14a27..ba4a9ff1 100644
--- a/src/assets/javascripts/tiktok.js
+++ b/src/assets/javascripts/tiktok.js
@@ -1,10 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|)tiktok\.com.*/
-];
+const targets = [/^https?:\/{2}(www\.|)tiktok\.com.*/]
const frontends = new Array("proxiTok")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -12,232 +10,251 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.proxiTok = val;
- proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = proxiTokNormalRedirectsChecks.indexOf(instance);
- if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- tiktokRedirects: redirects,
- proxiTokNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.proxiTok = val
+ proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = proxiTokNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ tiktokRedirects: redirects,
+ proxiTokNormalRedirectsChecks,
+ })
+ })
}
function initProxiTokCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(from);
- if (![
- ...proxiTokNormalRedirectsChecks,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorRedirectsChecks,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects,
- ].includes(protocolHost)) resolve();
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...proxiTokNormalRedirectsChecks,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorRedirectsChecks,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ].includes(protocolHost)
+ )
+ resolve()
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- await utils.copyCookie('proxitok', from, checkedInstances, 'theme');
- await utils.copyCookie('proxitok', from, checkedInstances, 'api-legacy');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ await utils.copyCookie("proxitok", from, checkedInstances, "theme")
+ await utils.copyCookie("proxitok", from, checkedInstances, "api-legacy")
+ }
+ resolve(true)
+ })
}
function pasteProxiTokCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableTiktok || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('proxitok', checkedInstances, 'theme');
- utils.getCookiesFromStorage('proxitok', checkedInstances, 'api-legacy');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableTiktok || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("proxitok", checkedInstances, "theme")
+ utils.getCookiesFromStorage("proxitok", checkedInstances, "api-legacy")
+ resolve()
+ })
}
-let
- disableTiktok,
- protocol,
- protocolFallback,
- tiktokRedirects,
- proxiTokNormalRedirectsChecks,
- proxiTokNormalCustomRedirects,
- proxiTokTorRedirectsChecks,
- proxiTokTorCustomRedirects,
- proxiTokI2pCustomRedirects,
- proxiTokLokiCustomRedirects;
+let disableTiktok,
+ protocol,
+ protocolFallback,
+ tiktokRedirects,
+ proxiTokNormalRedirectsChecks,
+ proxiTokNormalCustomRedirects,
+ proxiTokTorRedirectsChecks,
+ proxiTokTorCustomRedirects,
+ proxiTokI2pCustomRedirects,
+ proxiTokLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTiktok",
- "protocol",
- "protocolFallback",
- "tiktokRedirects",
- "proxiTokNormalRedirectsChecks",
- "proxiTokNormalCustomRedirects",
- "proxiTokTorRedirectsChecks",
- "proxiTokTorCustomRedirects",
- "proxiTokI2pCustomRedirects",
- "proxiTokLokiCustomRedirects"
- ],
- r => {
- disableTiktok = r.disableTiktok;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- tiktokRedirects = r.tiktokRedirects;
- proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks;
- proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects;
- proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks;
- proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects;
- proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects;
- proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableTiktok",
+ "protocol",
+ "protocolFallback",
+ "tiktokRedirects",
+ "proxiTokNormalRedirectsChecks",
+ "proxiTokNormalCustomRedirects",
+ "proxiTokTorRedirectsChecks",
+ "proxiTokTorCustomRedirects",
+ "proxiTokI2pCustomRedirects",
+ "proxiTokLokiCustomRedirects",
+ ],
+ r => {
+ disableTiktok = r.disableTiktok
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ tiktokRedirects = r.tiktokRedirects
+ proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks
+ proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects
+ proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks
+ proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects
+ proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects
+ proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
// https://www.tiktok.com/@keysikaspol/video/7061265241887345946
// https://www.tiktok.com/@keysikaspol
function redirect(url, type, initiator, disableOverride) {
- if (disableTiktok && !disableOverride) return;
- if (type != "main_frame") return;
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...proxiTokNormalCustomRedirects
- ];
- if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (disableTiktok && !disableOverride) return
+ if (type != "main_frame") return
+ const all = [...tiktokRedirects.proxiTok.normal, ...proxiTokNormalCustomRedirects]
+ if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}${url.pathname}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...tiktokRedirects.proxiTok.normal,
- ...tiktokRedirects.proxiTok.tor,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...tiktokRedirects.proxiTok.normal,
+ ...tiktokRedirects.proxiTok.tor,
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- resolve(`https://tiktok.com${url.pathname}${url.search}`);
- })
+ resolve(`https://tiktok.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableTiktok && !disableOverride) { resolve(); return; }
- let protocolHost = utils.protocolHost(url);
- const all = [
- ...tiktokRedirects.proxiTok.tor,
- ...tiktokRedirects.proxiTok.normal,
+ return new Promise(async resolve => {
+ await init()
+ if (disableTiktok && !disableOverride) {
+ resolve()
+ return
+ }
+ let protocolHost = utils.protocolHost(url)
+ const all = [
+ ...tiktokRedirects.proxiTok.tor,
+ ...tiktokRedirects.proxiTok.normal,
- ...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects,
- ...proxiTokI2pCustomRedirects,
- ...proxiTokLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ ...proxiTokNormalCustomRedirects,
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.set({
- disableTiktok: false,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.set(
+ {
+ disableTiktok: false,
- tiktokRedirects: redirects,
+ tiktokRedirects: redirects,
- proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
- proxiTokNormalCustomRedirects: [],
+ proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal],
+ proxiTokNormalCustomRedirects: [],
- proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
- proxiTokTorCustomRedirects: [],
+ proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
+ proxiTokTorCustomRedirects: [],
- proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
- proxiTokI2pCustomRedirects: [],
+ proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
+ proxiTokI2pCustomRedirects: [],
- proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
- proxiTokLokiCustomRedirects: []
- }, () => resolve());
- });
- })
+ proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
+ proxiTokLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- redirect,
- reverse,
- switchInstance,
+ redirect,
+ reverse,
+ switchInstance,
- initProxiTokCookies,
- pasteProxiTokCookies,
+ initProxiTokCookies,
+ pasteProxiTokCookies,
- initDefaults
-};
+ initDefaults,
+}
diff --git a/src/assets/javascripts/translate/get_lingva_preferences.js b/src/assets/javascripts/translate/get_lingva_preferences.js
index 40def6a5..0d6ff6ec 100644
--- a/src/assets/javascripts/translate/get_lingva_preferences.js
+++ b/src/assets/javascripts/translate/get_lingva_preferences.js
@@ -1,12 +1,10 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- ['lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'),
- lingva_isauto: localStorage.getItem('isauto'),
- lingva_source: localStorage.getItem('source'),
- lingva_target: localStorage.getItem('target'),
- }
-)
+browser.storage.local.set({
+ ["lingva_chakra-ui-color-mode"]: localStorage.getItem("chakra-ui-color-mode"),
+ lingva_isauto: localStorage.getItem("isauto"),
+ lingva_source: localStorage.getItem("source"),
+ lingva_target: localStorage.getItem("target"),
+})
-console.log(localStorage.getItem('target')); \ No newline at end of file
+console.log(localStorage.getItem("target"))
diff --git a/src/assets/javascripts/translate/set_lingva_preferences.js b/src/assets/javascripts/translate/set_lingva_preferences.js
index a0f2ad87..04a36e1b 100644
--- a/src/assets/javascripts/translate/set_lingva_preferences.js
+++ b/src/assets/javascripts/translate/set_lingva_preferences.js
@@ -1,17 +1,9 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.get(
- [
- "lingva_chakra-ui-color-mode",
- "lingva_isauto",
- "lingva_source",
- "lingva_target",
- ],
- r => {
- if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']);
- if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto);
- if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source);
- if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target);
- window.close();
- }
-)
+browser.storage.local.get(["lingva_chakra-ui-color-mode", "lingva_isauto", "lingva_source", "lingva_target"], r => {
+ if (r["lingva_chakra-ui-color-mode"] !== undefined) localStorage.setItem("chakra-ui-color-mode", r["lingva_chakra-ui-color-mode"])
+ if (r.lingva_isauto !== undefined) localStorage.setItem("isauto", r.lingva_isauto)
+ if (r.lingva_source !== undefined) localStorage.setItem("source", r.lingva_source)
+ if (r.lingva_target !== undefined) localStorage.setItem("target", r.lingva_target)
+ window.close()
+})
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js
index 75c5b5f8..5512f7f1 100644
--- a/src/assets/javascripts/translate/translate.js
+++ b/src/assets/javascripts/translate/translate.js
@@ -1,379 +1,413 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from '../utils.js'
+import utils from "../utils.js"
-const targets = [
- /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//,
-];
+const targets = [/^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//]
const frontends = new Array("simplyTranslate", "lingva")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
-let
- translateDisable,
- translateFrontend,
- protocol,
- protocolFallback,
- translateRedirects,
- simplyTranslateNormalRedirectsChecks,
- simplyTranslateNormalCustomRedirects,
- simplyTranslateTorRedirectsChecks,
- simplyTranslateTorCustomRedirects,
- simplyTranslateI2pRedirectsChecks,
- simplyTranslateI2pCustomRedirects,
- simplyTranslateLokiRedirectsChecks,
- simplyTranslateLokiCustomRedirects,
- lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects,
- lingvaTorRedirectsChecks,
- lingvaTorCustomRedirects,
- lingvaI2pCustomRedirects,
- lingvaLokiCustomRedirects
+let translateDisable,
+ translateFrontend,
+ protocol,
+ protocolFallback,
+ translateRedirects,
+ simplyTranslateNormalRedirectsChecks,
+ simplyTranslateNormalCustomRedirects,
+ simplyTranslateTorRedirectsChecks,
+ simplyTranslateTorCustomRedirects,
+ simplyTranslateI2pRedirectsChecks,
+ simplyTranslateI2pCustomRedirects,
+ simplyTranslateLokiRedirectsChecks,
+ simplyTranslateLokiCustomRedirects,
+ lingvaNormalRedirectsChecks,
+ lingvaNormalCustomRedirects,
+ lingvaTorRedirectsChecks,
+ lingvaTorCustomRedirects,
+ lingvaI2pCustomRedirects,
+ lingvaLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "translateDisable",
- "translateFrontend",
- "protocol",
- "protocolFallback",
- "translateRedirects",
- "simplyTranslateNormalRedirectsChecks",
- "simplyTranslateNormalCustomRedirects",
- "simplyTranslateTorRedirectsChecks",
- "simplyTranslateTorCustomRedirects",
- "simplyTranslateI2pRedirectsChecks",
- "simplyTranslateI2pCustomRedirects",
- "simplyTranslateLokiRedirectsChecks",
- "simplyTranslateLokiCustomRedirects",
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "translateDisable",
+ "translateFrontend",
+ "protocol",
+ "protocolFallback",
+ "translateRedirects",
+ "simplyTranslateNormalRedirectsChecks",
+ "simplyTranslateNormalCustomRedirects",
+ "simplyTranslateTorRedirectsChecks",
+ "simplyTranslateTorCustomRedirects",
+ "simplyTranslateI2pRedirectsChecks",
+ "simplyTranslateI2pCustomRedirects",
+ "simplyTranslateLokiRedirectsChecks",
+ "simplyTranslateLokiCustomRedirects",
- "lingvaNormalRedirectsChecks",
- "lingvaNormalCustomRedirects",
- "lingvaTorRedirectsChecks",
- "lingvaTorCustomRedirects",
- "lingvaI2pCustomRedirects",
- "lingvaLokiCustomRedirects"
- ],
- r => {
- translateDisable = r.translateDisable;
- translateFrontend = r.translateFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback
- translateRedirects = r.translateRedirects;
- simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks;
- simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects;
- simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks;
- simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects;
- simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks;
- simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects;
- simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks;
- simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects;
- lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
- lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
- lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
- lingvaTorCustomRedirects = r.lingvaTorCustomRedirects;
- lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects;
- lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects;
- resolve();
- }
- )
- })
+ "lingvaNormalRedirectsChecks",
+ "lingvaNormalCustomRedirects",
+ "lingvaTorRedirectsChecks",
+ "lingvaTorCustomRedirects",
+ "lingvaI2pCustomRedirects",
+ "lingvaLokiCustomRedirects",
+ ],
+ r => {
+ translateDisable = r.translateDisable
+ translateFrontend = r.translateFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ translateRedirects = r.translateRedirects
+ simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks
+ simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects
+ simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks
+ simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects
+ simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks
+ simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects
+ simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks
+ simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects
+ lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks
+ lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects
+ lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks
+ lingvaTorCustomRedirects = r.lingvaTorCustomRedirects
+ lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects
+ lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects = val;
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareBlackList) {
- const i = lingvaNormalRedirectsChecks.indexOf(instance);
- if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- translateRedirects: redirects,
- simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
- simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
- simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
- simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
- lingvaNormalRedirectsChecks,
- lingvaTorRedirectsChecks: redirects.lingva.tor,
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = lingvaNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ translateRedirects: redirects,
+ simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
+ simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
+ simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
+ simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
+ lingvaNormalRedirectsChecks,
+ lingvaTorRedirectsChecks: redirects.lingva.tor,
+ })
+ })
}
function copyPasteLingvaLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...lingvaNormalRedirectsChecks,
- ...lingvaNormalCustomRedirects,
- ...lingvaTorRedirectsChecks,
- ...lingvaTorCustomRedirects,
- ...lingvaI2pCustomRedirects,
- ...lingvaLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "lingva") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects, ...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects, ...lingvaI2pCustomRedirects, ...lingvaLokiCustomRedirects].includes(
+ protocolHost
+ )
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(
- tabId,
- { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" }
- );
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/translate/get_lingva_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- if (checkedInstances.length === 0) { resolve(); return; }
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- }
- )
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects]
+ //...lingvaI2pRedirectsChecks,
+ else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ if (checkedInstances.length === 0) {
+ resolve()
+ return
+ }
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/translate/set_lingva_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve(true)
+ })
}
function pasteLingvaLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- for (const to of checkedInstances)
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" }))
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "lingva") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects]
+ //...lingvaI2pRedirectsChecks,
+ else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/translate/set_lingva_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ resolve()
+ })
}
function copyPasteSimplyTranslateCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (![
- ...simplyTranslateNormalRedirectsChecks,
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorRedirectsChecks,
- ...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2pRedirectsChecks,
- ...simplyTranslateI2pCustomRedirects,
- ...simplyTranslateLokiRedirectsChecks,
- ...simplyTranslateLokiCustomRedirects,
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
- else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled');
- await utils.copyCookie('simplyTranslate', from, checkedInstances, 'use_text_fields');
- }
- resolve(true);
- }
- )
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...simplyTranslateNormalRedirectsChecks,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorRedirectsChecks,
+ ...simplyTranslateTorCustomRedirects,
+ ...simplyTranslateI2pRedirectsChecks,
+ ...simplyTranslateI2pCustomRedirects,
+ ...simplyTranslateLokiRedirectsChecks,
+ ...simplyTranslateLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "from_lang")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "to_lang")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "tts_enabled")
+ await utils.copyCookie("simplyTranslate", from, checkedInstances, "use_text_fields")
+ }
+ resolve(true)
+ })
}
function pasteSimplyTranslateCookies() {
- return new Promise(async resolve => {
- await init();
- if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
- else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled');
- utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'use_text_fields');
- resolve();
- }
- )
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable || translateFrontend != "simplyTranslate") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "from_lang")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "to_lang")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "tts_enabled")
+ utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "use_text_fields")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (translateDisable && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+ if (translateDisable && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
- if (translateFrontend == 'simplyTranslate') {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ if (translateFrontend == "simplyTranslate") {
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]
+ else if (protocol == "tor") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList)
- return `${randomInstance}/${url.search}`;
- }
- else if (translateFrontend == 'lingva') {
- let params_arr = url.search.split('&');
- params_arr[0] = params_arr[0].substring(1);
- let params = {};
- for (let i = 0; i < params_arr.length; i++) {
- let pair = params_arr[i].split('=');
- params[pair[0]] = pair[1];
- }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- else if (protocol == 'i2p') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return `${randomInstance}/${url.search}`
+ } else if (translateFrontend == "lingva") {
+ let params_arr = url.search.split("&")
+ params_arr[0] = params_arr[0].substring(1)
+ let params = {}
+ for (let i = 0; i < params_arr.length; i++) {
+ let pair = params_arr[i].split("=")
+ params[pair[0]] = pair[1]
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...lingvaLokiCustomRedirects]
+ //...lingvaLokiRedirectsChecks,
+ else if (protocol == "i2p") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks,
+ if (protocol == "tor") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList)
- if (params.sl && params.tl && params.text) {
- return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
- }
- return randomInstance;
- }
+ const randomInstance = utils.getRandomInstance(instancesList)
+ if (params.sl && params.tl && params.text) {
+ return `${randomInstance}/${params.sl}/${params.tl}/${params.text}`
+ }
+ return randomInstance
+ }
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (translateDisable && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...translateRedirects.simplyTranslate.normal,
- ...translateRedirects.simplyTranslate.tor,
- ...translateRedirects.simplyTranslate.i2p,
- ...translateRedirects.simplyTranslate.loki,
+ return new Promise(async resolve => {
+ await init()
+ if (translateDisable && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...translateRedirects.simplyTranslate.normal,
+ ...translateRedirects.simplyTranslate.tor,
+ ...translateRedirects.simplyTranslate.i2p,
+ ...translateRedirects.simplyTranslate.loki,
- ...simplyTranslateNormalCustomRedirects,
- ...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2pCustomRedirects,
- ...simplyTranslateLokiCustomRedirects,
+ ...simplyTranslateNormalCustomRedirects,
+ ...simplyTranslateTorCustomRedirects,
+ ...simplyTranslateI2pCustomRedirects,
+ ...simplyTranslateLokiCustomRedirects,
- ...translateRedirects.lingva.normal,
- ...translateRedirects.lingva.tor,
+ ...translateRedirects.lingva.normal,
+ ...translateRedirects.lingva.tor,
- ...lingvaNormalCustomRedirects,
- ...lingvaTorCustomRedirects,
- ...lingvaI2pCustomRedirects,
- ...lingvaLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ ...lingvaNormalCustomRedirects,
+ ...lingvaTorCustomRedirects,
+ ...lingvaI2pCustomRedirects,
+ ...lingvaLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- let instancesList;
+ let instancesList
- if (protocol == 'loki') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- }
+ if (protocol == "loki") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaLokiCustomRedirects] //...lingvaLokiRedirectsChecks,
+ } else if (protocol == "i2p") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks,
+ } else if (protocol == "tor") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
+ else if (translateFrontend == "lingva") instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList',
- async r => {
- lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
- for (const instance of r.cloudflareBlackList) {
- const i = lingvaNormalRedirectsChecks.indexOf(instance);
- if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- translateDisable: false,
- translateFrontend: "simplyTranslate",
- translateRedirects: redirects,
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ lingvaNormalRedirectsChecks = [...redirects.lingva.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const i = lingvaNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ translateDisable: false,
+ translateFrontend: "simplyTranslate",
+ translateRedirects: redirects,
- simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
- simplyTranslateNormalCustomRedirects: [],
-
- simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
- simplyTranslateTorCustomRedirects: [],
-
- simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
- simplyTranslateI2pCustomRedirects: [],
-
- simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
- simplyTranslateLokiCustomRedirects: [],
+ simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
+ simplyTranslateNormalCustomRedirects: [],
- lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
- lingvaNormalCustomRedirects: [],
+ simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
+ simplyTranslateTorCustomRedirects: [],
- lingvaTorRedirectsChecks: [...redirects.lingva.tor],
- lingvaTorCustomRedirects: [],
+ simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
+ simplyTranslateI2pCustomRedirects: [],
- lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
- lingvaI2pCustomRedirects: [],
+ simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
+ simplyTranslateLokiCustomRedirects: [],
- lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
- lingvaLokiCustomRedirects: []
- }, () => resolve())
- })
- })
- })
+ lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
+ lingvaNormalCustomRedirects: [],
+
+ lingvaTorRedirectsChecks: [...redirects.lingva.tor],
+ lingvaTorCustomRedirects: [],
+
+ lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
+ lingvaI2pCustomRedirects: [],
+
+ lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
+ lingvaLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- copyPasteSimplyTranslateCookies,
- pasteSimplyTranslateCookies,
- copyPasteLingvaLocalStorage,
- pasteLingvaLocalStorage,
- setRedirects,
- redirect,
- initDefaults,
- switchInstance,
-};
+ copyPasteSimplyTranslateCookies,
+ pasteSimplyTranslateCookies,
+ copyPasteLingvaLocalStorage,
+ pasteLingvaLocalStorage,
+ setRedirects,
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index 0a851923..1ec4d8eb 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -1,13 +1,8 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
-const targets = [
- /^https?:\/{2}(www\.|mobile\.|)twitter\.com/,
- /^https?:\/{2}(pbs\.|video\.|)twimg\.com/,
- /^https?:\/{2}platform\.twitter\.com\/embed/,
- /^https?:\/{2}t\.co/
-];
+const targets = [/^https?:\/{2}(www\.|mobile\.|)twitter\.com/, /^https?:\/{2}(pbs\.|video\.|)twimg\.com/, /^https?:\/{2}platform\.twitter\.com\/embed/, /^https?:\/{2}t\.co/]
const frontends = new Array("nitter")
const protocols = new Array("normal", "tor", "i2p", "loki")
@@ -15,287 +10,295 @@ const protocols = new Array("normal", "tor", "i2p", "loki")
let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], r => {
- redirects.nitter = val;
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- twitterRedirects: redirects,
- nitterNormalRedirectsChecks,
- nitterTorRedirectsChecks: [...redirects.nitter.tor]
- })
- })
+ browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], r => {
+ redirects.nitter = val
+ nitterNormalRedirectsChecks = [...redirects.nitter.normal]
+ for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
+ let i = nitterNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set({
+ twitterRedirects: redirects,
+ nitterNormalRedirectsChecks,
+ nitterTorRedirectsChecks: [...redirects.nitter.tor],
+ })
+ })
}
-let
- disableTwitter,
- protocol,
- protocolFallback,
- twitterRedirects,
- twitterRedirectType,
- nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects,
- nitterTorRedirectsChecks,
- nitterTorCustomRedirects,
- nitterI2pCustomRedirects,
- nitterLokiCustomRedirects;
+let disableTwitter,
+ protocol,
+ protocolFallback,
+ twitterRedirects,
+ twitterRedirectType,
+ nitterNormalRedirectsChecks,
+ nitterNormalCustomRedirects,
+ nitterTorRedirectsChecks,
+ nitterTorCustomRedirects,
+ nitterI2pCustomRedirects,
+ nitterLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableTwitter",
- "protocol",
- "protocolFallback",
- "twitterRedirects",
- "twitterRedirectType",
- "nitterNormalRedirectsChecks",
- "nitterNormalCustomRedirects",
- "nitterTorRedirectsChecks",
- "nitterTorCustomRedirects",
- "nitterI2pCustomRedirects",
- "nitterLokiCustomRedirects"
- ],
- r => {
- disableTwitter = r.disableTwitter;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- twitterRedirects = r.twitterRedirects;
- twitterRedirectType = r.twitterRedirectType;
- nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks;
- nitterNormalCustomRedirects = r.nitterNormalCustomRedirects;
- nitterTorRedirectsChecks = r.nitterTorRedirectsChecks;
- nitterTorCustomRedirects = r.nitterTorCustomRedirects;
- nitterI2pCustomRedirects = r.nitterI2pCustomRedirects;
- nitterLokiCustomRedirects = r.nitterLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableTwitter",
+ "protocol",
+ "protocolFallback",
+ "twitterRedirects",
+ "twitterRedirectType",
+ "nitterNormalRedirectsChecks",
+ "nitterNormalCustomRedirects",
+ "nitterTorRedirectsChecks",
+ "nitterTorCustomRedirects",
+ "nitterI2pCustomRedirects",
+ "nitterLokiCustomRedirects",
+ ],
+ r => {
+ disableTwitter = r.disableTwitter
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ twitterRedirects = r.twitterRedirects
+ twitterRedirectType = r.twitterRedirectType
+ nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks
+ nitterNormalCustomRedirects = r.nitterNormalCustomRedirects
+ nitterTorRedirectsChecks = r.nitterTorRedirectsChecks
+ nitterTorCustomRedirects = r.nitterTorCustomRedirects
+ nitterI2pCustomRedirects = r.nitterI2pCustomRedirects
+ nitterLokiCustomRedirects = r.nitterLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...nitterNormalRedirectsChecks,
- ...nitterTorRedirectsChecks,
- ...nitterNormalCustomRedirects,
- ...nitterTorCustomRedirects,
- ...nitterI2pCustomRedirects,
- ...nitterLokiCustomRedirects
- ];
+ return [...nitterNormalRedirectsChecks, ...nitterTorRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects, ...nitterI2pCustomRedirects, ...nitterLokiCustomRedirects]
}
function redirect(url, type, initiator, disableOverride) {
- if (disableTwitter && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (url.pathname.split("/").includes("home")) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
- if (twitterRedirectType == 'sub_frame' && type == "main_frame") return;
- if (twitterRedirectType == 'main_frame' && type != "main_frame") return;
+ if (disableTwitter && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (url.pathname.split("/").includes("home")) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
+ if (twitterRedirectType == "sub_frame" && type == "main_frame") return
+ if (twitterRedirectType == "main_frame" && type != "main_frame") return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
- const randomInstance = utils.getRandomInstance(instancesList);
- // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
- if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") {
- const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/);
- const query = encodeURIComponent(`${id}.${format}?${extra}`);
- return `${randomInstance}/pic${url.pathname}${query}`;
- }
- else if (url.pathname.split("/").includes("tweets"))
- return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`;
- else if (url.host == 't.co')
- return `${randomInstance}/t.co${url.pathname}`;
- else
- return `${randomInstance}${url.pathname}${url.search}`;
+ const randomInstance = utils.getRandomInstance(instancesList)
+ // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
+ if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") {
+ const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/)
+ const query = encodeURIComponent(`${id}.${format}?${extra}`)
+ return `${randomInstance}/pic${url.pathname}${query}`
+ } else if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`
+ else if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}`
+ else return `${randomInstance}${url.pathname}${url.search}`
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://twitter.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://twitter.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableTwitter && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
+ return new Promise(async resolve => {
+ await init()
+ if (disableTwitter && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ let index = instancesList.indexOf(protocolHost)
+ if (index > -1) instancesList.splice(index, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function removeXFrameOptions(e) {
- if (e.type != 'sub_frame') return;
- let url = new URL(e.url);
- let protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) return;
- let isChanged = false;
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- else if (e.responseHeaders[i].name == 'content-security-policy') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
+ if (e.type != "sub_frame") return
+ let url = new URL(e.url)
+ let protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) return
+ let isChanged = false
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "x-frame-options") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ } else if (e.responseHeaders[i].name == "content-security-policy") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ }
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders }
}
function initNitterCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- if (!all().includes(protocolHost)
- ) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- await utils.copyCookie('nitter', from, checkedInstances, 'theme');
- await utils.copyCookie('nitter', from, checkedInstances, 'infiniteScroll');
- await utils.copyCookie('nitter', from, checkedInstances, 'stickyProfile');
- await utils.copyCookie('nitter', from, checkedInstances, 'bidiSupport');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideTweetStats');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideBanner');
- await utils.copyCookie('nitter', from, checkedInstances, 'hidePins');
- await utils.copyCookie('nitter', from, checkedInstances, 'hideReplies');
- await utils.copyCookie('nitter', from, checkedInstances, 'squareAvatars');
- await utils.copyCookie('nitter', from, checkedInstances, 'mp4Playback');
- await utils.copyCookie('nitter', from, checkedInstances, 'hlsPlayback');
- await utils.copyCookie('nitter', from, checkedInstances, 'proxyVideos');
- await utils.copyCookie('nitter', from, checkedInstances, 'muteVideos');
- await utils.copyCookie('nitter', from, checkedInstances, 'autoplayGifs');
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ await utils.copyCookie("nitter", from, checkedInstances, "theme")
+ await utils.copyCookie("nitter", from, checkedInstances, "infiniteScroll")
+ await utils.copyCookie("nitter", from, checkedInstances, "stickyProfile")
+ await utils.copyCookie("nitter", from, checkedInstances, "bidiSupport")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideTweetStats")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideBanner")
+ await utils.copyCookie("nitter", from, checkedInstances, "hidePins")
+ await utils.copyCookie("nitter", from, checkedInstances, "hideReplies")
+ await utils.copyCookie("nitter", from, checkedInstances, "squareAvatars")
+ await utils.copyCookie("nitter", from, checkedInstances, "mp4Playback")
+ await utils.copyCookie("nitter", from, checkedInstances, "hlsPlayback")
+ await utils.copyCookie("nitter", from, checkedInstances, "proxyVideos")
+ await utils.copyCookie("nitter", from, checkedInstances, "muteVideos")
+ await utils.copyCookie("nitter", from, checkedInstances, "autoplayGifs")
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceInstagram');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceReddit');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceTwitter');
- await utils.copyCookie('nitter', from, checkedInstances, 'replaceYouTube');
- }
- resolve(true);
- })
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceInstagram")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceReddit")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceTwitter")
+ await utils.copyCookie("nitter", from, checkedInstances, "replaceYouTube")
+ }
+ resolve(true)
+ })
}
function pasteNitterCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableTwitter || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('nitter', checkedInstances, 'theme');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'infiniteScroll');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'stickyProfile');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'bidiSupport');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideTweetStats');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideBanner');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hidePins');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hideReplies');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'squareAvatars');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'mp4Playback');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'hlsPlayback');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'proxyVideos');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'muteVideos');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'autoplayGifs');
+ return new Promise(async resolve => {
+ await init()
+ if (disableTwitter || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("nitter", checkedInstances, "theme")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "infiniteScroll")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "stickyProfile")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "bidiSupport")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideTweetStats")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideBanner")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hidePins")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hideReplies")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "squareAvatars")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "mp4Playback")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "hlsPlayback")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "proxyVideos")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "muteVideos")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "autoplayGifs")
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceInstagram');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceReddit');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceTwitter');
- utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceYouTube');
- resolve();
- }
- )
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceInstagram")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceReddit")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceTwitter")
+ utils.getCookiesFromStorage("nitter", checkedInstances, "replaceYouTube")
+ resolve()
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], async r => {
- nitterNormalRedirectsChecks = [...redirects.nitter.normal];
- for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
- let i = nitterNormalRedirectsChecks.indexOf(instance);
- if (i > -1) nitterNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableTwitter: false,
- twitterRedirects: redirects,
- twitterRedirectType: "both",
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], async r => {
+ nitterNormalRedirectsChecks = [...redirects.nitter.normal]
+ for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
+ let i = nitterNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableTwitter: false,
+ twitterRedirects: redirects,
+ twitterRedirectType: "both",
- nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
- nitterNormalCustomRedirects: [],
+ nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
+ nitterNormalCustomRedirects: [],
- nitterTorRedirectsChecks: [...redirects.nitter.tor],
- nitterTorCustomRedirects: [],
+ nitterTorRedirectsChecks: [...redirects.nitter.tor],
+ nitterTorCustomRedirects: [],
- nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
- nitterI2pCustomRedirects: [],
+ nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
+ nitterI2pCustomRedirects: [],
- nitterLokiRedirectsChecks: [...redirects.nitter.loki],
- nitterLokiCustomRedirects: []
- }, () => resolve());
- })
- })
- })
+ nitterLokiRedirectsChecks: [...redirects.nitter.loki],
+ nitterLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
- redirect,
- switchInstance,
- reverse,
- removeXFrameOptions,
- initNitterCookies,
- pasteNitterCookies,
- initDefaults,
-};
+ setRedirects,
+ redirect,
+ switchInstance,
+ reverse,
+ removeXFrameOptions,
+ initNitterCookies,
+ pasteNitterCookies,
+ initDefaults,
+}
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index f9225729..7a97dcdb 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -1,193 +1,207 @@
-window.browser = window.browser || window.chrome;
-import twitterHelper from "./twitter.js";
-import youtubeHelper from "./youtube/youtube.js";
-import instagramHelper from "./instagram.js";
-import mediumHelper from "./medium.js";
-import redditHelper from "./reddit.js";
-import searchHelper from "./search.js";
-import translateHelper from "./translate/translate.js";
-import wikipediaHelper from "./wikipedia.js";
-import peertubeHelper from "./peertube.js";
-import lbryHelper from "./lbry.js";
-import sendTargetsHelper from "./sendTargets.js";
-import tiktokHelper from "./tiktok.js";
+window.browser = window.browser || window.chrome
+import twitterHelper from "./twitter.js"
+import youtubeHelper from "./youtube/youtube.js"
+import instagramHelper from "./instagram.js"
+import mediumHelper from "./medium.js"
+import redditHelper from "./reddit.js"
+import searchHelper from "./search.js"
+import translateHelper from "./translate/translate.js"
+import wikipediaHelper from "./wikipedia.js"
+import peertubeHelper from "./peertube.js"
+import lbryHelper from "./lbry.js"
+import sendTargetsHelper from "./sendTargets.js"
+import tiktokHelper from "./tiktok.js"
import quoraHelper from "./quora.js"
-import libremdbHelper from "./imdb.js";
-import imgurHelper from "./imgur.js";
-import reutersHelper from './reuters.js';
-import localise from './localise.js'
+import libremdbHelper from "./imdb.js"
+import imgurHelper from "./imgur.js"
+import reutersHelper from "./reuters.js"
+import youtubeMusicHelper from "./youtubeMusic.js"
+import mapsHelper from "./maps.js"
+import localise from "./localise.js"
function getRandomInstance(instances) {
- return instances[~~(instances.length * Math.random())];
+ return instances[~~(instances.length * Math.random())]
}
-let cloudflareBlackList = [];
-let authenticateBlackList = [];
+let cloudflareBlackList = []
+let authenticateBlackList = []
async function initcloudflareBlackList() {
- return new Promise(resolve => {
- fetch('/instances/blacklist.json').then(response => response.text()).then(data => {
- cloudflareBlackList = JSON.parse(data).cloudflare;
- authenticateBlackList = JSON.parse(data).authenticate;
- resolve();
- })
- });
+ return new Promise(resolve => {
+ fetch("/instances/blacklist.json")
+ .then(response => response.text())
+ .then(data => {
+ cloudflareBlackList = JSON.parse(data).cloudflare
+ authenticateBlackList = JSON.parse(data).authenticate
+ resolve()
+ })
+ })
}
function updateInstances() {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false);
- http.send(null);
- if (http.status === 200) {
- await initcloudflareBlackList();
- const instances = JSON.parse(http.responseText);
+ return new Promise(async resolve => {
+ let http = new XMLHttpRequest()
+ http.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json", false)
+ http.send(null)
+ if (http.status === 200) {
+ await initcloudflareBlackList()
+ const instances = JSON.parse(http.responseText)
- youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, 'pipedMaterial': instances.pipedMaterial })
- twitterHelper.setRedirects(instances.nitter);
- instagramHelper.setRedirects(instances.bibliogram);
- redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit });
- translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva });
- 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);
+ youtubeHelper.setRedirects({
+ invidious: instances.invidious,
+ piped: instances.piped,
+ pipedMaterial: instances.pipedMaterial,
+ })
+ twitterHelper.setRedirects(instances.nitter)
+ instagramHelper.setRedirects(instances.bibliogram)
+ redditHelper.setRedirects({
+ libreddit: instances.libreddit,
+ teddit: instances.teddit,
+ })
+ translateHelper.setRedirects({
+ simplyTranslate: instances.simplyTranslate,
+ lingva: instances.lingva,
+ })
+ 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({
+ beatbump: instances.beatbump,
+ hyperpipe: instances.hyperpipe,
+ })
+ mapsHelper.setRedirects(instances.facil)
+ peertubeHelper.setRedirects(instances.simpleertube)
- console.info("Successfully updated Instances");
- resolve(true); return;
- }
- resolve()
- })
+ console.info("Successfully updated Instances")
+ resolve(true)
+ return
+ }
+ resolve()
+ })
}
function protocolHost(url) {
- if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`;
- return `${url.protocol}//${url.host}`;
+ if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`
+ return `${url.protocol}//${url.host}`
}
async function processDefaultCustomInstances(target, name, protocol, document) {
+ function camelCase(str) {
+ return str.charAt(0).toUpperCase() + str.slice(1)
+ }
+ let latencyKey = `${name}Latency`
+ let instancesLatency
+ let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0]
- function camelCase(str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- }
- let latencyKey = `${name}Latency`;
- let instancesLatency;
- let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0];
+ let nameCustomInstances = []
+ let nameCheckListElement = nameProtocolElement.getElementsByClassName("checklist")[0]
- let nameCustomInstances = [];
- let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0];
+ await initcloudflareBlackList()
- await initcloudflareBlackList();
+ let nameDefaultRedirects
- let nameDefaultRedirects;
+ let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`
+ let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`
+ let redirectsKey = `${target}Redirects`
- let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`;
- let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`;
- let redirectsKey = `${target}Redirects`;
+ let redirects
- let redirects;
+ async function getFromStorage() {
+ return new Promise(async resolve =>
+ browser.storage.local.get([redirectsChecks, customRedirects, redirectsKey, latencyKey], r => {
+ nameDefaultRedirects = r[redirectsChecks]
+ nameCustomInstances = r[customRedirects]
+ instancesLatency = r[latencyKey] ?? []
+ redirects = r[redirectsKey]
+ resolve()
+ })
+ )
+ }
- async function getFromStorage() {
- return new Promise(async resolve =>
- browser.storage.local.get(
- [
- redirectsChecks,
- customRedirects,
- redirectsKey,
- latencyKey
- ],
- r => {
- nameDefaultRedirects = r[redirectsChecks];
- nameCustomInstances = r[customRedirects];
- instancesLatency = r[latencyKey] ?? [];
- redirects = r[redirectsKey];
- resolve();
- }
- )
- )
- }
-
- await getFromStorage();
- if (nameCustomInstances === undefined) console.log(customRedirects);
+ await getFromStorage()
+ if (nameCustomInstances === undefined) console.log(customRedirects)
- function calcNameCheckBoxes() {
- let isTrue = true;
- for (const item of redirects[name][protocol]) {
- if (!nameDefaultRedirects.includes(item)) {
- isTrue = false;
- break;
- }
- }
- for (const element of nameCheckListElement.getElementsByTagName('input')) {
- element.checked = nameDefaultRedirects.includes(element.className)
- }
- if (nameDefaultRedirects.length == 0) isTrue = false;
- nameProtocolElement.getElementsByClassName('toggle-all')[0].checked = isTrue;
- }
- nameCheckListElement.innerHTML =
- [
- `<div>
+ function calcNameCheckBoxes() {
+ let isTrue = true
+ for (const item of redirects[name][protocol]) {
+ if (nameDefaultRedirects === undefined) console.log(name + protocol + " is undefined")
+ if (!nameDefaultRedirects.includes(item)) {
+ isTrue = false
+ break
+ }
+ }
+ for (const element of nameCheckListElement.getElementsByTagName("input")) {
+ element.checked = nameDefaultRedirects.includes(element.className)
+ }
+ if (nameDefaultRedirects.length == 0) isTrue = false
+ nameProtocolElement.getElementsByClassName("toggle-all")[0].checked = isTrue
+ }
+ nameCheckListElement.innerHTML = [
+ `<div>
<x data-localise="__MSG_toggleAll__">Toggle All</x>
<input type="checkbox" class="toggle-all"/>
</div>`,
- ...redirects[name][protocol].map(
- x => {
- const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : '';
- const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : '';
+ ...redirects[name][protocol].map(x => {
+ const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
+ const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
- let ms = instancesLatency[x];
- let latencyColor = (ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red");
- let latencyLimit;
- if (ms == 5000) latencyLimit = '5000ms+';
- else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`;
- else latencyLimit = ms + 'ms';
+ let ms = instancesLatency[x]
+ let latencyColor = ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red"
+ let latencyLimit
+ if (ms == 5000) latencyLimit = "5000ms+"
+ else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`
+ else latencyLimit = ms + "ms"
- const latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : '';
+ const latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + "</span>" : ""
- let warnings = [cloudflare, authenticate, latency].join(' ');
- return `<div>
+ let warnings = [cloudflare, authenticate, latency].join(" ")
+ return `<div>
<x><a href="${x}" target="_blank">${x}</a>${warnings}</x>
<input type="checkbox" class="${x}"/>
- </div>`;
- }
- ),
- ].join('\n<hr>\n');
+ </div>`
+ }),
+ ].join("\n<hr>\n")
- localise.localisePage();
+ localise.localisePage()
- calcNameCheckBoxes();
- nameProtocolElement.getElementsByClassName('toggle-all')[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects = [...redirects[name][protocol]];
- else
- nameDefaultRedirects = [];
+ calcNameCheckBoxes()
+ nameProtocolElement.getElementsByClassName("toggle-all")[0].addEventListener("change", async event => {
+ if (event.target.checked) nameDefaultRedirects = [...redirects[name][protocol]]
+ else nameDefaultRedirects = []
- browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
+ browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects })
+ calcNameCheckBoxes()
+ })
- for (let element of nameCheckListElement.getElementsByTagName('input')) {
- if (element.className != 'toggle-all')
- nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
- if (event.target.checked)
- nameDefaultRedirects.push(element.className)
- else {
- let index = nameDefaultRedirects.indexOf(element.className);
- if (index > -1) nameDefaultRedirects.splice(index, 1);
- }
- browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects });
- calcNameCheckBoxes();
- });
- }
+ for (let element of nameCheckListElement.getElementsByTagName("input")) {
+ if (element.className != "toggle-all")
+ nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
+ if (event.target.checked) nameDefaultRedirects.push(element.className)
+ else {
+ let index = nameDefaultRedirects.indexOf(element.className)
+ if (index > -1) nameDefaultRedirects.splice(index, 1)
+ }
+ browser.storage.local.set({
+ [redirectsChecks]: nameDefaultRedirects,
+ })
+ calcNameCheckBoxes()
+ })
+ }
- function calcNameCustomInstances() {
- nameProtocolElement.getElementsByClassName('custom-checklist')[0].innerHTML =
- nameCustomInstances.map(
- x => `<div>
+ function calcNameCustomInstances() {
+ nameProtocolElement.getElementsByClassName("custom-checklist")[0].innerHTML = nameCustomInstances
+ .map(
+ x => `<div>
${x}
<button class="add clear-${x}">
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor">
@@ -196,286 +210,294 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
</button>
</div>
<hr>`
- ).join('\n');
+ )
+ .join("\n")
- for (const item of nameCustomInstances) {
- nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
- let index = nameCustomInstances.indexOf(item);
- if (index > -1) nameCustomInstances.splice(index, 1);
- browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- calcNameCustomInstances();
- });
- }
- }
- calcNameCustomInstances();
- nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => {
- event.preventDefault();
- let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0];
- let url = new URL(nameCustomInstanceInput.value);
- let protocolHostVar = protocolHost(url);
- if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
- if (!nameCustomInstances.includes(protocolHostVar)) {
- nameCustomInstances.push(protocolHostVar)
- browser.storage.local.set({ [customRedirects]: nameCustomInstances });
- nameCustomInstanceInput.value = '';
- }
- calcNameCustomInstances();
- }
- })
+ for (const item of nameCustomInstances) {
+ nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => {
+ let index = nameCustomInstances.indexOf(item)
+ if (index > -1) nameCustomInstances.splice(index, 1)
+ browser.storage.local.set({ [customRedirects]: nameCustomInstances })
+ calcNameCustomInstances()
+ })
+ }
+ }
+ calcNameCustomInstances()
+ nameProtocolElement.getElementsByClassName("custom-instance-form")[0].addEventListener("submit", async event => {
+ event.preventDefault()
+ let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName("custom-instance")[0]
+ let url = new URL(nameCustomInstanceInput.value)
+ let protocolHostVar = protocolHost(url)
+ if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) {
+ if (!nameCustomInstances.includes(protocolHostVar)) {
+ nameCustomInstances.push(protocolHostVar)
+ browser.storage.local.set({ [customRedirects]: nameCustomInstances })
+ nameCustomInstanceInput.value = ""
+ }
+ calcNameCustomInstances()
+ }
+ })
}
async function ping(href) {
- return new Promise(async resolve => {
- let http = new XMLHttpRequest();
- http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/true);
- http.timeout = 5000;
- let started = new Date().getTime();
- http.onreadystatechange = () => {
- if (http.readyState == 2) {
- if (http.status == 200) {
- let ended = new Date().getTime();
- http.abort();
- resolve(ended - started);
- }
- else
- resolve(5000 + http.status)
- }
- };
- http.ontimeout = () => resolve(5000)
- http.onerror = () => resolve()
- try {
- http.send(null);
- } catch (exception) {
- resolve()
- }
- });
+ return new Promise(async resolve => {
+ let http = new XMLHttpRequest()
+ http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/ true)
+ http.timeout = 5000
+ let started = new Date().getTime()
+ http.onreadystatechange = () => {
+ if (http.readyState == 2) {
+ if (http.status == 200) {
+ let ended = new Date().getTime()
+ http.abort()
+ resolve(ended - started)
+ } else resolve(5000 + http.status)
+ }
+ }
+ http.ontimeout = () => resolve(5000)
+ http.onerror = () => resolve()
+ try {
+ http.send(null)
+ } catch (exception) {
+ resolve()
+ }
+ })
}
async function testLatency(element, instances) {
- return new Promise(async resolve => {
- let myList = {};
- for (const href of instances) await ping(href).then(time => {
- if (time) {
- myList[href] = time;
- let color;
- if (time <= 1000) color = "green"
- else if (time <= 2000) color = "orange"
- else color = "red";
+ return new Promise(async resolve => {
+ let myList = {}
+ for (const href of instances)
+ await ping(href).then(time => {
+ if (time) {
+ myList[href] = time
+ let color
+ if (time <= 1000) color = "green"
+ else if (time <= 2000) color = "orange"
+ else color = "red"
- let text;
- if (time == 5000) text = '5000ms+'
- else if (time > 5000) text = `ERROR: ${time - 5000}`;
- else text = `${time}ms`;
- element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`;
- }
- })
- resolve(myList);
- })
+ let text
+ if (time == 5000) text = "5000ms+"
+ else if (time > 5000) text = `ERROR: ${time - 5000}`
+ else text = `${time}ms`
+ element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`
+ }
+ })
+ resolve(myList)
+ })
}
function copyCookie(frontend, targetUrl, urls, name) {
- return new Promise(resolve => {
- browser.storage.local.get('firstPartyIsolate', r => {
- let query;
- if (!r.firstPartyIsolate) query = { url: protocolHost(targetUrl), name: name }
- else query = { url: protocolHost(targetUrl), name: name, firstPartyDomain: null }
- browser.cookies.getAll(
- query,
- async cookies => {
- for (const cookie of cookies)
- if (cookie.name == name) {
- for (const url of urls) {
- const setQuery =
- r.firstPartyIsolate ?
- {
- url: url, name: name, value: cookie.value, secure: true,
- firstPartyDomain: new URL(url).hostname,
- }
- :
- {
- url: url, name: name, value: cookie.value, secure: true,
- expirationDate: cookie.expirationDate,
- };
- browser.cookies.set(setQuery, () =>
- browser.storage.local.set({ [`${frontend}_${name}`]: cookie }, () => resolve())
- );
- }
- break;
- }
- resolve();
- }
- );
- })
- })
+ return new Promise(resolve => {
+ browser.storage.local.get("firstPartyIsolate", r => {
+ let query
+ if (!r.firstPartyIsolate) query = { url: protocolHost(targetUrl), name: name }
+ else
+ query = {
+ url: protocolHost(targetUrl),
+ name: name,
+ firstPartyDomain: null,
+ }
+ browser.cookies.getAll(query, async cookies => {
+ for (const cookie of cookies)
+ if (cookie.name == name) {
+ for (const url of urls) {
+ const setQuery = r.firstPartyIsolate
+ ? {
+ url: url,
+ name: name,
+ value: cookie.value,
+ secure: true,
+ firstPartyDomain: new URL(url).hostname,
+ }
+ : {
+ url: url,
+ name: name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: cookie.expirationDate,
+ }
+ browser.cookies.set(setQuery, () => browser.storage.local.set({ [`${frontend}_${name}`]: cookie }, () => resolve()))
+ }
+ break
+ }
+ resolve()
+ })
+ })
+ })
}
function getCookiesFromStorage(frontend, urls, name) {
- let key = `${frontend}_${name}`;
- browser.storage.local.get([key, 'firstPartyIsolate'], r => {
- const cookie = r[key];
- if (cookie === undefined) return;
- for (const url of urls) {
- let query =
- r.firstPartyIsolate ?
- {
- url: url, name: cookie.name, value: cookie.value, secure: true,
- expirationDate: null,
- firstPartyDomain: new URL(url).hostname,
- }
- :
- {
- url: url, name: cookie.name, value: cookie.value, secure: true,
- expirationDate: cookie.expirationDate,
- };
- browser.cookies.set(query)
- }
- })
+ let key = `${frontend}_${name}`
+ browser.storage.local.get([key, "firstPartyIsolate"], r => {
+ const cookie = r[key]
+ if (cookie === undefined) return
+ for (const url of urls) {
+ let query = r.firstPartyIsolate
+ ? {
+ url: url,
+ name: cookie.name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: null,
+ firstPartyDomain: new URL(url).hostname,
+ }
+ : {
+ url: url,
+ name: cookie.name,
+ value: cookie.value,
+ secure: true,
+ expirationDate: cookie.expirationDate,
+ }
+ browser.cookies.set(query)
+ }
+ })
}
function copyRaw(test, copyRawElement) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
- let newUrl = await youtubeHelper.reverse(url);
- if (!newUrl) newUrl = await twitterHelper.reverse(url);
- if (!newUrl) newUrl = await instagramHelper.reverse(url);
- if (!newUrl) newUrl = await tiktokHelper.reverse(url);
- if (!newUrl) newUrl = await quoraHelper.reverse(url);
- if (!newUrl) newUrl = await libremdbHelper.reverse(url);
- if (!newUrl) newUrl = await imgurHelper.reverse(url);
+ let newUrl = await youtubeHelper.reverse(url)
+ if (!newUrl) newUrl = await twitterHelper.reverse(url)
+ if (!newUrl) newUrl = await instagramHelper.reverse(url)
+ if (!newUrl) newUrl = await tiktokHelper.reverse(url)
+ if (!newUrl) newUrl = await quoraHelper.reverse(url)
+ if (!newUrl) newUrl = await libremdbHelper.reverse(url)
+ if (!newUrl) newUrl = await imgurHelper.reverse(url)
- if (newUrl) {
- resolve(newUrl);
- if (test) return;
- navigator.clipboard.writeText(newUrl);
- if (copyRawElement) {
- const textElement = copyRawElement.getElementsByTagName('h4')[0]
- const oldHtml = textElement.innerHTML;
- textElement.innerHTML = browser.i18n.getMessage('copied');
- setTimeout(() => textElement.innerHTML = oldHtml, 1000);
- }
- }
- }
- resolve()
- }
- )
- })
+ if (newUrl) {
+ resolve(newUrl)
+ if (test) return
+ navigator.clipboard.writeText(newUrl)
+ if (copyRawElement) {
+ const textElement = copyRawElement.getElementsByTagName("h4")[0]
+ const oldHtml = textElement.innerHTML
+ textElement.innerHTML = browser.i18n.getMessage("copied")
+ setTimeout(() => (textElement.innerHTML = oldHtml), 1000)
+ }
+ }
+ }
+ resolve()
+ })
+ })
}
function unify(test) {
- return new Promise(resolve => {
- browser.tabs.query(
- { active: true, currentWindow: true },
- async tabs => {
- let currTab = tabs[0]
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return; }
- if (currTab.incognito) { resolve(); return; }
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
+ if (currTab.incognito) {
+ resolve()
+ return
+ }
- let result = await youtubeHelper.copyPasteInvidiousCookies(test, url);
- if (!result) result = await youtubeHelper.copyPastePipedLocalStorage(test, url, currTab.id);
- if (!result) result = await youtubeHelper.copyPastePipedMaterialLocalStorage(test, url, currTab.id);
+ let result = await youtubeHelper.copyPasteInvidiousCookies(test, url)
+ if (!result) result = await youtubeHelper.copyPastePipedLocalStorage(test, url, currTab.id)
+ if (!result) result = await youtubeHelper.copyPastePipedMaterialLocalStorage(test, url, currTab.id)
- if (!result) result = await twitterHelper.initNitterCookies(test, url);
+ if (!result) result = await twitterHelper.initNitterCookies(test, url)
+ if (!result) result = await redditHelper.initLibredditCookies(test, url)
+ if (!result) result = await redditHelper.initTedditCookies(test, url)
+ if (!result) result = await searchHelper.initSearxCookies(test, url)
+ if (!result) result = await searchHelper.initSearxngCookies(test, url)
+ if (!result) result = await searchHelper.initLibrexCookies(test, url)
+ if (!result) result = await tiktokHelper.initProxiTokCookies(test, url)
+ if (!result) result = await wikipediaHelper.initWikilessCookies(test, url)
+ if (!result) result = await translateHelper.copyPasteSimplyTranslateCookies(test, url)
+ if (!result) result = await translateHelper.copyPasteLingvaLocalStorage(test, url)
- if (!result) result = await redditHelper.initLibredditCookies(test, url);
- if (!result) result = await redditHelper.initTedditCookies(test, url);
-
- if (!result) result = await searchHelper.initSearxCookies(test, url);
- if (!result) result = await searchHelper.initSearxngCookies(test, url);
- if (!result) result = await searchHelper.initLibrexCookies(test, url);
-
- if (!result) result = await tiktokHelper.initProxiTokCookies(test, url);
-
- if (!result) result = await wikipediaHelper.initWikilessCookies(test, url);
-
- if (!result) result = await translateHelper.copyPasteSimplyTranslateCookies(test, url);
- if (!result) result = await translateHelper.copyPasteLingvaLocalStorage(test, url);
-
- resolve(result);
- }
- }
- )
- })
+ resolve(result)
+ }
+ })
+ })
}
function switchInstance(test) {
- return new Promise(resolve => {
- browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0];
- if (currTab) {
- let url;
- try { url = new URL(currTab.url); }
- catch { resolve(); return };
- 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 sendTargetsHelper.switchInstance(url);
- if (!newUrl) newUrl = await peertubeHelper.switchInstance(url);
- if (!newUrl) newUrl = await lbryHelper.switchInstance(url);
- if (!newUrl) newUrl = await imgurHelper.switchInstance(url);
- if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url);
+ return new Promise(resolve => {
+ browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
+ let currTab = tabs[0]
+ if (currTab) {
+ let url
+ try {
+ url = new URL(currTab.url)
+ } catch {
+ resolve()
+ return
+ }
+ 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 sendTargetsHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await peertubeHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await lbryHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await imgurHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url, true)
+ if (!newUrl) newUrl = await youtubeMusicHelper.switchInstance(url, true)
- if (newUrl) {
- if (!test)
- browser.tabs.update({ url: newUrl });
- resolve(true)
- } else resolve()
- }
- })
- })
+ if (newUrl) {
+ if (!test) browser.tabs.update({ url: newUrl })
+ resolve(true)
+ } else resolve()
+ }
+ })
+ })
}
function latency(name, frontend, document, location) {
- let latencyElement = document.getElementById(`latency-${frontend}`);
- let latencyLabel = document.getElementById(`latency-${frontend}-label`);
- latencyElement.addEventListener("click",
- async () => {
- let reloadWindow = () => location.reload();
- latencyElement.addEventListener("click", reloadWindow);
- let key = `${name}Redirects`
- browser.storage.local.get(
- key,
- r => {
- let redirects = r[key];
- const oldHtml = latencyLabel.innerHTML;
- latencyLabel.innerHTML = '...';
- testLatency(latencyLabel, redirects[frontend].normal).then(r => {
- browser.storage.local.set({ [`${frontend}Latency`]: r });
- latencyLabel.innerHTML = oldHtml;
- processDefaultCustomInstances(name, frontend, 'normal', document);
- latencyElement.removeEventListener("click", reloadWindow)
- });
- }
- )
- }
- );
+ let latencyElement = document.getElementById(`latency-${frontend}`)
+ let latencyLabel = document.getElementById(`latency-${frontend}-label`)
+ latencyElement.addEventListener("click", async () => {
+ let reloadWindow = () => location.reload()
+ latencyElement.addEventListener("click", reloadWindow)
+ let key = `${name}Redirects`
+ browser.storage.local.get(key, r => {
+ let redirects = r[key]
+ const oldHtml = latencyLabel.innerHTML
+ latencyLabel.innerHTML = "..."
+ testLatency(latencyLabel, redirects[frontend].normal).then(r => {
+ browser.storage.local.set({ [`${frontend}Latency`]: r })
+ latencyLabel.innerHTML = oldHtml
+ processDefaultCustomInstances(name, frontend, "normal", document)
+ latencyElement.removeEventListener("click", reloadWindow)
+ })
+ })
+ })
}
export default {
- getRandomInstance,
- updateInstances,
- protocolHost,
- processDefaultCustomInstances,
- latency,
- copyCookie,
- getCookiesFromStorage,
- switchInstance,
- copyRaw,
- unify,
+ getRandomInstance,
+ updateInstances,
+ protocolHost,
+ processDefaultCustomInstances,
+ latency,
+ copyCookie,
+ getCookiesFromStorage,
+ switchInstance,
+ copyRaw,
+ unify,
}
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index d2ba7de8..d5c9bfa6 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -1,248 +1,262 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from './utils.js'
+import utils from "./utils.js"
const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/
const frontends = new Array("wikiless")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.wikiless = val;
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareBlackList) {
- const a = wikilessNormalRedirectsChecks.indexOf(instance);
- if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1);
- }
- browser.storage.local.set({
- wikipediaRedirects: redirects,
- wikilessNormalRedirectsChecks
- })
- })
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects.wikiless = val
+ wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
+ for (const instance of r.cloudflareBlackList) {
+ const a = wikilessNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1)
+ }
+ browser.storage.local.set({
+ wikipediaRedirects: redirects,
+ wikilessNormalRedirectsChecks,
+ })
+ })
}
-let
- disableWikipedia,
- wikipediaRedirects,
- protocol,
- protocolFallback,
- wikilessNormalRedirectsChecks,
- wikilessTorRedirectsChecks,
- wikilessI2pRedirectsChecks,
- wikilessNormalCustomRedirects,
- wikilessTorCustomRedirects,
- wikilessI2pCustomRedirects,
- wikilessLokiCustomRedirects;
+let disableWikipedia,
+ wikipediaRedirects,
+ protocol,
+ protocolFallback,
+ wikilessNormalRedirectsChecks,
+ wikilessTorRedirectsChecks,
+ wikilessI2pRedirectsChecks,
+ wikilessNormalCustomRedirects,
+ wikilessTorCustomRedirects,
+ wikilessI2pCustomRedirects,
+ wikilessLokiCustomRedirects
function init() {
- return new Promise(async resolve => {
- browser.storage.local.get(
- [
- "disableWikipedia",
- "wikipediaRedirects",
- "protocol",
- "protocolFallback",
- "wikilessNormalRedirectsChecks",
- "wikilessTorRedirectsChecks",
- "wikilessI2pRedirectsChecks",
- "wikilessNormalCustomRedirects",
- "wikilessTorCustomRedirects",
- "wikilessI2pCustomRedirects",
- "wikilessLokiCustomRedirects"
- ],
- r => {
- disableWikipedia = r.disableWikipedia;
- wikipediaRedirects = r.wikipediaRedirects;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks;
- wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks;
- wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks;
- wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects;
- wikilessTorCustomRedirects = r.wikilessTorCustomRedirects;
- wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects;
- wikilessLokiCustomRedirects = r.wikilessLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableWikipedia",
+ "wikipediaRedirects",
+ "protocol",
+ "protocolFallback",
+ "wikilessNormalRedirectsChecks",
+ "wikilessTorRedirectsChecks",
+ "wikilessI2pRedirectsChecks",
+ "wikilessNormalCustomRedirects",
+ "wikilessTorCustomRedirects",
+ "wikilessI2pCustomRedirects",
+ "wikilessLokiCustomRedirects",
+ ],
+ r => {
+ disableWikipedia = r.disableWikipedia
+ wikipediaRedirects = r.wikipediaRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ wikilessNormalRedirectsChecks = r.wikilessNormalRedirectsChecks
+ wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks
+ wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks
+ wikilessNormalCustomRedirects = r.wikilessNormalCustomRedirects
+ wikilessTorCustomRedirects = r.wikilessTorCustomRedirects
+ wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects
+ wikilessLokiCustomRedirects = r.wikilessLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function initWikilessCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(from);
- const all = [
- ...wikilessNormalRedirectsChecks,
- ...wikilessNormalCustomRedirects,
- ...wikilessTorRedirectsChecks,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pRedirectsChecks,
- ...wikilessI2pCustomRedirects,
- ...wikilessLokiCustomRedirects
- ];
- if (!all.includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(from)
+ const all = [
+ ...wikilessNormalRedirectsChecks,
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorRedirectsChecks,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pRedirectsChecks,
+ ...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects,
+ ]
+ if (!all.includes(protocolHost)) {
+ resolve()
+ return
+ }
- if (!test) {
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- await utils.copyCookie('wikiless', from, checkedInstances, 'theme');
- await utils.copyCookie('wikiless', from, checkedInstances, 'default_lang');
- }
- resolve(true);
- })
+ if (!test) {
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ await utils.copyCookie("wikiless", from, checkedInstances, "theme")
+ await utils.copyCookie("wikiless", from, checkedInstances, "default_lang")
+ }
+ resolve(true)
+ })
}
function pasteWikilessCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableWikipedia || protocol === undefined) { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- utils.getCookiesFromStorage('wikiless', checkedInstances, 'theme');
- utils.getCookiesFromStorage('wikiless', checkedInstances, 'default_lang');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableWikipedia || protocol === undefined) {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("wikiless", checkedInstances, "theme")
+ utils.getCookiesFromStorage("wikiless", checkedInstances, "default_lang")
+ resolve()
+ })
}
function redirect(url, disableOverride) {
- if (disableWikipedia && !disableOverride) return;
- if (!targets.test(url.href)) return;
+ if (disableWikipedia && !disableOverride) return
+ if (!targets.test(url.href)) return
- let GETArguments = [];
- if (url.search.length > 0) {
- let search = url.search.substring(1); //get rid of '?'
- let argstrings = search.split("&");
- for (let i = 0; i < argstrings.length; i++) {
- let args = argstrings[i].split("=");
- GETArguments.push([args[0], args[1]]);
- }
- }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList)
+ let GETArguments = []
+ if (url.search.length > 0) {
+ let search = url.search.substring(1) //get rid of '?'
+ let argstrings = search.split("&")
+ for (let i = 0; i < argstrings.length; i++) {
+ let args = argstrings[i].split("=")
+ GETArguments.push([args[0], args[1]])
+ }
+ }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
+ if (instancesList.length === 0) return
+ const randomInstance = utils.getRandomInstance(instancesList)
- let link = `${randomInstance}${url.pathname}`;
- let urlSplit = url.host.split(".");
- if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
- if (urlSplit[0] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- else
- GETArguments.push(["lang", urlSplit[0]]);
- if (urlSplit[1] == "m")
- GETArguments.push(["mobileaction", "toggle_view_mobile"]);
- // wikiless doesn't have mobile view support yet
- }
- for (let i = 0; i < GETArguments.length; i++)
- link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
- return link;
+ let link = `${randomInstance}${url.pathname}`
+ let urlSplit = url.host.split(".")
+ if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
+ if (urlSplit[0] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
+ else GETArguments.push(["lang", urlSplit[0]])
+ if (urlSplit[1] == "m") GETArguments.push(["mobileaction", "toggle_view_mobile"])
+ // wikiless doesn't have mobile view support yet
+ }
+ for (let i = 0; i < GETArguments.length; i++) link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1]
+ return link
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableWikipedia && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- const wikipediaList = [
- ...wikipediaRedirects.wikiless.normal,
- ...wikipediaRedirects.wikiless.tor,
- ...wikipediaRedirects.wikiless.i2p,
+ return new Promise(async resolve => {
+ await init()
+ if (disableWikipedia && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ const wikipediaList = [
+ ...wikipediaRedirects.wikiless.normal,
+ ...wikipediaRedirects.wikiless.tor,
+ ...wikipediaRedirects.wikiless.i2p,
- ...wikilessNormalCustomRedirects,
- ...wikilessTorCustomRedirects,
- ...wikilessI2pCustomRedirects,
- ...wikilessLokiCustomRedirects
- ];
- if (!wikipediaList.includes(protocolHost)) { resolve(); return; }
+ ...wikilessNormalCustomRedirects,
+ ...wikilessTorCustomRedirects,
+ ...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects,
+ ]
+ if (!wikipediaList.includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...wikilessLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
- else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- }
+ let instancesList = []
+ if (protocol == "loki") instancesList = [...wikilessLokiCustomRedirects]
+ else if (protocol == "i2p") instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]
+ else if (protocol == "tor") instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
+ }
- let index = instancesList.indexOf(protocolHost);
- if (index > -1) instancesList.splice(index, 1);
- if (instancesList.length === 0) { resolve(); return; }
+ let index = instancesList.indexOf(protocolHost)
+ if (index > -1) instancesList.splice(index, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
- wikilessNormalRedirectsChecks = [...redirects.wikiless.normal];
- for (const instance of r.cloudflareBlackList) {
- let i = wikilessNormalRedirectsChecks.indexOf(instance);
- if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1);
- }
- browser.storage.local.set({
- disableWikipedia: true,
- wikipediaRedirects: redirects,
-
- wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
- wikilessNormalCustomRedirects: [],
-
- wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
- wikilessTorCustomRedirects: [],
-
- wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
- wikilessI2pCustomRedirects: [],
-
- wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
- wikilessLokiCustomRedirects: []
-
- }, () => resolve());
- })
- })
- })
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i = wikilessNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableWikipedia: true,
+ wikipediaRedirects: redirects,
+
+ wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
+ wikilessNormalCustomRedirects: [],
+
+ wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
+ wikilessTorCustomRedirects: [],
+
+ wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
+ wikilessI2pCustomRedirects: [],
+
+ wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
+ wikilessLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- setRedirects,
+ setRedirects,
- initWikilessCookies,
- pasteWikilessCookies,
+ initWikilessCookies,
+ pasteWikilessCookies,
- redirect,
- initDefaults,
- switchInstance,
-};
+ redirect,
+ initDefaults,
+ switchInstance,
+}
diff --git a/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js b/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
index 9d052f62..df79e13c 100644
--- a/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
+++ b/src/assets/javascripts/youtube/get_pipedMaterial_preferences.js
@@ -1,7 +1,5 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- 'pipedMaterial_PREFERENCES': localStorage.getItem("PREFERENCES")
- }
-) \ No newline at end of file
+browser.storage.local.set({
+ pipedMaterial_PREFERENCES: localStorage.getItem("PREFERENCES"),
+})
diff --git a/src/assets/javascripts/youtube/get_piped_preferences.js b/src/assets/javascripts/youtube/get_piped_preferences.js
index 417d64df..388ecd19 100644
--- a/src/assets/javascripts/youtube/get_piped_preferences.js
+++ b/src/assets/javascripts/youtube/get_piped_preferences.js
@@ -1,24 +1,22 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.set(
- {
- 'piped_bufferGoal': localStorage.getItem("bufferGoal"),
- 'piped_comments': localStorage.getItem("comments"),
- 'piped_disableLBRY': localStorage.getItem("disableLBRY"),
- 'piped_enabledCodecs': localStorage.getItem("enabledCodecs"),
- 'piped_hl': localStorage.getItem("hl"),
- 'piped_homepage': localStorage.getItem("homepage"),
- 'piped_instance': localStorage.getItem("instance"),
- 'piped_listen': localStorage.getItem("listen"),
- 'piped_minimizeDescription': localStorage.getItem("minimizeDescription"),
- 'piped_playerAutoPlay': localStorage.getItem("playerAutoPlay"),
- 'piped_proxyLBRY': localStorage.getItem("proxyLBRY"),
- 'piped_quality': localStorage.getItem("quality"),
- 'piped_region': localStorage.getItem("region"),
- 'piped_selectedSkip': localStorage.getItem("selectedSkip"),
- 'piped_sponsorblock': localStorage.getItem("sponsorblock"),
- 'piped_theme': localStorage.getItem("theme"),
- 'piped_volume': localStorage.getItem("volume"),
- 'piped_watchHistory': localStorage.getItem("watchHistory"),
- }
-)
+browser.storage.local.set({
+ piped_bufferGoal: localStorage.getItem("bufferGoal"),
+ piped_comments: localStorage.getItem("comments"),
+ piped_disableLBRY: localStorage.getItem("disableLBRY"),
+ piped_enabledCodecs: localStorage.getItem("enabledCodecs"),
+ piped_hl: localStorage.getItem("hl"),
+ piped_homepage: localStorage.getItem("homepage"),
+ piped_instance: localStorage.getItem("instance"),
+ piped_listen: localStorage.getItem("listen"),
+ piped_minimizeDescription: localStorage.getItem("minimizeDescription"),
+ piped_playerAutoPlay: localStorage.getItem("playerAutoPlay"),
+ piped_proxyLBRY: localStorage.getItem("proxyLBRY"),
+ piped_quality: localStorage.getItem("quality"),
+ piped_region: localStorage.getItem("region"),
+ piped_selectedSkip: localStorage.getItem("selectedSkip"),
+ piped_sponsorblock: localStorage.getItem("sponsorblock"),
+ piped_theme: localStorage.getItem("theme"),
+ piped_volume: localStorage.getItem("volume"),
+ piped_watchHistory: localStorage.getItem("watchHistory"),
+})
diff --git a/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js b/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
index 7415255a..59d6dcc4 100644
--- a/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
+++ b/src/assets/javascripts/youtube/set_pipedMaterial_preferences.js
@@ -1,10 +1,7 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-browser.storage.local.get(
- "pipedMaterial_PREFERENCES",
- r => {
- if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
+browser.storage.local.get("pipedMaterial_PREFERENCES", r => {
+ if (r.pipedMaterial_PREFERENCES !== undefined) localStorage.setItem("PREFERENCES", r.pipedMaterial_PREFERENCES)
- window.close();
- }
-) \ No newline at end of file
+ window.close()
+})
diff --git a/src/assets/javascripts/youtube/set_piped_preferences.js b/src/assets/javascripts/youtube/set_piped_preferences.js
index 346de5c2..374f2d61 100644
--- a/src/assets/javascripts/youtube/set_piped_preferences.js
+++ b/src/assets/javascripts/youtube/set_piped_preferences.js
@@ -1,45 +1,45 @@
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
browser.storage.local.get(
- [
- "piped_bufferGoal",
- "piped_comments",
- "piped_disableLBRY",
- "piped_enabledCodecs",
- "piped_homepage",
- "piped_instance",
- "piped_listen",
- "piped_minimizeDescription",
- "piped_playerAutoPlay",
- "piped_proxyLBRY",
- "piped_quality",
- "piped_region",
- "piped_selectedSkip",
- "piped_sponsorblock",
- "piped_theme",
- "piped_volume",
- "piped_watchHistory",
- ],
- r => {
- if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal);
- if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments);
- if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY);
- if (r.piped_hl !== undefined) localStorage.setItem("hl", r.piped_hl);
- if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs);
- if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage);
- if (r.piped_instance !== undefined) localStorage.setItem("instance", r.piped_instance);
- if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen);
- if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription);
- if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay);
- if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY);
- if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality);
- if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region);
- if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip);
- if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock);
- if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme);
- if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume);
- if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory);
+ [
+ "piped_bufferGoal",
+ "piped_comments",
+ "piped_disableLBRY",
+ "piped_enabledCodecs",
+ "piped_homepage",
+ "piped_instance",
+ "piped_listen",
+ "piped_minimizeDescription",
+ "piped_playerAutoPlay",
+ "piped_proxyLBRY",
+ "piped_quality",
+ "piped_region",
+ "piped_selectedSkip",
+ "piped_sponsorblock",
+ "piped_theme",
+ "piped_volume",
+ "piped_watchHistory",
+ ],
+ r => {
+ if (r.piped_bufferGoal !== undefined) localStorage.setItem("bufferGoal", r.piped_bufferGoal)
+ if (r.piped_comments !== undefined) localStorage.setItem("comments", r.piped_comments)
+ if (r.piped_disableLBRY !== undefined) localStorage.setItem("disableLBRY", r.piped_disableLBRY)
+ if (r.piped_hl !== undefined) localStorage.setItem("hl", r.piped_hl)
+ if (r.piped_enabledCodecs !== undefined) localStorage.setItem("enabledCodecs", r.piped_enabledCodecs)
+ if (r.piped_homepage !== undefined) localStorage.setItem("homepage", r.piped_homepage)
+ if (r.piped_instance !== undefined) localStorage.setItem("instance", r.piped_instance)
+ if (r.piped_listen !== undefined) localStorage.setItem("listen", r.piped_listen)
+ if (r.piped_minimizeDescription !== undefined) localStorage.setItem("minimizeDescription", r.piped_minimizeDescription)
+ if (r.piped_playerAutoPlay !== undefined) localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay)
+ if (r.piped_proxyLBRY !== undefined) localStorage.setItem("proxyLBRY", r.piped_proxyLBRY)
+ if (r.piped_quality !== undefined) localStorage.setItem("quality", r.piped_quality)
+ if (r.piped_region !== undefined) localStorage.setItem("region", r.piped_region)
+ if (r.piped_selectedSkip !== undefined) localStorage.setItem("selectedSkip", r.piped_selectedSkip)
+ if (r.piped_sponsorblock !== undefined) localStorage.setItem("sponsorblock", r.piped_sponsorblock)
+ if (r.piped_theme !== undefined) localStorage.setItem("theme", r.piped_theme)
+ if (r.piped_volume !== undefined) localStorage.setItem("volume", r.piped_volume)
+ if (r.piped_watchHistory !== undefined) localStorage.setItem("watchHistory", r.piped_watchHistory)
- window.close();
- }
-) \ No newline at end of file
+ window.close()
+ }
+)
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index 72763c46..e8a77ff6 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -1,601 +1,856 @@
-"use strict";
+"use strict"
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-import utils from '../utils.js'
+import utils from "../utils.js"
const targets = [
- /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
+ /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
- /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
- /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
+ /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
+ /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
- /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
+ /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
- /^https?:\/{2}youtu\.be\/..*/,
+ /^https?:\/{2}youtu\.be\/..*/,
- /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
-];
+ /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
+]
-const frontends = new Array("invidious", "piped", "pipedMaterial")
+const frontends = new Array("invidious", "piped", "pipedMaterial", "cloudtube")
const protocols = new Array("normal", "tor", "i2p", "loki")
-let redirects = {};
+let redirects = {}
for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = {}
- for (let x = 0; x < protocols.length; x++) {
- redirects[frontends[i]][protocols[x]] = []
- }
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
}
function setRedirects(val) {
- browser.storage.local.get('cloudflareBlackList', r => {
- redirects.invidious = val.invidious;
- redirects.piped = val.piped;
- redirects.pipedMaterial = val.pipedMaterial
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
- for (const instance of r.cloudflareBlackList) {
- const a = invidiousNormalRedirectsChecks.indexOf(instance);
- if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1);
+ browser.storage.local.get("cloudflareBlackList", r => {
+ for (let i = 0; i < frontends.length; i++) {
+ redirects.frontends = val.frontends
+ }
+ invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
+ pipedNormalRedirectsChecks = [...redirects.piped.normal]
+ pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
+ for (const instance of r.cloudflareBlackList) {
+ 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);
- }
- browser.storage.local.set({
- youtubeRedirects: redirects,
- invidiousNormalRedirectsChecks,
- invidiousTorRedirectsChecks: redirects.invidious.tor,
- pipedNormalRedirectsChecks,
- pipedTorRedirectsChecks: redirects.piped.tor,
- pipedMaterialNormalRedirectsChecks,
- // pipedMaterialTorRedirectsChecks: redirects.pipedMaterial.tor
- })
- })
+ 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,
+ pipedNormalRedirectsChecks,
+ pipedMaterialNormalRedirectsChecks,
+ cloudtubeNormalRedirectsChecks,
+ })
+ })
}
-let
- disableYoutube,
- onlyEmbeddedVideo,
- youtubeFrontend,
- protocol,
- protocolFallback,
- youtubeEmbedFrontend,
- youtubeRedirects,
- invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects,
- invidiousTorRedirectsChecks,
- invidiousTorCustomRedirects,
- invidiousI2pCustomRedirects,
- invidiousLokiCustomRedirects,
- pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects,
- pipedTorRedirectsChecks,
- pipedTorCustomRedirects,
- pipedI2pCustomRedirects,
- pipedLokiCustomRedirects,
- pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects,
- pipedMaterialTorRedirectsChecks,
- pipedMaterialTorCustomRedirects,
- pipedMaterialI2pCustomRedirects,
- pipedMaterialLokiCustomRedirects;
+let disableYoutube,
+ onlyEmbeddedVideo,
+ youtubeFrontend,
+ protocol,
+ protocolFallback,
+ youtubeEmbedFrontend,
+ youtubeRedirects,
+ invidiousNormalRedirectsChecks,
+ invidiousNormalCustomRedirects,
+ invidiousTorRedirectsChecks,
+ invidiousTorCustomRedirects,
+ invidiousI2pRedirectsChecks,
+ invidiousI2pCustomRedirects,
+ invidiousLokiRedirectsChecks,
+ invidiousLokiCustomRedirects,
+ pipedNormalRedirectsChecks,
+ pipedNormalCustomRedirects,
+ pipedTorRedirectsChecks,
+ pipedTorCustomRedirects,
+ pipedI2pRedirectsChecks,
+ pipedI2pCustomRedirects,
+ pipedLokiRedirectsChecks,
+ pipedLokiCustomRedirects,
+ pipedMaterialNormalRedirectsChecks,
+ pipedMaterialNormalCustomRedirects,
+ pipedMaterialTorRedirectsChecks,
+ pipedMaterialTorCustomRedirects,
+ pipedMaterialI2pRedirectsChecks,
+ pipedMaterialI2pCustomRedirects,
+ pipedMaterialLokiRedirectsChecks,
+ pipedMaterialLokiCustomRedirects,
+ cloudtubeNormalRedirectsChecks,
+ cloudtubeNormalCustomRedirects,
+ cloudtubeTorRedirectsChecks,
+ cloudtubeTorCustomRedirects,
+ cloudtubeI2pRedirectsChecks,
+ cloudtubeI2pCustomRedirects,
+ cloudtubeLokiRedirectsChecks,
+ cloudtubeLokiCustomRedirects
function init() {
- return new Promise(resolve => {
- browser.storage.local.get(
- [
- "disableYoutube",
- "onlyEmbeddedVideo",
- "youtubeFrontend",
- "protocol",
- "protocolFallback",
- "youtubeEmbedFrontend",
- "youtubeRedirects",
- "invidiousNormalRedirectsChecks",
- "invidiousNormalCustomRedirects",
- "invidiousTorRedirectsChecks",
- "invidiousTorCustomRedirects",
- "invidiousI2pCustomRedirects",
- "invidiousLokiCustomRedirects",
- "pipedNormalRedirectsChecks",
- "pipedNormalCustomRedirects",
- "pipedTorRedirectsChecks",
- "pipedTorCustomRedirects",
- "pipedI2pCustomRedirects",
- "pipedLokiCustomRedirects",
- "pipedMaterialNormalRedirectsChecks",
- "pipedMaterialNormalCustomRedirects",
- "pipedMaterialTorRedirectsChecks",
- "pipedMaterialTorCustomRedirects",
- "pipedMaterialI2pCustomRedirects",
- "pipedMaterialLokiCustomRedirects"
- ],
- r => {
- disableYoutube = r.disableYoutube;
- onlyEmbeddedVideo = r.onlyEmbeddedVideo;
- youtubeFrontend = r.youtubeFrontend;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- youtubeEmbedFrontend = r.youtubeEmbedFrontend;
- youtubeRedirects = r.youtubeRedirects;
- invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks;
- invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects;
- invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks;
- invidiousTorCustomRedirects = r.invidiousTorCustomRedirects;
- invidiousI2pCustomRedirects = r.invidiousI2pCustomRedirects;
- invidiousLokiCustomRedirects = r.invidiousLokiCustomRedirects;
- pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks;
- pipedNormalCustomRedirects = r.pipedNormalCustomRedirects;
- pipedTorRedirectsChecks = r.pipedTorRedirectsChecks;
- pipedTorCustomRedirects = r.pipedTorCustomRedirects;
- pipedI2pCustomRedirects = r.pipedI2pCustomRedirects;
- pipedLokiCustomRedirects = r.pipedLokiCustomRedirects;
- pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks;
- pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects;
- pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks;
- pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects;
- pipedMaterialI2pCustomRedirects = r.pipedMaterialI2pCustomRedirects;
- pipedMaterialLokiCustomRedirects = r.pipedMaterialLokiCustomRedirects;
- resolve();
- }
- )
- })
+ return new Promise(resolve => {
+ browser.storage.local.get(
+ [
+ "disableYoutube",
+ "onlyEmbeddedVideo",
+ "youtubeFrontend",
+ "protocol",
+ "protocolFallback",
+ "youtubeEmbedFrontend",
+ "youtubeRedirects",
+ "invidiousNormalRedirectsChecks",
+ "invidiousNormalCustomRedirects",
+ "invidiousTorRedirectsChecks",
+ "invidiousTorCustomRedirects",
+ "invidiousI2pRedirectsChecks",
+ "invidiousI2pCustomRedirects",
+ "invidiousLokiRedirectsChecks",
+ "invidiousLokiCustomRedirects",
+ "pipedNormalRedirectsChecks",
+ "pipedNormalCustomRedirects",
+ "pipedTorRedirectsChecks",
+ "pipedTorCustomRedirects",
+ "pipedI2pRedirectsChecks",
+ "pipedI2pCustomRedirects",
+ "pipedLokiRedirectsChecks",
+ "pipedLokiCustomRedirects",
+ "pipedMaterialNormalRedirectsChecks",
+ "pipedMaterialNormalCustomRedirects",
+ "pipedMaterialTorRedirectsChecks",
+ "pipedMaterialTorCustomRedirects",
+ "pipedMaterialI2pRedirectsChecks",
+ "pipedMaterialI2pCustomRedirects",
+ "pipedMaterialLokiRedirectsChecks",
+ "pipedMaterialLokiCustomRedirects",
+ "cloudtubeNormalRedirectsChecks",
+ "cloudtubeNormalCustomRedirects",
+ "cloudtubeTorRedirectsChecks",
+ "cloudtubeTorCustomRedirects",
+ "cloudtubeI2pRedirectsChecks",
+ "cloudtubeI2pCustomRedirects",
+ "cloudtubeLokiRedirectsChecks",
+ "cloudtubeLokiCustomRedirects",
+ ],
+ r => {
+ disableYoutube = r.disableYoutube
+ onlyEmbeddedVideo = r.onlyEmbeddedVideo
+ youtubeFrontend = r.youtubeFrontend
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ youtubeEmbedFrontend = r.youtubeEmbedFrontend
+ youtubeRedirects = r.youtubeRedirects
+ invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks
+ invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects
+ invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks
+ invidiousTorCustomRedirects = r.invidiousTorCustomRedirects
+ invidiousI2pRedirectsChecks = r.invidiousI2pRedirectsChecks
+ invidiousI2pCustomRedirects = r.invidiousI2pCustomRedirects
+ invidiousLokiRedirectsChecks = r.invidiousLokiRedirectsChecks
+ invidiousLokiCustomRedirects = r.invidiousLokiCustomRedirects
+ pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks
+ pipedNormalCustomRedirects = r.pipedNormalCustomRedirects
+ pipedTorRedirectsChecks = r.pipedTorRedirectsChecks
+ pipedTorCustomRedirects = r.pipedTorCustomRedirects
+ pipedI2pRedirectsChecks = r.pipedI2pRedirectsChecks
+ pipedI2pCustomRedirects = r.pipedI2pCustomRedirects
+ pipedLokiRedirectsChecks = r.pipedLokiRedirectsChecks
+ pipedLokiCustomRedirects = r.pipedLokiCustomRedirects
+ pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks
+ pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects
+ pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks
+ pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects
+ pipedMaterialI2pRedirectsChecks = r.pipedMaterialI2pRedirectsChecks
+ pipedMaterialI2pCustomRedirects = r.pipedMaterialI2pCustomRedirects
+ pipedMaterialLokiRedirectsChecks = r.pipedMaterialLokiRedirectsChecks
+ pipedMaterialLokiCustomRedirects = r.pipedMaterialLokiCustomRedirects
+ cloudtubeNormalRedirectsChecks = r.cloudtubeNormalRedirectsChecks
+ cloudtubeNormalCustomRedirects = r.cloudtubeNormalCustomRedirects
+ cloudtubeTorRedirectsChecks = r.cloudtubeTorRedirectsChecks
+ cloudtubeTorCustomRedirects = r.cloudtubeTorCustomRedirects
+ cloudtubeI2pRedirectsChecks = r.cloudtubeI2pRedirectsChecks
+ cloudtubeI2pCustomRedirects = r.cloudtubeI2pCustomRedirects
+ cloudtubeLokiRedirectsChecks = r.cloudtubeLokiRedirectsChecks
+ cloudtubeLokiCustomRedirects = r.cloudtubeLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
function all() {
- return [
- ...youtubeRedirects.invidious.normal,
- ...youtubeRedirects.invidious.tor,
+ return [
+ ...youtubeRedirects.invidious.normal,
+ ...youtubeRedirects.invidious.tor,
+ ...youtubeRedirects.invidious.i2p,
+ ...youtubeRedirects.invidious.loki,
- ...youtubeRedirects.piped.normal,
- ...youtubeRedirects.piped.tor,
+ ...youtubeRedirects.piped.normal,
+ ...youtubeRedirects.piped.tor,
+ ...youtubeRedirects.piped.i2p,
+ ...youtubeRedirects.piped.loki,
- ...youtubeRedirects.pipedMaterial.normal,
- ...youtubeRedirects.pipedMaterial.tor,
+ ...youtubeRedirects.pipedMaterial.normal,
+ ...youtubeRedirects.pipedMaterial.tor,
+ ...youtubeRedirects.pipedMaterial.i2p,
+ ...youtubeRedirects.pipedMaterial.loki,
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
- ...invidiousI2pCustomRedirects,
- ...invidiousLokiCustomRedirects,
+ ...youtubeRedirects.cloudtube.normal,
+ ...youtubeRedirects.cloudtube.tor,
+ ...youtubeRedirects.cloudtube.i2p,
+ ...youtubeRedirects.cloudtube.loki,
- ...pipedNormalCustomRedirects,
- ...pipedTorCustomRedirects,
- ...pipedI2pCustomRedirects,
- ...pipedLokiCustomRedirects,
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects,
- ...pipedMaterialNormalCustomRedirects,
- ...pipedMaterialTorCustomRedirects,
- ...pipedMaterialI2pCustomRedirects,
- ...pipedMaterialLokiCustomRedirects
- ];
-}
+ ...pipedNormalCustomRedirects,
+ ...pipedTorCustomRedirects,
+ ...pipedI2pCustomRedirects,
+ ...pipedLokiCustomRedirects,
-function redirect(url, type, initiator, disableOverride) {
- if (disableYoutube && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
- if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB';
+ ...pipedMaterialNormalCustomRedirects,
+ ...pipedMaterialTorCustomRedirects,
+ ...pipedMaterialI2pCustomRedirects,
+ ...pipedMaterialLokiCustomRedirects,
- const isInvidious = youtubeFrontend == 'invidious';
- const isPiped = youtubeFrontend == 'piped';
- const isPipedMaterial = youtubeFrontend == 'pipedMaterial'
- const isFreetube = youtubeFrontend == 'freetube';
- const isYatte = youtubeFrontend == 'yatte';
+ ...cloudtubeNormalCustomRedirects,
+ ...cloudtubeTorCustomRedirects,
+ ...cloudtubeI2pCustomRedirects,
+ ...cloudtubeLokiCustomRedirects,
+ ]
+}
- //const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
- const isFrontendInvidious = youtubeEmbedFrontend == 'invidious';
- const isFrontendPiped = youtubeEmbedFrontend == 'piped';
- const isFrontendPipedMaterial = youtubeEmbedFrontend == 'pipedMaterial';
+function calculateFrontend(type) {
+ switch (type) {
+ case "main_frame":
+ return youtubeFrontend
+ case "sub_frame":
+ return youtubeEmbedFrontend
+ }
+}
- const main_frame = type === "main_frame";
- const sub_frame = type === "sub_frame";
+function getInstanceList(type) {
+ let instancesList = []
+ switch (calculateFrontend(type)) {
+ case "invidious":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ break
+ case "piped":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ }
+ break
+ case "pipedMaterial":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ case "cloudtube":
+ switch (protocol) {
+ case "loki":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ break
+ case "i2p":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ break
+ case "tor":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
+ return instancesList
+}
- if (!sub_frame && !main_frame) return;
- if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return; // Don't redirect YouTube Player API.
- if (onlyEmbeddedVideo == 'onlyEmbedded' && main_frame) return;
- if (onlyEmbeddedVideo == 'onlyNotEmbedded' && !main_frame) return;
+function redirect(url, type, initiator, disableOverride) {
+ if (disableYoutube && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
+ if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
- //if ((isFreetube || isYatte) && sub_frame && isFrontendYoutube) return;
+ if (type != ("main_frame" || "sub_frame")) return
+ if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return // Don't redirect YouTube Player API.
+ if (onlyEmbeddedVideo == "onlyEmbedded" && type == "main_frame") return
+ if (onlyEmbeddedVideo == "onlyNotEmbedded" && type == "sub_frame") return
- if (isYatte && main_frame) return url.href.replace(/^https?:\/{2}/, 'yattee://');
- if (isFreetube && main_frame) return `freetube://https://youtube.com${url.pathname}${url.search}`;
+ if (type == "main_frame") {
+ switch (youtubeFrontend) {
+ case "yatte":
+ return url.href.replace(/^https?:\/{2}/, "yattee://")
+ case "freetube":
+ return `freetube://https://youtube.com${url.pathname}${url.search}`
+ }
+ }
- if (isInvidious || ((isFreetube || isYatte) && sub_frame && isFrontendInvidious)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- if (isPiped || ((isFreetube || isYatte) && sub_frame && isFrontendPiped)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- if (isPipedMaterial || ((isFreetube || isYatte) && sub_frame && isFrontendPipedMaterial)) {
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`;
- }
- return 'CANCEL';
+ const instanceList = getInstanceList(type)
+ try {
+ if (instanceList.length >= 1) {
+ const randomInstance = utils.getRandomInstance(instanceList)
+ return `${randomInstance}${url.pathname}${url.search}`
+ }
+ } catch {
+ return
+ }
}
function reverse(url) {
- return new Promise(async resolve => {
- await init();
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
- resolve(`https://youtube.com${url.pathname}${url.search}`);
- })
+ return new Promise(async resolve => {
+ await init()
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+ resolve(`https://youtube.com${url.pathname}${url.search}`)
+ })
}
function switchInstance(url, disableOverride) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube && !disableOverride) { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (!all().includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
- let instancesList = [];
- if (protocol == 'loki') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousLokiCustomRedirects]; //...invidiousLokiRedirectsChecks,
- else if (youtubeFrontend == 'piped') instancesList = [...pipedLokiCustomRedirects]; //...pipedLokiRedirectsChecks,
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialLokiCustomRedirects]; //...pipedMaterialLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousI2pCustomRedirects]; //...invidiousI2pRedirectsChecks,
- else if (youtubeFrontend == 'piped') instancesList = [...pipedI2pCustomRedirects]; //...pipedI2pRedirectsChecks,
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialI2pCustomRedirects]; //...pipedMaterialI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
+ let instancesList = []
+ switch (protocol) {
+ case "loki":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ }
+ break
+ case "i2p":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ }
+ break
+ case "tor":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
- const i = instancesList.indexOf(protocolHost);
- if (i > -1) instancesList.splice(i, 1);
- if (instancesList.length == 0) { resolve(); return; }
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length == 0) {
+ resolve()
+ return
+ }
- const randomInstance = utils.getRandomInstance(instancesList);
- resolve(`${randomInstance}${url.pathname}${url.search}`);
- })
+ const randomInstance = utils.getRandomInstance(instancesList)
+ resolve(`${randomInstance}${url.pathname}${url.search}`)
+ })
}
function initDefaults() {
- return new Promise(async resolve => {
- fetch('/instances/data.json').then(response => response.text()).then(async data => {
- let dataJson = JSON.parse(data);
- for (let i = 0; i < frontends.length; i++) {
- redirects[frontends[i]] = dataJson[frontends[i]]
- }
- browser.storage.local.get('cloudflareBlackList', async r => {
+ return new Promise(async resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ invidiousNormalRedirectsChecks = [...redirects.invidious.normal]
+ pipedNormalRedirectsChecks = [...redirects.piped.normal]
+ pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal]
+ cloudtubeNormalRedirectsChecks = [...redirects.cloudtube.normal]
+
+ for (const instance of r.cloudflareBlackList) {
+ const a = invidiousNormalRedirectsChecks.indexOf(instance)
+ if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1)
+
+ const b = pipedNormalRedirectsChecks.indexOf(instance)
+ if (b > -1) pipedNormalRedirectsChecks.splice(b, 1)
- invidiousNormalRedirectsChecks = [...redirects.invidious.normal];
- pipedNormalRedirectsChecks = [...redirects.piped.normal];
- pipedMaterialNormalRedirectsChecks = [...redirects.pipedMaterial.normal];
+ const c = pipedMaterialNormalRedirectsChecks.indexOf(instance)
+ if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1)
- for (const instance of r.cloudflareBlackList) {
- const a = invidiousNormalRedirectsChecks.indexOf(instance);
- if (a > -1) invidiousNormalRedirectsChecks.splice(a, 1);
+ const d = cloudtubeNormalRedirectsChecks.indexOf(instance)
+ if (d > -1) cloudtubeNormalRedirectsChecks.indexOf(instance)
+ }
- const b = pipedNormalRedirectsChecks.indexOf(instance);
- if (b > -1) pipedNormalRedirectsChecks.splice(b, 1);
+ browser.storage.local.set(
+ {
+ disableYoutube: false,
+ enableYoutubeCustomSettings: false,
+ onlyEmbeddedVideo: "both",
+ youtubeRedirects: redirects,
+ youtubeFrontend: "invidious",
- const c = pipedMaterialNormalRedirectsChecks.indexOf(instance);
- if (c > -1) pipedMaterialNormalRedirectsChecks.splice(c, 1);
- }
+ invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
+ invidiousNormalCustomRedirects: [],
- browser.storage.local.set({
- disableYoutube: false,
- enableYoutubeCustomSettings: false,
- onlyEmbeddedVideo: 'both',
- youtubeRedirects: redirects,
- youtubeFrontend: 'invidious',
+ invidiousTorRedirectsChecks: [...redirects.invidious.tor],
+ invidiousTorCustomRedirects: [],
- invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
- invidiousNormalCustomRedirects: [],
+ invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
+ invidiousI2pCustomRedirects: [],
- invidiousTorRedirectsChecks: [...redirects.invidious.tor],
- invidiousTorCustomRedirects: [],
+ invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
+ invidiousLokiCustomRedirects: [],
- invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
- invidiousI2pCustomRedirects: [],
+ pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
+ pipedNormalCustomRedirects: [],
- invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
- invidiousLokiCustomRedirects: [],
+ pipedTorRedirectsChecks: [...redirects.piped.tor],
+ pipedTorCustomRedirects: [],
- pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
- pipedNormalCustomRedirects: [],
+ pipedI2pRedirectsChecks: [...redirects.piped.i2p],
+ pipedI2pCustomRedirects: [],
- pipedTorRedirectsChecks: [...redirects.piped.tor],
- pipedTorCustomRedirects: [],
+ pipedLokiRedirectsChecks: [...redirects.piped.loki],
+ pipedLokiCustomRedirects: [],
- pipedI2pRedirectsChecks: [...redirects.piped.i2p],
- pipedI2pCustomRedirects: [],
+ pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
+ pipedMaterialNormalCustomRedirects: [],
- pipedLokiRedirectsChecks: [...redirects.piped.loki],
- pipedLokiCustomRedirects: [],
+ pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
+ pipedMaterialTorCustomRedirects: [],
- pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
- pipedMaterialNormalCustomRedirects: [],
+ pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
+ pipedMaterialI2pCustomRedirects: [],
- pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
- pipedMaterialTorCustomRedirects: [],
+ pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
+ pipedMaterialLokiCustomRedirects: [],
- pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
- pipedMaterialI2pCustomRedirects: [],
+ cloudtubeNormalRedirectsChecks: cloudtubeNormalRedirectsChecks,
+ cloudtubeNormalCustomRedirects: [],
- pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
- pipedMaterialLokiCustomRedirects: [],
+ cloudtubeTorRedirectsChecks: [...redirects.cloudtube.tor],
+ cloudtubeTorCustomRedirects: [],
- youtubeEmbedFrontend: 'invidious'
- }, () => resolve())
- })
- })
- })
+ cloudtubeI2pRedirectsChecks: [...redirects.cloudtube.i2p],
+ cloudtubeI2pCustomRedirects: [],
+
+ cloudtubeLokiRedirectsChecks: [...redirects.cloudtube.loki],
+ cloudtubeLokiCustomRedirects: [],
+
+ youtubeEmbedFrontend: "invidious",
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
function copyPasteInvidiousCookies(test, from) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- const protocolHost = utils.protocolHost(from);
- if (![
- ...invidiousNormalRedirectsChecks,
- ...invidiousTorRedirectsChecks,
- ...invidiousNormalCustomRedirects,
- ...invidiousTorCustomRedirects,
- ...invidiousI2pCustomRedirects,
- ...invidiousLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
- if (!test) {
- let checkedInstances = [];
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "invidious") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(from)
+ if (
+ ![
+ ...invidiousNormalRedirectsChecks,
+ ...invidiousTorRedirectsChecks,
+ ...invidiousNormalCustomRedirects,
+ ...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
+ if (!test) {
+ let checkedInstances = []
- if (protocol == 'loki') checkedInstances = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- await utils.copyCookie('invidious', from, checkedInstances, 'PREFS');
- }
- resolve(true);
- })
+ if (protocol == "loki") checkedInstances = [...invidiousLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...invidiousI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ await utils.copyCookie("invidious", from, checkedInstances, "PREFS")
+ }
+ resolve(true)
+ })
}
function pasteInvidiousCookies() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...invidiousLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...invidiousI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
- if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- }
- utils.getCookiesFromStorage('invidious', checkedInstances, 'PREFS');
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "invidious") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...invidiousLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...invidiousI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ }
+ utils.getCookiesFromStorage("invidious", checkedInstances, "PREFS")
+ resolve()
+ })
}
function copyPastePipedLocalStorage(test, url, tabId) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedNormalCustomRedirects,
- ...pipedNormalRedirectsChecks,
- ...pipedTorRedirectsChecks,
- ...pipedTorCustomRedirects,
- ...pipedI2pCustomRedirects,
- ...pipedLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "piped") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks, ...pipedTorRedirectsChecks, ...pipedTorCustomRedirects, ...pipedI2pCustomRedirects, ...pipedLokiCustomRedirects].includes(
+ protocolHost
+ )
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_piped_preferences.js", runAt: "document_start" });
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/youtube/get_piped_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_piped_preferences.js", runAt: "document_start" }))
- }
- }
- resolve(true);
- })
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_piped_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ }
+ resolve(true)
+ })
}
function pastePipedLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- }
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_piped_preferences.js", runAt: "document_start" }))
- }
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "piped") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
+ }
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_piped_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve()
+ })
}
-function copyPastePipedMaterialLocalStorage(test, url, tabId,) {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- const protocolHost = utils.protocolHost(url);
- if (![
- ...pipedMaterialNormalRedirectsChecks,
- ...pipedMaterialNormalCustomRedirects,
- //...pipedMaterialTorRedirectsChecks,
- ...pipedMaterialTorCustomRedirects,
- ...pipedMaterialI2pCustomRedirects,
- ...pipedMaterialLokiCustomRedirects
- ].includes(protocolHost)) { resolve(); return; }
+function copyPastePipedMaterialLocalStorage(test, url, tabId) {
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "pipedMaterial") {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (
+ ![
+ ...pipedMaterialNormalRedirectsChecks,
+ ...pipedMaterialNormalCustomRedirects,
+ //...pipedMaterialTorRedirectsChecks,
+ ...pipedMaterialTorCustomRedirects,
+ ...pipedMaterialI2pCustomRedirects,
+ ...pipedMaterialLokiCustomRedirects,
+ ].includes(protocolHost)
+ ) {
+ resolve()
+ return
+ }
- if (!test) {
- browser.tabs.executeScript(tabId, { file: "/assets/javascripts/youtube/get_pipedMaterial_preferences.js", runAt: "document_start" });
+ if (!test) {
+ browser.tabs.executeScript(tabId, {
+ file: "/assets/javascripts/youtube/get_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- }
- const i = checkedInstances.indexOf(protocolHost);
- if (i !== -1) checkedInstances.splice(i, 1);
- for (const to of checkedInstances)
- browser.tabs.create(
- { url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" })
- );
- }
- resolve(true);
- })
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedMaterialLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedMaterialI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedMaterialTorCustomRedirects] //...pipedMaterialTorRedirectsChecks,
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ const i = checkedInstances.indexOf(protocolHost)
+ if (i !== -1) checkedInstances.splice(i, 1)
+ for (const to of checkedInstances)
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve(true)
+ })
}
function pastePipedMaterialLocalStorage() {
- return new Promise(async resolve => {
- await init();
- if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- let checkedInstances = [];
- if (protocol == 'loki') checkedInstances = [...pipedMaterialLokiCustomRedirects];
- else if (protocol == 'i2p') checkedInstances = [...pipedMaterialI2pCustomRedirects];
- else if (protocol == 'tor') checkedInstances = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- }
- for (const to of checkedInstances) {
- browser.tabs.create({ url: to },
- tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js", runAt: "document_start" }))
- }
- resolve();
- })
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutube || youtubeFrontend != "pipedMaterial") {
+ resolve()
+ return
+ }
+ let checkedInstances = []
+ if (protocol == "loki") checkedInstances = [...pipedMaterialLokiCustomRedirects]
+ else if (protocol == "i2p") checkedInstances = [...pipedMaterialI2pCustomRedirects]
+ else if (protocol == "tor") checkedInstances = [...pipedMaterialTorCustomRedirects] //...pipedMaterialTorRedirectsChecks,
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ }
+ for (const to of checkedInstances) {
+ browser.tabs.create({ url: to }, tab =>
+ browser.tabs.executeScript(tab.id, {
+ file: "/assets/javascripts/youtube/set_pipedMaterial_preferences.js",
+ runAt: "document_start",
+ })
+ )
+ }
+ resolve()
+ })
}
function removeXFrameOptions(e) {
- let isChanged = false;
+ let isChanged = false
- if (e.type == 'main_frame') {
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'content-security-policy') {
- let instancesList = [];
- if (protocol == 'loki') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousLokiCustomRedirects]; //...invidiousLokiRedirectsChecks,
- if (youtubeFrontend == 'piped') instancesList = [...pipedLokiCustomRedirects]; //...pipedLokiRedirectsChecks,
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialLokiCustomRedirects]; //...pipedMaterialLokiRedirectsChecks,
- }
- else if (protocol == 'i2p') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousI2pCustomRedirects]; //...invidiousI2pRedirectsChecks,
- if (youtubeFrontend == 'piped') instancesList = [...pipedI2pCustomRedirects]; //...pipedI2pRedirectsChecks,
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialI2pCustomRedirects]; //...pipedMaterialI2pRedirectsChecks,
- }
- else if (protocol == 'tor') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
- if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
- }
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- }
- let securityPolicyList = e.responseHeaders[i].value.split(';');
- for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim();
+ if (e.type == "main_frame") {
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "content-security-policy") {
+ let instancesList = []
+ switch (protocol) {
+ case "loki":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousLokiRedirectsChecks, ...invidiousLokiCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedLokiRedirectsChecks, ...pipedLokiCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialLokiRedirectsChecks, ...pipedMaterialLokiCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeLokiRedirectsChecks, ...cloudtubeLokiCustomRedirects]
+ }
+ break
+ case "i2p":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousI2pRedirectsChecks, ...invidiousI2pCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedI2pRedirectsChecks, ...pipedI2pCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialI2pRedirectsChecks, ...pipedMaterialI2pCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeI2pRedirectsChecks, ...cloudtubeI2pCustomRedirects]
+ }
+ break
+ case "tor":
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeTorRedirectsChecks, ...cloudtubeTorCustomRedirects]
+ }
+ }
+ if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+ switch (youtubeFrontend) {
+ case "invidious":
+ instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
+ break
+ case "piped":
+ instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects]
+ break
+ case "pipedMaterial":
+ instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
+ break
+ case "cloudtube":
+ instancesList = [...cloudtubeNormalRedirectsChecks, ...cloudtubeNormalCustomRedirects]
+ }
+ }
+ let securityPolicyList = e.responseHeaders[i].value.split(";")
+ for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim()
- let newSecurity = '';
- for (const item of securityPolicyList) {
- if (item.trim() == '') continue
- let regex = item.match(/([a-z-]{0,}) (.*)/)
- if (regex == null) continue
- let [, key, vals] = regex;
- if (key == 'frame-src') vals = vals + ' ' + instancesList.join(' ');
- newSecurity += key + ' ' + vals + '; ';
- }
+ let newSecurity = ""
+ for (const item of securityPolicyList) {
+ if (item.trim() == "") continue
+ let regex = item.match(/([a-z-]{0,}) (.*)/)
+ if (regex == null) continue
+ let [, key, vals] = regex
+ if (key == "frame-src") vals = vals + " " + instancesList.join(" ")
+ newSecurity += key + " " + vals + "; "
+ }
- e.responseHeaders[i].value = newSecurity;
- isChanged = true;
- }
- }
- }
- else if (e.type == 'sub_frame') {
- const url = new URL(e.url);
- const protocolHost = utils.protocolHost(url);
- if (all().includes(protocolHost)) {
- for (const i in e.responseHeaders) {
- if (e.responseHeaders[i].name == 'x-frame-options') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- else if (e.responseHeaders[i].name == 'content-security-policy') {
- e.responseHeaders.splice(i, 1);
- isChanged = true;
- }
- }
- }
- }
- if (isChanged) return { responseHeaders: e.responseHeaders };
+ e.responseHeaders[i].value = newSecurity
+ isChanged = true
+ }
+ }
+ } else if (e.type == "sub_frame") {
+ const url = new URL(e.url)
+ const protocolHost = utils.protocolHost(url)
+ if (all().includes(protocolHost)) {
+ for (const i in e.responseHeaders) {
+ if (e.responseHeaders[i].name == "x-frame-options") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ } else if (e.responseHeaders[i].name == "content-security-policy") {
+ e.responseHeaders.splice(i, 1)
+ isChanged = true
+ }
+ }
+ }
+ }
+ if (isChanged) return { responseHeaders: e.responseHeaders }
}
export default {
- setRedirects,
- copyPastePipedLocalStorage,
- pastePipedLocalStorage,
- copyPastePipedMaterialLocalStorage,
- pastePipedMaterialLocalStorage,
- copyPasteInvidiousCookies,
- pasteInvidiousCookies,
- redirect,
- reverse,
- switchInstance,
- initDefaults,
- removeXFrameOptions,
-};
+ setRedirects,
+ copyPastePipedLocalStorage,
+ pastePipedLocalStorage,
+ copyPastePipedMaterialLocalStorage,
+ pastePipedMaterialLocalStorage,
+ copyPasteInvidiousCookies,
+ pasteInvidiousCookies,
+ redirect,
+ reverse,
+ switchInstance,
+ initDefaults,
+ removeXFrameOptions,
+}
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
index 46caf60e..3ff9a174 100644
--- a/src/assets/javascripts/youtubeMusic.js
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -1,61 +1,192 @@
-"use strict";
+"use strict"
-import utils from './utils.js'
+import utils from "./utils.js"
-window.browser = window.browser || window.chrome;
+window.browser = window.browser || window.chrome
-const targets = [
- /^https?:\/{2}music\.youtube\.com(\/.*|$)/,
-];
-let redirects = {
- "beatbump": {
- "normal": [
- "https://beatbump.ml"
- ],
- "tor": [],
- "i2p": [],
- "loki": []
- },
-};
+const targets = [/^https?:\/{2}music\.youtube\.com(\/.*|$)/]
-let
- disableYoutubeMusic,
- protocol,
- protocolFallback,
- beatbumpNormalRedirectsChecks,
- beatbumpNormalCustomRedirects,
- beatbumpTorCustomRedirects,
- beatbumpI2pCustomRedirects,
- beatbumpLokiCustomRedirects;
+const frontends = new Array("beatbump", "hyperpipe")
+const protocols = new Array("normal", "tor", "i2p", "loki")
+
+let redirects = {}
+
+for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = {}
+ for (let x = 0; x < protocols.length; x++) {
+ redirects[frontends[i]][protocols[x]] = []
+ }
+}
+
+function setRedirects(val) {
+ browser.storage.local.get("cloudflareBlackList", r => {
+ redirects = val
+ beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
+ hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ 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,
+ hyperpipeNormalRedirectsChecks,
+ })
+ })
+}
+
+let disableYoutubeMusic,
+ youtubeMusicFrontend,
+ youtubeMusicRedirects,
+ protocol,
+ protocolFallback,
+ beatbumpNormalRedirectsChecks,
+ beatbumpNormalCustomRedirects,
+ beatbumpTorRedirectsChecks,
+ beatbumpTorCustomRedirects,
+ beatbumpI2pRedirectsChecks,
+ beatbumpI2pCustomRedirects,
+ beatbumpLokiRedirectsChecks,
+ beatbumpLokiCustomRedirects,
+ hyperpipeNormalRedirectsChecks,
+ hyperpipeNormalCustomRedirects,
+ hyperpipeTorRedirectsChecks,
+ hyperpipeTorCustomRedirects,
+ hyperpipeI2pRedirectsChecks,
+ hyperpipeI2pCustomRedirects,
+ hyperpipeLokiRedirectsChecks,
+ hyperpipeLokiCustomRedirects
function init() {
- browser.storage.local.get(
- [
- "disableYoutubeMusic",
- "protocol",
- "protocolFallback",
- "beatbumpNormalRedirectsChecks",
- "beatbumpNormalCustomRedirects",
- "beatbumpTorCustomRedirects",
- "beatbumpI2pCustomRedirects",
- "beatbumpLokiCustomRedirects"
- ],
- r => {
- disableYoutubeMusic = r.disableYoutubeMusic;
- protocol = r.protocol;
- protocolFallback = r.protocolFallback;
- beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks;
- beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects;
- beatbumpTorCustomRedirects = r.beatbumpTorCustomRedirects;
- beatbumpI2pCustomRedirects = r.beatbumpI2pCustomRedirects;
- beatbumpLokiCustomRedirects = r.beatbumpLokiCustomRedirects;
- }
- )
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableYoutubeMusic",
+ "youtubeMusicFrontend",
+ "youtubeMusicRedirects",
+ "protocol",
+ "protocolFallback",
+ "beatbumpNormalRedirectsChecks",
+ "beatbumpNormalCustomRedirects",
+ "beatbumpTorRedirectsChecks",
+ "beatbumpTorCustomRedirects",
+ "beatbumpI2pRedirectsChecks",
+ "beatbumpI2pCustomRedirects",
+ "beatbumpLokiRedirectsChecks",
+ "beatbumpLokiCustomRedirects",
+ "hyperpipeNormalRedirectsChecks",
+ "hyperpipeNormalCustomRedirects",
+ "hyperpipeTorRedirectsChecks",
+ "hyperpipeTorCustomRedirects",
+ "hyperpipeI2pRedirectsChecks",
+ "hyperpipeI2pCustomRedirects",
+ "hyperpipeLokiRedirectsChecks",
+ "hyperpipeLokiCustomRedirects",
+ ],
+ r => {
+ disableYoutubeMusic = r.disableYoutubeMusic
+ youtubeMusicFrontend = r.youtubeMusicFrontend
+ youtubeMusicRedirects = r.youtubeMusicRedirects
+ protocol = r.protocol
+ protocolFallback = r.protocolFallback
+ beatbumpNormalRedirectsChecks = r.beatbumpNormalRedirectsChecks
+ beatbumpNormalCustomRedirects = r.beatbumpNormalCustomRedirects
+ beatbumpTorRedirectsChecks = r.beatbumpTorRedirectsChecks
+ beatbumpTorCustomRedirects = r.beatbumpTorCustomRedirects
+ beatbumpI2pRedirectsChecks = r.beatbumpI2pRedirectsChecks
+ beatbumpI2pCustomRedirects = r.beatbumpI2pCustomRedirects
+ beatbumpLokiRedirectsChecks = r.beatbumpLokiRedirectsChecks
+ beatbumpLokiCustomRedirects = r.beatbumpLokiCustomRedirects
+ hyperpipeNormalRedirectsChecks = r.hyperpipeNormalRedirectsChecks
+ hyperpipeNormalCustomRedirects = r.hyperpipeNormalCustomRedirects
+ hyperpipeTorRedirectsChecks = r.hyperpipeTorRedirectsChecks
+ hyperpipeTorCustomRedirects = r.hyperpipeTorCustomRedirects
+ hyperpipeI2pRedirectsChecks = r.hyperpipeI2pRedirectsChecks
+ hyperpipeI2pCustomRedirects = r.hyperpipeI2pCustomRedirects
+ hyperpipeLokiRedirectsChecks = r.hyperpipeLokiRedirectsChecks
+ hyperpipeLokiCustomRedirects = r.hyperpipeLokiCustomRedirects
+ resolve()
+ }
+ )
+ })
}
-init();
+init()
browser.storage.onChanged.addListener(init)
+function all() {
+ return [
+ ...beatbumpNormalRedirectsChecks,
+ ...beatbumpNormalCustomRedirects,
+ ...beatbumpTorRedirectsChecks,
+ ...beatbumpTorCustomRedirects,
+ ...beatbumpI2pRedirectsChecks,
+ ...beatbumpI2pCustomRedirects,
+ ...beatbumpLokiRedirectsChecks,
+ ...beatbumpLokiCustomRedirects,
+ ...hyperpipeNormalRedirectsChecks,
+ ...hyperpipeNormalCustomRedirects,
+ ...hyperpipeTorRedirectsChecks,
+ ...hyperpipeTorCustomRedirects,
+ ...hyperpipeI2pRedirectsChecks,
+ ...hyperpipeI2pCustomRedirects,
+ ...hyperpipeLokiRedirectsChecks,
+ ...hyperpipeLokiCustomRedirects,
+ ]
+}
+
+function getInstanceList() {
+ let tmpList = []
+ switch (youtubeMusicFrontend) {
+ case "beatbump":
+ switch (protocol) {
+ case "loki":
+ tmpList = [...beatbumpLokiRedirectsChecks, ...beatbumpLokiCustomRedirects]
+ break
+ case "i2p":
+ tmpList = [...beatbumpI2pRedirectsChecks, ...beatbumpI2pCustomRedirects]
+ break
+ case "tor":
+ tmpList = [...beatbumpTorRedirectsChecks, ...beatbumpTorCustomRedirects]
+ }
+ if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") {
+ tmpList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects]
+ }
+ break
+ case "hyperpipe":
+ switch (protocol) {
+ case "loki":
+ tmpList = [...hyperpipeLokiRedirectsChecks, ...hyperpipeLokiCustomRedirects]
+ break
+ case "i2p":
+ tmpList = [...hyperpipeI2pRedirectsChecks, ...hyperpipeI2pCustomRedirects]
+ break
+ case "tor":
+ tmpList = [...hyperpipeTorRedirectsChecks, ...hyperpipeTorCustomRedirects]
+ }
+ if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") {
+ tmpList = [...hyperpipeNormalRedirectsChecks, ...hyperpipeNormalCustomRedirects]
+ }
+ }
+ return tmpList
+}
+
+function getUrl(randomInstance, url) {
+ switch (youtubeMusicFrontend) {
+ case "beatbump":
+ return `${randomInstance}${url.pathname}${url.search}`
+ .replace("/watch?v=", "/listen?id=")
+ .replace("/channel/", "/artist/")
+ .replace("/playlist?list=", "/playlist/VL")
+ .replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/") + "?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D")
+ case "hyperpipe":
+ return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/"))
+ }
+}
+
/*
Video
https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA
@@ -88,48 +219,105 @@ https://music.youtube.com/search?q=test
https://beatbump.ml/search/test?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D
*/
-function redirect(url, disableOverride) {
- if (disableYoutubeMusic && !disableOverride) return;
- if (!targets.some(rx => rx.test(url.href))) return;
+function redirect(url, type, initiator, disableOverride) {
+ if (disableYoutubeMusic && !disableOverride) return
+ if (!targets.some(rx => rx.test(url.href))) return
- let instancesList = [];
- if (protocol == 'loki') instancesList = [...beatbumpLokiCustomRedirects];
- else if (protocol == 'i2p') instancesList = [...beatbumpI2pCustomRedirects];
- else if (protocol == 'tor') instancesList = [...beatbumpTorCustomRedirects];
- if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
- instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
- }
- if (instancesList.length === 0) return;
- const randomInstance = utils.getRandomInstance(instancesList);
- return `${randomInstance}${url.pathname}${url.search}`
- .replace("/watch?v=", "/listen?id=")
- .replace("/channel/", "/artist/")
- .replace("/playlist?list=", "/playlist/VL")
- .replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/") + "?filter=EgWKAQIIAWoKEAMQBBAKEAkQBQ%3D%3D");
+ let instancesList = getInstanceList()
+
+ if (instancesList.length === 0) return
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return getUrl(randomInstance, url)
}
-async function initDefaults() {
- return new Promise(resolve =>
- browser.storage.local.set({
- disableYoutubeMusic: true,
- youtubeMusicRedirects: redirects,
+function switchInstance(url, disableOverride) {
+ return new Promise(async resolve => {
+ await init()
+ if (disableYoutubeMusic && !disableOverride) {
+ resolve()
+ return
+ }
+ const protocolHost = utils.protocolHost(url)
+ if (!all().includes(protocolHost)) {
+ resolve()
+ return
+ }
+
+ let instancesList = getInstanceList()
+
+ const i = instancesList.indexOf(protocolHost)
+ if (i > -1) instancesList.splice(i, 1)
+ if (instancesList.length === 0) {
+ resolve()
+ return
+ }
+
+ const randomInstance = utils.getRandomInstance(instancesList)
+ return getUrl(randomInstance, url)
+ })
+}
+
+function initDefaults() {
+ return new Promise(resolve => {
+ fetch("/instances/data.json")
+ .then(response => response.text())
+ .then(async data => {
+ let dataJson = JSON.parse(data)
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
+ browser.storage.local.get("cloudflareBlackList", async r => {
+ beatbumpNormalRedirectsChecks = [...redirects.beatbump.normal]
+ hyperpipeNormalRedirectsChecks = [...redirects.hyperpipe.normal]
+ for (const instance of r.cloudflareBlackList) {
+ let i
+
+ i = beatbumpNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) beatbumpNormalRedirectsChecks.splice(i, 1)
- beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
- beatbumpNormalCustomRedirects: [],
+ i = hyperpipeNormalRedirectsChecks.indexOf(instance)
+ if (i > -1) hyperpipeNormalRedirectsChecks.splice(i, 1)
+ }
+ browser.storage.local.set(
+ {
+ disableYoutubeMusic: false,
+ youtubeMusicFrontend: "hyperpipe",
+ youtubeMusicRedirects: redirects,
- beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
- beatbumpTorCustomRedirects: [],
+ beatbumpNormalRedirectsChecks: beatbumpNormalRedirectsChecks,
+ beatbumpNormalCustomRedirects: [],
- beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
- beatbumpI2pCustomRedirects: [],
+ beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
+ beatbumpTorCustomRedirects: [],
- beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
- beatbumpLokiCustomRedirects: []
- }, () => resolve())
- )
+ beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
+ beatbumpI2pCustomRedirects: [],
+
+ beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
+ beatbumpLokiCustomRedirects: [],
+
+ hyperpipeNormalRedirectsChecks: hyperpipeNormalRedirectsChecks,
+ hyperpipeNormalCustomRedirects: [],
+
+ hyperpipeTorRedirectsChecks: [...redirects.hyperpipe.tor],
+ hyperpipeTorCustomRedirects: [],
+
+ hyperpipeI2pRedirectsChecks: [...redirects.hyperpipe.i2p],
+ hyperpipeI2pCustomRedirects: [],
+
+ hyperpipeLokiRedirectsChecks: [...redirects.hyperpipe.loki],
+ hyperpipeLokiCustomRedirects: [],
+ },
+ () => resolve()
+ )
+ })
+ })
+ })
}
export default {
- redirect,
- initDefaults,
-};
+ setRedirects,
+ switchInstance,
+ redirect,
+ initDefaults,
+}