aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts')
-rw-r--r--src/assets/javascripts/general.js2
-rw-r--r--src/assets/javascripts/imdb.js73
-rw-r--r--src/assets/javascripts/imgur.js62
-rw-r--r--src/assets/javascripts/instagram.js75
-rw-r--r--src/assets/javascripts/lbry.js118
-rw-r--r--src/assets/javascripts/maps.js41
-rw-r--r--src/assets/javascripts/medium.js70
-rw-r--r--src/assets/javascripts/peertube.js49
-rw-r--r--src/assets/javascripts/quora.js70
-rw-r--r--src/assets/javascripts/reddit.js163
-rw-r--r--src/assets/javascripts/reuters.js66
-rw-r--r--src/assets/javascripts/search.js300
-rw-r--r--src/assets/javascripts/sendTargets.js61
-rw-r--r--src/assets/javascripts/tiktok.js92
-rw-r--r--src/assets/javascripts/translate/translate.js186
-rw-r--r--src/assets/javascripts/twitter.js89
-rw-r--r--src/assets/javascripts/utils.js28
-rw-r--r--src/assets/javascripts/wikipedia.js99
-rw-r--r--src/assets/javascripts/youtube/youtube.js253
-rw-r--r--src/assets/javascripts/youtubeMusic.js38
20 files changed, 1417 insertions, 518 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index f778d876..1c27a55d 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -44,6 +44,8 @@ async function initDefaults() {
],
autoRedirect: false,
firstPartyIsolate: false,
+ protocol: "normal",
+ protocolFallback: true
}, () => resolve())
)
}
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 0061b7e3..2a8ac2f6 100644
--- a/src/assets/javascripts/imdb.js
+++ b/src/assets/javascripts/imdb.js
@@ -3,15 +3,21 @@ window.browser = window.browser || window.chrome;
import utils from './utils.js'
const targets = [
- /^https?:\/{2}(www\.|)imdb\.com.*/
+ /^https?:\/{2}(?:www\.|)imdb\.com.*/
];
-let redirects = {
- "libremdb": {
- "normal": [],
- "tor": []
+const frontends = new Array("libremdb")
+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.libremdb = val;
@@ -29,33 +35,42 @@ function setRedirects(val) {
let
disableImdb,
- imdbProtocol,
+ protocol,
+ protocolFallback,
imdbRedirects,
libremdbNormalRedirectsChecks,
libremdbNormalCustomRedirects,
libremdbTorRedirectsChecks,
- libremdbTorCustomRedirects;
+ libremdbTorCustomRedirects,
+ libremdbI2pCustomRedirects,
+ libremdbLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableImdb",
- "imdbProtocol",
+ "protocol",
+ "protocolFallback",
"imdbRedirects",
"libremdbNormalRedirectsChecks",
"libremdbNormalCustomRedirects",
"libremdbTorRedirectsChecks",
"libremdbTorCustomRedirects",
+ "libremdbI2pCustomRedirects",
+ "libremdbLokiCustomRedirects"
],
r => {
disableImdb = r.disableImdb;
- imdbProtocol = r.imdbProtocol;
+ 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();
}
)
@@ -76,10 +91,14 @@ function redirect(url, type, initiator, disableOverride) {
if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (imdbProtocol == 'normal') instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects];
- if (imdbProtocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects];
- 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}`;
@@ -93,7 +112,9 @@ function reverse(url) {
...imdbRedirects.libremdb.normal,
...imdbRedirects.libremdb.tor,
...libremdbNormalCustomRedirects,
- ...libremdbTorCustomRedirects
+ ...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
@@ -112,12 +133,18 @@ function switchInstance(url, disableOverride) {
...libremdbNormalCustomRedirects,
...libremdbTorCustomRedirects,
+ ...libremdbI2pCustomRedirects,
+ ...libremdbLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (imdbProtocol == 'normal') instancesList = [...libremdbNormalCustomRedirects, ...libremdbNormalRedirectsChecks];
- else if (imdbProtocol == 'tor') instancesList = [...libremdbTorCustomRedirects, ...libremdbTorRedirectsChecks];
+ 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);
@@ -132,11 +159,11 @@ function initDefaults() {
return new Promise(async resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.libremdb = dataJson.libremdb;
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
browser.storage.local.set({
disableImdb: true,
- imdbProtocol: "normal",
-
imdbRedirects: redirects,
libremdbNormalRedirectsChecks: [...redirects.libremdb.normal],
@@ -144,6 +171,12 @@ function initDefaults() {
libremdbTorRedirectsChecks: [...redirects.libremdb.tor],
libremdbTorCustomRedirects: [],
+
+ libremdbI2pRedirectsChecks: [],
+ libremdbI2pCustomRedirects: [],
+
+ libremdbLokiRedirectsChecks: [],
+ libremdbLokiCustomRedirects: []
}, () => resolve());
});
})
diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js
index 8cf54265..f373276f 100644
--- a/src/assets/javascripts/imgur.js
+++ b/src/assets/javascripts/imgur.js
@@ -4,13 +4,18 @@ import utils from './utils.js'
const targets = /^https?:\/{2}([im]\.)?imgur\.(com|io)(\/|$)/
-let redirects = {
- "rimgo": {
- "normal": [],
- "tor": [],
- "i2p": []
+const frontends = new Array("rimgo")
+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() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
@@ -45,13 +50,15 @@ function setRedirects() {
let
disableImgur,
imgurRedirects,
- imgurProtocol,
+ protocol,
+ protocolFallback,
rimgoNormalRedirectsChecks,
rimgoNormalCustomRedirects,
rimgoTorRedirectsChecks,
rimgoTorCustomRedirects,
rimgoI2pRedirectsChecks,
- rimgoI2pCustomRedirects;
+ rimgoI2pCustomRedirects,
+ rimgoLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
@@ -59,24 +66,28 @@ function init() {
[
"disableImgur",
"imgurRedirects",
- "imgurProtocol",
+ "protocol",
+ "protocolFallback",
"rimgoNormalRedirectsChecks",
"rimgoNormalCustomRedirects",
"rimgoTorRedirectsChecks",
"rimgoTorCustomRedirects",
"rimgoI2pRedirectsChecks",
"rimgoI2pCustomRedirects",
+ "rimgoLokiCustomRedirects"
],
r => {
disableImgur = r.disableImgur;
imgurRedirects = r.imgurRedirects;
- imgurProtocol = r.imgurProtocol;
+ 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();
}
)
@@ -100,6 +111,7 @@ function all() {
...rimgoNormalCustomRedirects,
...rimgoTorCustomRedirects,
...rimgoI2pCustomRedirects,
+ ...rimgoLokiCustomRedirects
];
}
@@ -111,11 +123,14 @@ function redirect(url, type, initiator, disableOverride) {
if (!targets.test(url.href)) return;
if (url.pathname.includes("delete/")) return;
- let instancesList;
- if (imgurProtocol == 'normal') instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects];
- if (imgurProtocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects];
- if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects];
- 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}`;
@@ -136,10 +151,13 @@ function switchInstance(url, disableOverride) {
if (disableImgur && !disableOverride) { resolve(); return; }
let protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (imgurProtocol == 'normal') instancesList = [...rimgoNormalCustomRedirects, ...rimgoNormalRedirectsChecks];
- else if (imgurProtocol == 'tor') instancesList = [...rimgoTorCustomRedirects, ...rimgoTorRedirectsChecks];
- else if (imgurProtocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks];
+ 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);
@@ -154,7 +172,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.rimgo = dataJson.rimgo;
+ 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) {
@@ -163,7 +183,6 @@ function initDefaults() {
}
browser.storage.local.set({
disableImgur: false,
- imgurProtocol: 'normal',
imgurRedirects: redirects,
rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks,
@@ -174,6 +193,9 @@ function initDefaults() {
rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p],
rimgoI2pCustomRedirects: [],
+
+ rimgoLokiRedirectsChecks: [...redirects.rimgo.loki],
+ rimgoLokiCustomRedirects: []
}, () => resolve());
});
});
diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js
index 7fa69200..182ff4d9 100644
--- a/src/assets/javascripts/instagram.js
+++ b/src/assets/javascripts/instagram.js
@@ -5,12 +5,19 @@ const targets = [
"instagram.com",
"www.instagram.com",
];
-let redirects = {
- "bibliogram": {
- "normal": [],
- "tor": []
- }
-};
+
+const frontends = new Array("bibliogram")
+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', async r => {
redirects.bibliogram = val;
@@ -28,33 +35,42 @@ function setRedirects(val) {
let
disableInstagram,
- instagramProtocol,
+ protocol,
+ protocolFallback,
instagramRedirects,
bibliogramNormalRedirectsChecks,
bibliogramTorRedirectsChecks,
bibliogramNormalCustomRedirects,
- bibliogramTorCustomRedirects;
+ bibliogramTorCustomRedirects,
+ bibliogramI2pCustomRedirects,
+ bibliogramLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableInstagram",
- "instagramProtocol",
+ "protocol",
+ "protocolFallback",
"instagramRedirects",
"bibliogramNormalRedirectsChecks",
"bibliogramTorRedirectsChecks",
"bibliogramNormalCustomRedirects",
"bibliogramTorCustomRedirects",
+ "bibliogramI2pCustomRedirects",
+ "bibliogramLokiCustomRedirects"
],
r => {
disableInstagram = r.disableInstagram;
- instagramProtocol = r.instagramProtocol;
+ 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();
}
)
@@ -70,6 +86,8 @@ function all() {
...instagramRedirects.bibliogram.tor,
...bibliogramNormalCustomRedirects,
...bibliogramTorCustomRedirects,
+ ...bibliogramI2pCustomRedirects,
+ ...bibliogramLokiCustomRedirects
]
}
@@ -82,10 +100,14 @@ function redirect(url, type, initiator, disableOverride) {
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 (instagramProtocol == 'normal') instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects];
- else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects];
- if (instancesList.length === 0) 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)
const reservedPaths = ["u", "p", "privacy",];
@@ -116,9 +138,13 @@ function switchInstance(url, disableOverride) {
let protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (instagramProtocol == 'normal') instancesList = [...bibliogramNormalCustomRedirects, ...bibliogramNormalRedirectsChecks];
- else if (instagramProtocol == 'tor') instancesList = [...bibliogramTorCustomRedirects, ...bibliogramTorRedirectsChecks];
+ 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);
@@ -133,7 +159,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
- redirects.bibliogram = dataJson.bibliogram;
+ 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) {
@@ -145,11 +173,16 @@ function initDefaults() {
instagramRedirects: redirects,
bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks,
- bibliogramTorRedirectsChecks: [],
+ bibliogramNormalCustomRedirects: [],
- bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor],
+ bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor],
bibliogramTorCustomRedirects: [],
- instagramProtocol: "normal",
+
+ bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p],
+ bibliogramI2pCustomRedirects: [],
+
+ bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki],
+ bibliogramLokiCustomRedirects: []
})
resolve();
}
diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js
index 77a8e4ec..cfdf1bb0 100644
--- a/src/assets/javascripts/lbry.js
+++ b/src/assets/javascripts/lbry.js
@@ -4,70 +4,74 @@ import utils from './utils.js'
let targets = ["odysee.com"];
-let redirects = {
- "librarian": {
- "normal": [
- "https://lbry.bcow.xyz",
- "https://odysee.076.ne.jp",
- "https://lbry.ix.tc",
- "https://librarian.pussthecat.org",
- "https://lbry.mutahar.rocks",
- "https://librarian.esmailelbob.xyz",
- ],
- "tor": [
- "http://ecc5mi5ncdw6mxhjz6re6g2uevtpbzxjvxgrxia2gyvrlnil3srbnhyd.onion",
- "http://vrmbc4brkgkaysmi3fenbzkayobxjh24slmhtocambn3ewe62iuqt3yd.onion",
- ]
+const frontends = new Array("librarian")
+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.librarian = val;
- browser.storage.local.set({ lbryTargetsRedirects: redirects })
- for (const item of librarianNormalRedirectsChecks)
- if (!redirects.librarian.normal.includes(item)) {
- var index = librarianNormalRedirectsChecks.indexOf(item);
- if (index !== -1) librarianNormalRedirectsChecks.splice(index, 1);
- }
- browser.storage.local.set(librarianNormalRedirectsChecks);
-
- for (const item of librarianTorRedirectsChecks)
- if (!redirects.librarian.normal.includes(item)) {
- var index = librarianTorRedirectsChecks.indexOf(item);
- if (index !== -1) librarianTorRedirectsChecks.splice(index, 1);
+ 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(librarianTorRedirectsChecks)
+ browser.storage.local.set({
+ lbryTargetsRedirects: redirects,
+ librarianNormalRedirectsChecks
+ })
+ })
}
let
disableLbryTargets,
- lbryTargetsProtocol,
+ protocol,
+ protocolFallback,
lbryTargetsRedirects,
librarianNormalRedirectsChecks,
librarianNormalCustomRedirects,
librarianTorRedirectsChecks,
- librarianTorCustomRedirects;
+ librarianTorCustomRedirects,
+ librarianI2pRedirectsChecks,
+ librarianI2pCustomRedirects,
+ librarianLokiCustomRedirects;
function init() {
return new Promise(resolve => {
browser.storage.local.get(
[
"disableLbryTargets",
- "lbryTargetsProtocol",
+ "protocol",
+ "protocolFallback",
"lbryTargetsRedirects",
"librarianNormalRedirectsChecks",
"librarianNormalCustomRedirects",
"librarianTorRedirectsChecks",
"librarianTorCustomRedirects",
+ "librarianI2pRedirectsChecks",
+ "librarianI2pCustomRedirects",
+ "librarianLokiCustomRedirects"
],
r => {
disableLbryTargets = r.disableLbryTargets;
- lbryTargetsProtocol = r.lbryTargetsProtocol;
+ 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();
}
)
@@ -82,6 +86,8 @@ function all() {
...redirects.librarian.tor,
...librarianNormalCustomRedirects,
...librarianTorCustomRedirects,
+ ...librarianI2pCustomRedirects,
+ ...librarianLokiCustomRedirects
];
}
@@ -92,9 +98,13 @@ function switchInstance(url, disableOverride) {
const protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- else if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
+ 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);
@@ -111,9 +121,13 @@ function redirect(url, type, initiator, disableOverride) {
if (!targets.includes(url.host)) return;
if (type != "main_frame") return;
- let instancesList;
- if (lbryTargetsProtocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
- if (lbryTargetsProtocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
+ 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);
@@ -121,31 +135,29 @@ function redirect(url, type, initiator, disableOverride) {
}
function initDefaults() {
- return new Promise(resolve => {
- browser.storage.local.get('cloudflareBlackList', async r => {
- librarianNormalRedirectsChecks = [...redirects.librarian.normal];
- for (const instance of r.cloudflareBlackList) {
- let i;
-
- i = librarianNormalRedirectsChecks.indexOf(instance);
- if (i > -1) librarianNormalRedirectsChecks.splice(i, 1);
+ 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: {
- 'librarian': redirects.librarian
- },
+ lbryTargetsRedirects: redirects,
- librarianNormalRedirectsChecks: librarianNormalRedirectsChecks,
+ librarianNormalRedirectsChecks: [...redirects.librarian.normal],
librarianNormalCustomRedirects: [],
librarianTorRedirectsChecks: [...redirects.librarian.tor],
librarianTorCustomRedirects: [],
- lbryTargetsProtocol: "normal",
- }, () => resolve())
+ librarianI2pRedirectsChecks: [...redirects.librarian.i2p],
+ librarianI2pCustomRedirects: [],
- })
+ librarianLokiRedirectsChecks: [...redirects.librarian.loki],
+ librarianLokiCustomRedirects: []
+ }, () => resolve());
+ });
})
}
diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js
index 57add6f8..fd65b1c5 100644
--- a/src/assets/javascripts/maps.js
+++ b/src/assets/javascripts/maps.js
@@ -14,7 +14,10 @@ let redirects = {
'facil': {
"normal": [
"https://facilmap.org"
- ]
+ ],
+ "tor": [],
+ "i2p": [],
+ "loki": []
}
};
@@ -22,22 +25,37 @@ let redirects = {
let
disableMaps,
mapsFrontend,
+ protocol,
+ protocolFallback,
facilNormalRedirectsChecks,
- facilNormalCustomRedirects;
+ 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;
}
)
}
@@ -89,7 +107,15 @@ function redirect(url, initiator) {
let randomInstance;
if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal);
- if (mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]);
+
+ 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 mapCentre = "#";
let prefs = {};
@@ -201,6 +227,15 @@ async function initDefaults() {
mapsRedirects: redirects,
facilNormalRedirectsChecks: [...redirects.facil.normal],
facilNormalCustomRedirects: [],
+
+ facilTorRedirectsChecks: [...redirects.facil.tor],
+ facilTorCustomRedirects: [],
+
+ facilI2pRedirectsChecks: [...redirects.facil.i2p],
+ facilI2pCustomRedirects: [],
+
+ facilLokiRedirectsChecks: [...redirects.facil.loki],
+ facilLokiCustomRedirects: []
}, () => resolve())
)
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index 5d688b23..ddd955c1 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -1,7 +1,6 @@
window.browser = window.browser || window.chrome;
import utils from './utils.js'
-
const targets = [
// /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
/^medium\.com/,
@@ -28,12 +27,18 @@ const targets = [
/^ writingcooperative\.com /,
];
-let redirects = {
- "scribe": {
- "normal": [],
- "tor": []
- }
-};
+const frontends = new Array("scribe")
+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.scribe = val;
@@ -56,7 +61,10 @@ let
scribeNormalCustomRedirects,
scribeTorRedirectsChecks,
scribeTorCustomRedirects,
- mediumProtocol;
+ scribeI2pCustomRedirects,
+ scribeLokiCustomRedirects,
+ protocol,
+ protocolFallback;
function init() {
return new Promise(resolve => {
@@ -68,7 +76,10 @@ function init() {
"scribeNormalCustomRedirects",
"scribeTorRedirectsChecks",
"scribeTorCustomRedirects",
- "mediumProtocol"
+ "scribeI2pCustomRedirects",
+ "scribeLokiCustomRedirects",
+ "protocol",
+ "protocolFallback"
],
r => {
disableMedium = r.disableMedium;
@@ -77,7 +88,10 @@ function init() {
scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
scribeTorCustomRedirects = r.scribeTorCustomRedirects;
- mediumProtocol = r.mediumProtocol;
+ scribeI2pCustomRedirects = r.scribeI2pCustomRedirects;
+ scribeLokiCustomRedirects = r.scribeLokiCustomRedirects;
+ protocol = r.protocol;
+ protocolFallback = r.protocolFallback;
resolve();
}
)
@@ -97,15 +111,21 @@ function redirect(url, type, initiator, disableOverride) {
...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;
- let instancesList;
- if (mediumProtocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
- else if (mediumProtocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
- 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}`;
@@ -122,12 +142,18 @@ function switchInstance(url, disableOverride) {
...scribeNormalCustomRedirects,
...scribeTorCustomRedirects,
+ ...scribeI2pCustomRedirects,
+ ...scribeLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (mediumProtocol == 'normal') instancesList = [...scribeNormalCustomRedirects, ...scribeNormalRedirectsChecks];
- else if (mediumProtocol == 'tor') instancesList = [...scribeTorCustomRedirects, ...scribeTorRedirectsChecks];
+ 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);
@@ -142,7 +168,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
- redirects.scribe = dataJson.scribe;
+ 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];
@@ -160,7 +188,11 @@ function initDefaults() {
scribeTorRedirectsChecks: [...redirects.scribe.tor],
scribeTorCustomRedirects: [],
- mediumProtocol: "normal",
+ scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
+ scribeI2pCustomRedirects: [],
+
+ scribeLokiRedirectsChecks: [...redirects.scribe.loki],
+ scribeLokiCustomRedirects: []
}, () => resolve())
})
})
diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js
index 8b7414e8..d05e4b27 100644
--- a/src/assets/javascripts/peertube.js
+++ b/src/assets/javascripts/peertube.js
@@ -11,7 +11,9 @@ let redirects = {
"https://st.phreedom.club",
"https://simpleertube.esmailelbob.xyz",
],
- "tor": []
+ "tor": [],
+ "i2p": [],
+ "loki": []
}
}
function setRedirects(val) {
@@ -39,8 +41,11 @@ let
simpleertubeNormalCustomRedirects,
simpleertubeTorRedirectsChecks,
simpleertubeTorCustomRedirects,
+ simpleertubeI2pCustomRedirects,
+ simpleertubeLokiCustomRedirects,
peerTubeTargets,
- peertubeTargetsProtocol;
+ protocol,
+ protocolFallback;
function init() {
return new Promise(resolve => {
@@ -52,8 +57,11 @@ function init() {
"simpleertubeNormalCustomRedirects",
"simpleertubeTorRedirectsChecks",
"simpleertubeTorCustomRedirects",
+ "simpleertubeI2pCustomRedirects",
+ "simpleertubeLokiCustomRedirects",
"peerTubeTargets",
- "peertubeTargetsProtocol"
+ "protocol",
+ "protocolFallback"
],
r => {
disablePeertubeTargets = r.disablePeertubeTargets;
@@ -62,8 +70,11 @@ function init() {
simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects;
simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks;
simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects;
+ simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects;
+ simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects;
peerTubeTargets = r.peerTubeTargets;
- peertubeTargetsProtocol = r.peertubeTargetsProtocol;
+ protocol = r.protocol;
+ protocolFallback = r.protocolFallback;
resolve();
}
)
@@ -79,6 +90,8 @@ function all() {
...redirects.simpleertube.tor,
...simpleertubeNormalCustomRedirects,
...simpleertubeTorCustomRedirects,
+ ...simpleertubeI2pCustomRedirects,
+ ...simpleertubeLokiCustomRedirects
];
}
@@ -89,10 +102,14 @@ function redirect(url, type, initiator, disableOverride) {
if (!peerTubeTargets.includes(protocolHost)) return;
if (type != "main_frame") return;
- let instancesList;
- if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
- if (instancesList.length === 0) 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; }
const randomInstance = utils.getRandomInstance(instancesList);
if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance;
@@ -106,9 +123,13 @@ function switchInstance(url, disableOverride) {
const protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (peertubeTargetsProtocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects];
- else if (peertubeTargetsProtocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects];
+ 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];
+ }
const i = instancesList.indexOf(protocolHost);
if (i > -1) instancesList.splice(i, 1);
@@ -140,7 +161,11 @@ function initDefaults() {
simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor],
simpleertubeTorCustomRedirects: [],
- peertubeTargetsProtocol: "normal",
+ simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p],
+ simpleertubeI2pCustomRedirects: [],
+
+ simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki],
+ simpleertubeLokiCustomRedirects: []
}, () => resolve());
})
})
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index 5f33f08d..fed321de 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -6,12 +6,18 @@ const targets = [
/^https?:\/{2}(www\.|)quora\.com.*/
];
-let redirects = {
- "quetre": {
- "normal": [],
- "tor": []
+let redirects = {}
+
+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]] = []
}
}
+
function setRedirects(val) {
browser.storage.local.get('cloudflareBlackList', r => {
redirects.quetre = val;
@@ -29,33 +35,42 @@ function setRedirects(val) {
let
disableQuora,
- quoraProtocol,
+ protocol,
+ protocolFallback,
quoraRedirects,
quetreNormalRedirectsChecks,
quetreNormalCustomRedirects,
quetreTorRedirectsChecks,
- quetreTorCustomRedirects;
+ quetreTorCustomRedirects,
+ quetreI2pCustomRedirects,
+ quetreLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableQuora",
- "quoraProtocol",
+ "protocol",
+ "protocolFallback",
"quoraRedirects",
"quetreNormalRedirectsChecks",
"quetreNormalCustomRedirects",
"quetreTorRedirectsChecks",
"quetreTorCustomRedirects",
+ "quetreI2pCustomRedirects",
+ "quetreLokiCustomRedirects"
],
r => {
disableQuora = r.disableQuora;
- quoraProtocol = r.quoraProtocol;
+ 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();
}
)
@@ -76,10 +91,14 @@ function redirect(url, type, initiator, disableOverride) {
if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (quoraProtocol == 'normal') instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects];
- if (quoraProtocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects];
- 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}`;
@@ -93,7 +112,9 @@ function reverse(url) {
...quoraRedirects.quetre.normal,
...quoraRedirects.quetre.tor,
...quetreNormalCustomRedirects,
- ...quetreTorCustomRedirects
+ ...quetreTorCustomRedirects,
+ ...quetreI2pCustomRedirects,
+ ...quetreLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
@@ -112,12 +133,18 @@ function switchInstance(url, disableOverride) {
...quetreNormalCustomRedirects,
...quetreTorCustomRedirects,
+ ...quetreI2pCustomRedirects,
+ ...quetreLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (quoraProtocol == 'normal') instancesList = [...quetreNormalCustomRedirects, ...quetreNormalRedirectsChecks];
- else if (quoraProtocol == 'tor') instancesList = [...quetreTorCustomRedirects, ...quetreTorRedirectsChecks];
+ 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);
@@ -132,10 +159,11 @@ function initDefaults() {
return new Promise(async resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.quetre = dataJson.quetre;
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
browser.storage.local.set({
disableQuora: false,
- quoraProtocol: "normal",
quoraRedirects: redirects,
@@ -144,6 +172,12 @@ function initDefaults() {
quetreTorRedirectsChecks: [...redirects.quetre.tor],
quetreTorCustomRedirects: [],
+
+ quetreI2pRedirectsChecks: [...redirects.quetre.i2p],
+ quetreI2pCustomRedirects: [],
+
+ quetreLokiRedirectsChecks: [...redirects.quetre.loki],
+ quetreLokiCustomRedirects: []
}, () => resolve());
});
})
diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js
index e1f910c3..bc7b687f 100644
--- a/src/assets/javascripts/reddit.js
+++ b/src/assets/javascripts/reddit.js
@@ -6,16 +6,18 @@ const targets = [
/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
/^https?:\/{2}(i\.|preview\.)redd\.it/,
];
-let redirects = {
- "libreddit": {
- "normal": [],
- "tor": []
- },
- "teddit": {
- "normal": [],
- "tor": []
- },
-};
+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]] = []
+ }
+}
+
function setRedirects(val) {
browser.storage.local.get('cloudflareBlackList', r => {
redirects = val;
@@ -40,15 +42,27 @@ let
disableReddit,
redditFrontend,
redditRedirects,
- redditProtocol,
+ protocol,
+ protocolFallback,
+
libredditNormalRedirectsChecks,
libredditNormalCustomRedirects,
+
libredditTorRedirectsChecks,
libredditTorCustomRedirects,
+
+ libredditI2pCustomRedirects,
+
+ libredditLokiCustomRedirects,
+
tedditNormalRedirectsChecks,
tedditNormalCustomRedirects,
+
tedditTorRedirectsChecks,
- tedditTorCustomRedirects;
+ tedditTorCustomRedirects,
+
+ tedditI2pCustomRedirects,
+ tedditLokiCustomRedirects;
function init() {
return new Promise(resolve => {
@@ -57,29 +71,39 @@ function init() {
"disableReddit",
"redditFrontend",
"redditRedirects",
- "redditProtocol",
+ "protocol",
+ "protocolFallback",
"libredditNormalRedirectsChecks",
"libredditNormalCustomRedirects",
"libredditTorRedirectsChecks",
"libredditTorCustomRedirects",
+ "libredditI2pCustomRedirects",
+ "libredditLokiCustomRedirects",
"tedditNormalRedirectsChecks",
"tedditNormalCustomRedirects",
"tedditTorRedirectsChecks",
"tedditTorCustomRedirects",
+ "tedditI2pCustomRedirects",
+ "tedditLokiCustomRedirects"
],
r => {
disableReddit = r.disableReddit;
redditFrontend = r.redditFrontend;
redditRedirects = r.redditRedirects;
- redditProtocol = r.redditProtocol;
+ 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();
}
)
@@ -98,12 +122,18 @@ function initLibredditCookies(test, from) {
...libredditTorRedirectsChecks,
...libredditNormalCustomRedirects,
...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
+ 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");
@@ -124,10 +154,14 @@ function initLibredditCookies(test, from) {
function pasteLibredditCookies() {
return new Promise(async resolve => {
await init();
- if (disableReddit || redditFrontend != 'libreddit' || redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
+ 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");
@@ -153,12 +187,19 @@ function initTedditCookies(test, from) {
...tedditTorRedirectsChecks,
...tedditNormalCustomRedirects,
...tedditTorCustomRedirects,
+ ...tedditI2pCustomRedirects,
+ ...tedditI2pCustomRedirects
+
].includes(protocolHost)) resolve();
if (!test) {
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ 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')
@@ -179,10 +220,14 @@ function initTedditCookies(test, from) {
function pasteTedditCookies() {
return new Promise(async resolve => {
await init();
- if (disableReddit || redditFrontend != 'teddit' || redditProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (redditProtocol == 'normal') checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]
- else if (redditProtocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
+ 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')
@@ -207,8 +252,12 @@ function all() {
...redditRedirects.teddit.tor,
...libredditNormalCustomRedirects,
...libredditTorCustomRedirects,
+ ...libredditI2pCustomRedirects,
+ ...libredditLokiCustomRedirects,
...tedditNormalCustomRedirects,
...tedditTorCustomRedirects,
+ ...tedditI2pCustomRedirects,
+ ...tedditLokiCustomRedirects
];
}
@@ -230,15 +279,25 @@ function redirect(url, type, initiator, disableOverride) {
const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
if (url.pathname.match(bypassPaths)) return;
- let libredditInstancesList;
- let tedditInstancesList;
- if (redditProtocol == 'normal') {
- libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- } else if (redditProtocol == 'tor') {
+ let libredditInstancesList = [];
+ let tedditInstancesList = [];
+
+ if (protocol == 'loki') {
+ libredditInstancesList = [...libredditLokiCustomRedirects];
+ tedditInstancesList = [...tedditLokiCustomRedirects];
+ }
+ else if (protocol == 'i2p') {
+ libredditInstancesList = [...libredditI2pCustomRedirects];
+ tedditInstancesList = [...tedditI2pCustomRedirects];
+ }
+ else if (protocol == 'tor') {
libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
}
+ if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
+ libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
+ tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
+ }
if (url.host === "i.redd.it") {
if (redditFrontend == 'teddit') {
@@ -293,18 +352,26 @@ function switchInstance(url, disableOverride) {
if (disableReddit && !disableOverride) { resolve(); return; }
const protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
+ let instancesList = [];
if (redditFrontend == 'libreddit') {
- if (redditProtocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects];
- else if (redditProtocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects];
+ 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 (redditProtocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects];
- else if (redditProtocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects];
+ 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
@@ -325,8 +392,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.teddit = dataJson.teddit;
- redirects.libreddit = dataJson.libreddit;
+ 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]
@@ -341,7 +409,6 @@ function initDefaults() {
}
browser.storage.local.set({
disableReddit: false,
- redditProtocol: 'normal',
redditFrontend: 'libreddit',
redditRedirects: redirects,
@@ -351,11 +418,23 @@ function initDefaults() {
libredditTorRedirectsChecks: [...redirects.libreddit.tor],
libredditTorCustomRedirects: [],
+ libredditI2pRedirectsChecks: [...redirects.libreddit.i2p],
+ libredditI2pCustomRedirects: [],
+
+ libredditLokiRedirectsChecks: [...redirects.libreddit.loki],
+ libredditLokiCustomRedirects: [],
+
tedditNormalRedirectsChecks: tedditNormalRedirectsChecks,
tedditNormalCustomRedirects: [],
tedditTorRedirectsChecks: [...redirects.teddit.tor],
tedditTorCustomRedirects: [],
+
+ tedditI2pRedirectsChecks: [...redirects.teddit.i2p],
+ tedditI2pCustomRedirects: [],
+
+ tedditLokiRedirectsChecks: [...redirects.teddit.loki],
+ tedditLokiCustomRedirects: []
}, () => resolve());
});
});
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index 5f215518..e1d18a40 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -9,41 +9,77 @@ const targets = [
let redirects = {
"neuters": {
"normal": [
- 'https://neuters.de',
+ "https://neuters.de"
],
- "tor": []
+ "tor": [],
+ "i2p": [],
+ "loki": []
}
}
+// const frontends = new Array("neuters")
+// 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]] = []
+// }
+// }
+
+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
+ })
+ })
+}
+
let
disableReuters,
- reutersProtocol,
+ protocol,
+ protocolFallback,
reutersRedirects,
neutersNormalRedirectsChecks,
neutersNormalCustomRedirects,
neutersTorRedirectsChecks,
- neutersTorCustomRedirects;
+ neutersTorCustomRedirects,
+ neutersI2pCustomRedirects,
+ neutersLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableReuters",
- "reutersProtocol",
+ "protocol",
+ "protocolFallback",
"reutersRedirects",
"neutersNormalRedirectsChecks",
"neutersNormalCustomRedirects",
"neutersTorRedirectsChecks",
"neutersTorCustomRedirects",
+ "neutersI2pCustomRedirects",
+ "neutersLokiCustomRedirects"
],
r => {
disableReuters = r.disableReuters;
- reutersProtocol = r.reutersProtocol;
+ 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();
}
)
@@ -63,9 +99,13 @@ function redirect(url, type, initiator, disableOverride) {
if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (reutersProtocol == 'normal') instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects];
- if (reutersProtocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects];
+ 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);
@@ -87,7 +127,6 @@ function initDefaults() {
return new Promise(resolve => {
browser.storage.local.set({
disableReuters: true,
- reutersProtocol: "normal",
reutersRedirects: redirects,
@@ -96,11 +135,18 @@ function initDefaults() {
neutersTorRedirectsChecks: [...redirects.neuters.tor],
neutersTorCustomRedirects: [],
+
+ neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
+ neutersI2pCustomRedirects: [],
+
+ neutersLokiRedirectsChecks: [...redirects.neuters.loki],
+ neutersLokiCustomRedirects: []
}, () => resolve());
});
}
export default {
+ setRedirects,
redirect,
initDefaults
};
diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js
index 5a91ff89..7644ad4b 100644
--- a/src/assets/javascripts/search.js
+++ b/src/assets/javascripts/search.js
@@ -5,8 +5,12 @@ import utils from './utils.js'
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")
-let redirects = {
+const redirects = {}
+ /*
"searx": {
"normal": [],
"tor": [],
@@ -22,7 +26,27 @@ let redirects = {
"tor": [],
"i2p": []
}
-};
+ */
+//};
+
+//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},"
+}
+//tmp = tmp + "\n}"
+
+//const redirects = JSON.parse(tmp)
function setRedirects(val) {
browser.storage.local.get('cloudflareBlackList', r => {
@@ -30,6 +54,7 @@ function setRedirects(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);
@@ -39,12 +64,16 @@ function setRedirects(val) {
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,
});
})
}
@@ -53,25 +82,36 @@ let
disableSearch,
searchFrontend,
searchRedirects,
- searchProtocol,
+ protocol,
+ protocolFallback,
whoogleNormalRedirectsChecks,
whoogleNormalCustomRedirects,
whoogleTorRedirectsChecks,
whoogleTorCustomRedirects,
whoogleI2pRedirectsChecks,
whoogleI2pCustomRedirects,
+ whoogleLokiCustomRedirects,
searxNormalRedirectsChecks,
searxNormalCustomRedirects,
searxTorRedirectsChecks,
searxTorCustomRedirects,
searxI2pRedirectsChecks,
searxI2pCustomRedirects,
+ searxLokiCustomRedirects,
searxngNormalRedirectsChecks,
searxngNormalCustomRedirects,
searxngTorRedirectsChecks,
searxngTorCustomRedirects,
searxngI2pRedirectsChecks,
- searxngI2pCustomRedirects;
+ searxngI2pCustomRedirects,
+ searxngLokiCustomRedirects,
+ librexNormalRedirectsChecks,
+ librexNormalCustomRedirects,
+ librexTorRedirectsChecks,
+ librexTorCustomRedirects,
+ librexI2pRedirectsChecks,
+ librexI2pCustomRedirects,
+ librexLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
@@ -80,49 +120,71 @@ function init() {
"disableSearch",
"searchFrontend",
"searchRedirects",
- "searchProtocol",
+ "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;
- searchProtocol = r.searchProtocol;
+ 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();
}
)
@@ -143,13 +205,17 @@ function initSearxCookies(test, from) {
...searxTorCustomRedirects,
...searxI2pRedirectsChecks,
...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchProtocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
+ 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');
@@ -176,9 +242,13 @@ function pasteSearxCookies() {
return new Promise(async resolve => {
await init();
if (disableSearch || searchFrontend != 'searx') { resolve(); return; }
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]
- else if (searchProtocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]
+ 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');
@@ -211,13 +281,17 @@ function initSearxngCookies(test, from) {
...searxngTorCustomRedirects,
...searxngI2pRedirectsChecks,
...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
].includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchProtocol == 'i2p') checkedInstances = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
+ 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');
@@ -245,10 +319,14 @@ function initSearxngCookies(test, from) {
function pasteSearxngCookies() {
return new Promise(async resolve => {
await init();
- if (disableSearch || searchFrontend != 'searxng', searchProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (searchProtocol == 'normal') checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]
- else if (searchProtocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]
+ 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');
@@ -272,6 +350,63 @@ function pasteSearxngCookies() {
})
}
+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; }
+
+ 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();
+ })
+}
function redirect(url, disableOverride) {
if (disableSearch && !disableOverride) return;
@@ -281,32 +416,57 @@ function redirect(url, disableOverride) {
let randomInstance;
let path;
if (searchFrontend == 'searx') {
- let instancesList;
- if (searchProtocol == 'normal') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchProtocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects];
- else if (searchProtocol == 'i2p') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects];
- if (instancesList.length === 0) return;
+ 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 (searchProtocol == 'normal') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchProtocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects];
- else if (searchProtocol == 'i2p') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects];
- if (instancesList.length === 0) return;
+ 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 (searchProtocol == 'normal') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
- if (searchProtocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects];
- if (searchProtocol == 'i2p') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects];
- if (instancesList.length === 0) return;
+ 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.php";
+ }
if (
((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) ||
@@ -345,36 +505,57 @@ function switchInstance(url, disableOverride) {
...searchRedirects.whoogle.tor,
...searchRedirects.whoogle.i2p,
+ ...searchRedirects.librex.normal,
+ ...searchRedirects.librex.tor,
+ ...searchRedirects.librex.i2p,
+
...searxNormalCustomRedirects,
...searxTorCustomRedirects,
...searxI2pCustomRedirects,
+ ...searxLokiCustomRedirects,
...searxngNormalCustomRedirects,
...searxngTorCustomRedirects,
...searxngI2pCustomRedirects,
+ ...searxngLokiCustomRedirects,
...whoogleNormalCustomRedirects,
...whoogleTorCustomRedirects,
...whoogleI2pCustomRedirects,
+ ...whoogleLokiCustomRedirects,
+
+ ...librexNormalCustomRedirects,
+ ...librexTorCustomRedirects,
+ ...librexI2pCustomRedirects,
+ ...librexLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
let instancesList;
- if (searchProtocol == 'normal') {
- if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects];
- else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects];
- else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects];
+
+ 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 (searchProtocol == 'tor') {
+ 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 (searchProtocol == 'i2p') {
+ 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; }
@@ -388,14 +569,20 @@ function initDefaults() {
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]]
+ }
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;
@@ -407,13 +594,15 @@ function initDefaults() {
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,
- searchProtocol: 'normal',
whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks,
whoogleNormalCustomRedirects: [],
@@ -424,6 +613,9 @@ function initDefaults() {
whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p],
whoogleI2pCustomRedirects: [],
+ whoogleLokiRedirectsChecks: [...redirects.whoogle.loki],
+ whoogleLokiCustomRedirects: [],
+
searxNormalRedirectsChecks: searxNormalRedirectsChecks,
searxNormalCustomRedirects: [],
@@ -433,6 +625,9 @@ function initDefaults() {
searxI2pRedirectsChecks: [...redirects.searx.i2p],
searxI2pCustomRedirects: [],
+ searxLokiRedirectsChecks: [...redirects.searx.loki],
+ searxLokiCustomRedirects: [],
+
searxngNormalRedirectsChecks: searxngNormalRedirectsChecks,
searxngNormalCustomRedirects: [],
@@ -441,6 +636,21 @@ function initDefaults() {
searxngI2pRedirectsChecks: [...redirects.searxng.i2p],
searxngI2pCustomRedirects: [],
+
+ searxngLokiRedirectsChecks: [...redirects.searxng.loki],
+ searxngLokiCustomRedirects: [],
+
+ librexNormalRedirectsChecks: librexNormalRedirectsChecks,
+ librexNormalCustomRedirects: [],
+
+ librexTorRedirectsChecks: [...redirects.librex.tor],
+ librexTorCustomRedirects: [],
+
+ librexI2pRedirectsChecks: [...redirects.librex.i2p],
+ librexI2pCustomRedirects: [],
+
+ librexLokiRedirectsChecks: [...redirects.librex.loki],
+ librexLokiCustomRedirects: []
}, () => resolve())
})
})
@@ -453,6 +663,8 @@ export default {
pasteSearxCookies,
initSearxngCookies,
pasteSearxngCookies,
+ initLibrexCookies,
+ pasteLibrexCookies,
redirect,
initDefaults,
switchInstance,
diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js
index f507e552..2ea95d21 100644
--- a/src/assets/javascripts/sendTargets.js
+++ b/src/assets/javascripts/sendTargets.js
@@ -8,12 +8,18 @@ const targets = [
/^https?:\/{2}sendfiles\.online\/$/
];
-let redirects = {
- "send": {
- "normal": [],
- "tor": []
+const frontends = new Array("send")
+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.send = val;
@@ -36,7 +42,10 @@ let
sendNormalCustomRedirects,
sendTorRedirectsChecks,
sendTorCustomRedirects,
- sendTargetsProtocol;
+ sendI2pCustomRedirects,
+ sendLokiCustomRedirects,
+ protocol,
+ protocolFallback;
function init() {
return new Promise(resolve => {
@@ -44,11 +53,14 @@ function init() {
[
"disableSendTarget",
"sendTargetsRedirects",
- "sendTargetsProtocol",
+ "protocol",
+ "protocolFallback",
"sendNormalRedirectsChecks",
"sendNormalCustomRedirects",
"sendTorRedirectsChecks",
"sendTorCustomRedirects",
+ "sendI2pCustomRedirects",
+ "sendLokiCustomRedirects"
],
r => {
disableSendTarget = r.disableSendTarget;
@@ -57,7 +69,10 @@ function init() {
sendNormalCustomRedirects = r.sendNormalCustomRedirects;
sendTorRedirectsChecks = r.sendTorRedirectsChecks;
sendTorCustomRedirects = r.sendTorCustomRedirects;
- sendTargetsProtocol = r.sendTargetsProtocol;
+ sendI2pCustomRedirects = r.sendI2pCustomRedirects;
+ sendLokiCustomRedirects = r.sendLokiCustomRedirects;
+ protocol = r.protocol;
+ protocolFallback = r.protocolFallback;
resolve();
}
)
@@ -74,6 +89,8 @@ function all() {
...sendNormalCustomRedirects,
...sendTorRedirectsChecks,
...sendTorCustomRedirects,
+ ...sendI2pCustomRedirects,
+ ...sendLokiCustomRedirects
];
}
@@ -85,9 +102,13 @@ function switchInstance(url, disableOverride) {
if (!all().includes(protocolHost)) { resolve(); return; }
if (url.pathname != '/') { resolve(); return; }
- let instancesList;
- if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- else if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
+ 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);
@@ -104,9 +125,13 @@ function redirect(url, type, initiator, disableOverride) {
if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (sendTargetsProtocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
- if (sendTargetsProtocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
+ 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);
@@ -117,7 +142,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.send = dataJson.send;
+ 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) {
@@ -134,7 +161,11 @@ function initDefaults() {
sendTorRedirectsChecks: [...redirects.send.tor],
sendTorCustomRedirects: [],
- sendTargetsProtocol: "normal",
+ sendI2pRedirectsChecks: [...redirects.send.i2p],
+ sendI2pCustomRedirects: [],
+
+ sendLokiRedirectsChecks: [...redirects.send.loki],
+ sendLokiCustomRedirects: []
}, () => resolve())
})
})
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js
index 75e710d0..a5c14a27 100644
--- a/src/assets/javascripts/tiktok.js
+++ b/src/assets/javascripts/tiktok.js
@@ -6,12 +6,18 @@ const targets = [
/^https?:\/{2}(www\.|)tiktok\.com.*/
];
-let redirects = {
- "proxiTok": {
- "normal": [],
- "tor": []
+const frontends = new Array("proxiTok")
+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.proxiTok = val;
@@ -36,12 +42,18 @@ function initProxiTokCookies(test, from) {
...proxiTokNormalCustomRedirects,
...proxiTokTorRedirectsChecks,
...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects,
].includes(protocolHost)) resolve();
if (!test) {
- let checkedInstances;
- if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
- else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ 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');
}
@@ -52,10 +64,14 @@ function initProxiTokCookies(test, from) {
function pasteProxiTokCookies() {
return new Promise(async resolve => {
await init();
- if (disableTiktok || tiktokProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (tiktokProtocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]
- else if (tiktokProtocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]
+ 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();
@@ -64,33 +80,42 @@ function pasteProxiTokCookies() {
let
disableTiktok,
- tiktokProtocol,
+ protocol,
+ protocolFallback,
tiktokRedirects,
proxiTokNormalRedirectsChecks,
proxiTokNormalCustomRedirects,
proxiTokTorRedirectsChecks,
- proxiTokTorCustomRedirects;
+ proxiTokTorCustomRedirects,
+ proxiTokI2pCustomRedirects,
+ proxiTokLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableTiktok",
- "tiktokProtocol",
+ "protocol",
+ "protocolFallback",
"tiktokRedirects",
"proxiTokNormalRedirectsChecks",
"proxiTokNormalCustomRedirects",
"proxiTokTorRedirectsChecks",
"proxiTokTorCustomRedirects",
+ "proxiTokI2pCustomRedirects",
+ "proxiTokLokiCustomRedirects"
],
r => {
disableTiktok = r.disableTiktok;
- tiktokProtocol = r.tiktokProtocol;
+ 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();
}
)
@@ -112,9 +137,13 @@ function redirect(url, type, initiator, disableOverride) {
if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList;
- if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects];
- if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects];
+ 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);
@@ -129,7 +158,9 @@ function reverse(url) {
...tiktokRedirects.proxiTok.normal,
...tiktokRedirects.proxiTok.tor,
...proxiTokNormalCustomRedirects,
- ...proxiTokTorCustomRedirects
+ ...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
@@ -148,12 +179,18 @@ function switchInstance(url, disableOverride) {
...proxiTokNormalCustomRedirects,
...proxiTokTorCustomRedirects,
+ ...proxiTokI2pCustomRedirects,
+ ...proxiTokLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (tiktokProtocol == 'normal') instancesList = [...proxiTokNormalCustomRedirects, ...proxiTokNormalRedirectsChecks];
- else if (tiktokProtocol == 'tor') instancesList = [...proxiTokTorCustomRedirects, ...proxiTokTorRedirectsChecks];
+ 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);
@@ -168,10 +205,11 @@ function initDefaults() {
return new Promise(async resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.proxiTok = dataJson.proxiTok;
+ for (let i = 0; i < frontends.length; i++) {
+ redirects[frontends[i]] = dataJson[frontends[i]]
+ }
browser.storage.local.set({
disableTiktok: false,
- tiktokProtocol: "normal",
tiktokRedirects: redirects,
@@ -180,6 +218,12 @@ function initDefaults() {
proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor],
proxiTokTorCustomRedirects: [],
+
+ proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p],
+ proxiTokI2pCustomRedirects: [],
+
+ proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki],
+ proxiTokLokiCustomRedirects: []
}, () => resolve());
});
})
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js
index bbf08d52..75c5b5f8 100644
--- a/src/assets/javascripts/translate/translate.js
+++ b/src/assets/javascripts/translate/translate.js
@@ -6,36 +6,38 @@ const targets = [
/^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//,
];
-let redirects = {
- "simplyTranslate": {
- "normal": [],
- "tor": [],
- "i2p": [],
- "loki": []
- },
- "lingva": {
- "normal": [],
- "tor": []
- }
-};
+const frontends = new Array("simplyTranslate", "lingva")
+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]] = []
+ }
+}
let
translateDisable,
translateFrontend,
- translateProtocol,
+ protocol,
+ protocolFallback,
translateRedirects,
simplyTranslateNormalRedirectsChecks,
simplyTranslateNormalCustomRedirects,
simplyTranslateTorRedirectsChecks,
simplyTranslateTorCustomRedirects,
- simplyTranslateI2PRedirectsChecks,
- simplyTranslateI2PCustomRedirects,
+ simplyTranslateI2pRedirectsChecks,
+ simplyTranslateI2pCustomRedirects,
simplyTranslateLokiRedirectsChecks,
- simplyTranslateLokiCustomReidrects,
+ simplyTranslateLokiCustomRedirects,
lingvaNormalRedirectsChecks,
lingvaNormalCustomRedirects,
lingvaTorRedirectsChecks,
- lingvaTorCustomRedirects;
+ lingvaTorCustomRedirects,
+ lingvaI2pCustomRedirects,
+ lingvaLokiCustomRedirects
function init() {
return new Promise(resolve => {
@@ -43,40 +45,45 @@ function init() {
[
"translateDisable",
"translateFrontend",
- "translateProtocol",
+ "protocol",
+ "protocolFallback",
"translateRedirects",
-
"simplyTranslateNormalRedirectsChecks",
"simplyTranslateNormalCustomRedirects",
"simplyTranslateTorRedirectsChecks",
"simplyTranslateTorCustomRedirects",
- "simplyTranslateI2PRedirectsChecks",
- "simplyTranslateI2PCustomRedirects",
+ "simplyTranslateI2pRedirectsChecks",
+ "simplyTranslateI2pCustomRedirects",
"simplyTranslateLokiRedirectsChecks",
- "simplyTranslateLokiCustomReidrects",
+ "simplyTranslateLokiCustomRedirects",
"lingvaNormalRedirectsChecks",
"lingvaNormalCustomRedirects",
"lingvaTorRedirectsChecks",
"lingvaTorCustomRedirects",
+ "lingvaI2pCustomRedirects",
+ "lingvaLokiCustomRedirects"
],
r => {
translateDisable = r.translateDisable;
translateFrontend = r.translateFrontend;
- translateProtocol = r.translateProtocol;
+ 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;
+ simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks;
+ simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects;
simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks;
- simplyTranslateLokiCustomReidrects = r.simplyTranslateLokiCustomReidrects;
+ simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects;
lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks;
lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects;
lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks;
lingvaTorCustomRedirects = r.lingvaTorCustomRedirects;
+ lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects;
+ lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects;
resolve();
}
)
@@ -98,7 +105,7 @@ function setRedirects(val) {
translateRedirects: redirects,
simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal,
simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor,
- simplyTranslateI2PRedirectsChecks: redirects.simplyTranslate.i2p,
+ simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p,
simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki,
lingvaNormalRedirectsChecks,
lingvaTorRedirectsChecks: redirects.lingva.tor,
@@ -116,6 +123,8 @@ function copyPasteLingvaLocalStorage(test, url, tabId) {
...lingvaNormalCustomRedirects,
...lingvaTorRedirectsChecks,
...lingvaTorCustomRedirects,
+ ...lingvaI2pCustomRedirects,
+ ...lingvaLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
if (!test) {
@@ -124,9 +133,13 @@ function copyPasteLingvaLocalStorage(test, url, tabId) {
{ file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" }
);
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ 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; }
@@ -145,9 +158,13 @@ function pasteLingvaLocalStorage() {
return new Promise(async resolve => {
await init();
if (translateDisable || translateFrontend != 'lingva') { resolve(); return; }
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ 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" }))
@@ -164,17 +181,19 @@ function copyPasteSimplyTranslateCookies(test, from) {
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorRedirectsChecks,
...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2PRedirectsChecks,
- ...simplyTranslateI2PCustomRedirects,
+ ...simplyTranslateI2pRedirectsChecks,
+ ...simplyTranslateI2pCustomRedirects,
...simplyTranslateLokiRedirectsChecks,
- ...simplyTranslateLokiCustomReidrects,
+ ...simplyTranslateLokiCustomRedirects,
].includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
- else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
- else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]
- else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]
+ 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');
@@ -189,11 +208,13 @@ function pasteSimplyTranslateCookies() {
return new Promise(async resolve => {
await init();
if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; }
- let checkedInstances;
- if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]
- else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]
- else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]
- else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]
+ 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');
@@ -208,11 +229,13 @@ function redirect(url, disableOverride) {
if (!targets.some(rx => rx.test(url.href))) return;
if (translateFrontend == 'simplyTranslate') {
- let instancesList;
- if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects];
- if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
- if (translateProtocol == 'i2p') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects];
- if (translateProtocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects];
+ 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)
@@ -226,9 +249,13 @@ function redirect(url, disableOverride) {
let pair = params_arr[i].split('=');
params[pair[0]] = pair[1];
}
- let instancesList;
- if (translateProtocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects];
- if (translateProtocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
+ 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)
@@ -252,32 +279,35 @@ function switchInstance(url, disableOverride) {
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorCustomRedirects,
- ...simplyTranslateI2PCustomRedirects,
- ...simplyTranslateLokiCustomReidrects,
+ ...simplyTranslateI2pCustomRedirects,
+ ...simplyTranslateLokiCustomRedirects,
...translateRedirects.lingva.normal,
...translateRedirects.lingva.tor,
...lingvaNormalCustomRedirects,
...lingvaTorCustomRedirects,
+ ...lingvaI2pCustomRedirects,
+ ...lingvaLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
let instancesList;
- if (translateProtocol == '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 (translateProtocol == 'tor') {
+ else if (protocol == 'tor') {
if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects];
else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects];
}
- else if (translateProtocol == 'i2p') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects];
- //else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects];
- }
- else if (translateProtocol == 'loki') {
- if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects];
- //else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects];
+ 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);
@@ -293,8 +323,9 @@ function initDefaults() {
return new Promise(async resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
- redirects.simplyTranslate = dataJson.simplyTranslate;
- redirects.lingva = dataJson.lingva;
+ 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]
@@ -305,22 +336,31 @@ function initDefaults() {
browser.storage.local.set({
translateDisable: false,
translateFrontend: "simplyTranslate",
- translateProtocol: 'normal',
translateRedirects: redirects,
simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal],
simplyTranslateNormalCustomRedirects: [],
+
simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor],
simplyTranslateTorCustomRedirects: [],
- simplyTranslateI2PRedirectsChecks: [...redirects.simplyTranslate.i2p],
- simplyTranslateI2PCustomRedirects: [],
+
+ simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p],
+ simplyTranslateI2pCustomRedirects: [],
+
simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki],
- simplyTranslateLokiCustomReidrects: [],
+ simplyTranslateLokiCustomRedirects: [],
lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks,
lingvaNormalCustomRedirects: [],
+
lingvaTorRedirectsChecks: [...redirects.lingva.tor],
lingvaTorCustomRedirects: [],
+
+ lingvaI2pRedirectsChecks: [...redirects.lingva.i2p],
+ lingvaI2pCustomRedirects: [],
+
+ lingvaLokiRedirectsChecks: [...redirects.lingva.loki],
+ lingvaLokiCustomRedirects: []
}, () => resolve())
})
})
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
index bd674aba..0a851923 100644
--- a/src/assets/javascripts/twitter.js
+++ b/src/assets/javascripts/twitter.js
@@ -9,12 +9,17 @@ const targets = [
/^https?:\/{2}t\.co/
];
-let redirects = {
- "nitter": {
- "normal": [],
- "tor": []
- },
-};
+const frontends = new Array("nitter")
+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', 'authenticateBlackList'], r => {
@@ -34,36 +39,45 @@ function setRedirects(val) {
let
disableTwitter,
- twitterProtocol,
+ protocol,
+ protocolFallback,
twitterRedirects,
twitterRedirectType,
nitterNormalRedirectsChecks,
nitterNormalCustomRedirects,
nitterTorRedirectsChecks,
- nitterTorCustomRedirects;
+ nitterTorCustomRedirects,
+ nitterI2pCustomRedirects,
+ nitterLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
browser.storage.local.get(
[
"disableTwitter",
- "twitterProtocol",
+ "protocol",
+ "protocolFallback",
"twitterRedirects",
"twitterRedirectType",
"nitterNormalRedirectsChecks",
"nitterNormalCustomRedirects",
"nitterTorRedirectsChecks",
"nitterTorCustomRedirects",
+ "nitterI2pCustomRedirects",
+ "nitterLokiCustomRedirects"
],
r => {
disableTwitter = r.disableTwitter;
- twitterProtocol = r.twitterProtocol;
+ 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();
}
)
@@ -79,6 +93,8 @@ function all() {
...nitterTorRedirectsChecks,
...nitterNormalCustomRedirects,
...nitterTorCustomRedirects,
+ ...nitterI2pCustomRedirects,
+ ...nitterLokiCustomRedirects
];
}
@@ -90,9 +106,13 @@ function redirect(url, type, initiator, disableOverride) {
if (twitterRedirectType == 'sub_frame' && type == "main_frame") return;
if (twitterRedirectType == 'main_frame' && type != "main_frame") return;
- let instancesList;
- if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
+ 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);
@@ -125,9 +145,13 @@ function switchInstance(url, disableOverride) {
if (disableTwitter && !disableOverride) { resolve(); return; }
const protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (twitterProtocol == 'normal') instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects];
- else if (twitterProtocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects];
+ 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);
@@ -164,9 +188,13 @@ function initNitterCookies(test, from) {
if (!all().includes(protocolHost)
) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
- else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ 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');
@@ -194,10 +222,14 @@ function initNitterCookies(test, from) {
function pasteNitterCookies() {
return new Promise(async resolve => {
await init();
- if (disableTwitter || twitterProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (twitterProtocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
- else if (twitterProtocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
+ 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');
@@ -226,7 +258,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(data => {
let dataJson = JSON.parse(data);
- redirects.nitter = dataJson.nitter;
+ 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]) {
@@ -236,7 +270,6 @@ function initDefaults() {
browser.storage.local.set({
disableTwitter: false,
twitterRedirects: redirects,
- twitterProtocol: "normal",
twitterRedirectType: "both",
nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
@@ -244,6 +277,12 @@ function initDefaults() {
nitterTorRedirectsChecks: [...redirects.nitter.tor],
nitterTorCustomRedirects: [],
+
+ nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
+ nitterI2pCustomRedirects: [],
+
+ nitterLokiRedirectsChecks: [...redirects.nitter.loki],
+ nitterLokiCustomRedirects: []
}, () => resolve());
})
})
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index c03ca31c..f9225729 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -14,6 +14,7 @@ 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'
function getRandomInstance(instances) {
@@ -41,18 +42,20 @@ function updateInstances() {
await initcloudflareBlackList();
const instances = JSON.parse(http.responseText);
- youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, })
+ 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 });
+ 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);
console.info("Successfully updated Instances");
resolve(true); return;
@@ -89,7 +92,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
let redirects;
async function getFromStorage() {
- return new Promise(async resolve => {
+ return new Promise(async resolve =>
browser.storage.local.get(
[
redirectsChecks,
@@ -105,27 +108,31 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
resolve();
}
)
- })
+ )
}
+
await getFromStorage();
+ if (nameCustomInstances === undefined) console.log(customRedirects);
function calcNameCheckBoxes() {
let isTrue = true;
- for (const item of redirects[name][protocol])
+ for (const item of redirects[name][protocol]) {
if (!nameDefaultRedirects.includes(item)) {
isTrue = false;
break;
}
- for (const element of nameCheckListElement.getElementsByTagName('input'))
+ }
+ for (const element of nameCheckListElement.getElementsByTagName('input')) {
element.checked = nameDefaultRedirects.includes(element.className)
+ }
if (nameDefaultRedirects.length == 0) isTrue = false;
- nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue;
+ nameProtocolElement.getElementsByClassName('toggle-all')[0].checked = isTrue;
}
nameCheckListElement.innerHTML =
[
`<div>
<x data-localise="__MSG_toggleAll__">Toggle All</x>
- <input type="checkbox" class="toogle-all"/>
+ <input type="checkbox" class="toggle-all"/>
</div>`,
...redirects[name][protocol].map(
x => {
@@ -153,7 +160,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
localise.localisePage();
calcNameCheckBoxes();
- nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", async event => {
+ nameProtocolElement.getElementsByClassName('toggle-all')[0].addEventListener("change", async event => {
if (event.target.checked)
nameDefaultRedirects = [...redirects[name][protocol]];
else
@@ -164,7 +171,7 @@ async function processDefaultCustomInstances(target, name, protocol, document) {
});
for (let element of nameCheckListElement.getElementsByTagName('input')) {
- if (element.className != 'toogle-all')
+ if (element.className != 'toggle-all')
nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => {
if (event.target.checked)
nameDefaultRedirects.push(element.className)
@@ -384,6 +391,7 @@ function unify(test) {
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);
diff --git a/src/assets/javascripts/wikipedia.js b/src/assets/javascripts/wikipedia.js
index 629219b8..d2ba7de8 100644
--- a/src/assets/javascripts/wikipedia.js
+++ b/src/assets/javascripts/wikipedia.js
@@ -4,13 +4,18 @@ import utils from './utils.js'
const targets = /^https?:\/{2}(([a-z]{1,}\.){0,})wikipedia\.org/
-let redirects = {
- "wikiless": {
- "normal": [],
- "tor": [],
- "i2p": []
- }
-};
+const frontends = new Array("wikiless")
+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.wikiless = val;
@@ -29,13 +34,15 @@ function setRedirects(val) {
let
disableWikipedia,
wikipediaRedirects,
- wikipediaProtocol,
+ protocol,
+ protocolFallback,
wikilessNormalRedirectsChecks,
wikilessTorRedirectsChecks,
wikilessI2pRedirectsChecks,
wikilessNormalCustomRedirects,
wikilessTorCustomRedirects,
- wikilessI2pCustomRedirects;
+ wikilessI2pCustomRedirects,
+ wikilessLokiCustomRedirects;
function init() {
return new Promise(async resolve => {
@@ -43,25 +50,28 @@ function init() {
[
"disableWikipedia",
"wikipediaRedirects",
- "wikipediaProtocol",
-
+ "protocol",
+ "protocolFallback",
"wikilessNormalRedirectsChecks",
"wikilessTorRedirectsChecks",
"wikilessI2pRedirectsChecks",
"wikilessNormalCustomRedirects",
"wikilessTorCustomRedirects",
"wikilessI2pCustomRedirects",
+ "wikilessLokiCustomRedirects"
],
r => {
disableWikipedia = r.disableWikipedia;
wikipediaRedirects = r.wikipediaRedirects;
- wikipediaProtocol = r.wikipediaProtocol;
+ 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();
}
)
@@ -82,14 +92,18 @@ function initWikilessCookies(test, from) {
...wikilessTorCustomRedirects,
...wikilessI2pRedirectsChecks,
...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects
];
if (!all.includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
- else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
- else if (wikipediaProtocol == 'i2p') checkedInstances = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects]
+ 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');
}
@@ -100,10 +114,14 @@ function initWikilessCookies(test, from) {
function pasteWikilessCookies() {
return new Promise(async resolve => {
await init();
- if (disableWikipedia || wikipediaProtocol === undefined) { resolve(); return; }
- let checkedInstances;
- if (wikipediaProtocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]
- else if (wikipediaProtocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
+ 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();
@@ -123,10 +141,13 @@ function redirect(url, disableOverride) {
GETArguments.push([args[0], args[1]]);
}
}
- let instancesList;
- if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects];
- else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects];
- else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects];
+ 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)
@@ -158,14 +179,18 @@ function switchInstance(url, disableOverride) {
...wikilessNormalCustomRedirects,
...wikilessTorCustomRedirects,
- ...wikilessI2pCustomRedirects
+ ...wikilessI2pCustomRedirects,
+ ...wikilessLokiCustomRedirects
];
if (!wikipediaList.includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (wikipediaProtocol == 'normal') instancesList = [...wikilessNormalCustomRedirects, ...wikilessNormalRedirectsChecks];
- else if (wikipediaProtocol == 'tor') instancesList = [...wikilessTorCustomRedirects, ...wikilessTorRedirectsChecks];
- else if (wikipediaProtocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks];
+ 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);
@@ -180,7 +205,9 @@ function initDefaults() {
return new Promise(resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.wikiless = dataJson.wikiless;
+ 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) {
@@ -190,13 +217,19 @@ function initDefaults() {
browser.storage.local.set({
disableWikipedia: true,
wikipediaRedirects: redirects,
- wikipediaProtocol: "normal",
+
wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks,
- wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
- wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
wikilessNormalCustomRedirects: [],
+
+ wikilessTorRedirectsChecks: [...redirects.wikiless.tor],
wikilessTorCustomRedirects: [],
+
+ wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p],
wikilessI2pCustomRedirects: [],
+
+ wikilessLokiRedirectsChecks: [...redirects.wikiless.loki],
+ wikilessLokiCustomRedirects: []
+
}, () => resolve());
})
})
diff --git a/src/assets/javascripts/youtube/youtube.js b/src/assets/javascripts/youtube/youtube.js
index 965b94bf..669b26d5 100644
--- a/src/assets/javascripts/youtube/youtube.js
+++ b/src/assets/javascripts/youtube/youtube.js
@@ -16,35 +16,36 @@ const targets = [
/^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
];
-let redirects = {
- "invidious": {
- "normal": [],
- "tor": []
- },
- "piped": {
- "normal": [],
- "tor": []
- },
- "pipedMaterial": {
- "normal": [
- "https://piped-material.xn--17b.net",
- "https://piped-material.ftp.sh",
- ],
- "tor": []
+
+const frontends = new Array("invidious", "piped", "pipedMaterial")
+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.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);
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,
@@ -52,6 +53,8 @@ function setRedirects(val) {
invidiousTorRedirectsChecks: redirects.invidious.tor,
pipedNormalRedirectsChecks,
pipedTorRedirectsChecks: redirects.piped.tor,
+ pipedMaterialNormalRedirectsChecks,
+ // pipedMaterialTorRedirectsChecks: redirects.pipedMaterial.tor
})
})
}
@@ -60,21 +63,28 @@ let
disableYoutube,
onlyEmbeddedVideo,
youtubeFrontend,
- youtubeProtocol,
+ protocol,
+ protocolFallback,
youtubeEmbedFrontend,
youtubeRedirects,
invidiousNormalRedirectsChecks,
invidiousNormalCustomRedirects,
invidiousTorRedirectsChecks,
invidiousTorCustomRedirects,
+ invidiousI2pCustomRedirects,
+ invidiousLokiCustomRedirects,
pipedNormalRedirectsChecks,
pipedNormalCustomRedirects,
pipedTorRedirectsChecks,
pipedTorCustomRedirects,
+ pipedI2pCustomRedirects,
+ pipedLokiCustomRedirects,
pipedMaterialNormalRedirectsChecks,
pipedMaterialNormalCustomRedirects,
pipedMaterialTorRedirectsChecks,
- pipedMaterialTorCustomRedirects;
+ pipedMaterialTorCustomRedirects,
+ pipedMaterialI2pCustomRedirects,
+ pipedMaterialLokiCustomRedirects;
function init() {
return new Promise(resolve => {
@@ -83,41 +93,55 @@ function init() {
"disableYoutube",
"onlyEmbeddedVideo",
"youtubeFrontend",
- "youtubeProtocol",
+ "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;
- youtubeProtocol = r.youtubeProtocol;
+ 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();
}
)
@@ -140,12 +164,18 @@ function all() {
...invidiousNormalCustomRedirects,
...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects,
...pipedNormalCustomRedirects,
...pipedTorCustomRedirects,
+ ...pipedI2pCustomRedirects,
+ ...pipedLokiCustomRedirects,
...pipedMaterialNormalCustomRedirects,
...pipedMaterialTorCustomRedirects,
+ ...pipedMaterialI2pCustomRedirects,
+ ...pipedMaterialLokiCustomRedirects
];
}
@@ -160,7 +190,7 @@ function redirect(url, type, initiator, disableOverride) {
const isFreetube = youtubeFrontend == 'freetube';
const isYatte = youtubeFrontend == 'yatte';
- const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
+ //const isFrontendYoutube = youtubeEmbedFrontend == "youtube";
const isFrontendInvidious = youtubeEmbedFrontend == 'invidious';
const isFrontendPiped = youtubeEmbedFrontend == 'piped';
const isFrontendPipedMaterial = youtubeEmbedFrontend == 'pipedMaterial';
@@ -172,31 +202,43 @@ function redirect(url, type, initiator, disableOverride) {
if (onlyEmbeddedVideo == 'onlyEmbedded' && main_frame) return;
if (onlyEmbeddedVideo == 'onlyNotEmbedded' && !main_frame) return;
- if ((isFreetube || isYatte) && sub_frame && isFrontendYoutube) return;
+ //if ((isFreetube || isYatte) && sub_frame && isFrontendYoutube) 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 (isInvidious || ((isFreetube || isYatte) && sub_frame && isFrontendInvidious)) {
- let instancesList;
- if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
+ 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 (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
+ 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 (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ 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}`;
}
@@ -219,16 +261,26 @@ function switchInstance(url, disableOverride) {
const protocolHost = utils.protocolHost(url);
if (!all().includes(protocolHost)) { resolve(); return; }
- let instancesList;
- if (youtubeProtocol == 'normal') {
- if (youtubeFrontend == 'invidious') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeFrontend == 'piped') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
+ 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 (youtubeProtocol == 'tor') {
+ else if (protocol == 'tor') {
if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
else if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
- else if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ 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];
}
const i = instancesList.indexOf(protocolHost);
@@ -244,8 +296,9 @@ function initDefaults() {
return new Promise(async resolve => {
fetch('/instances/data.json').then(response => response.text()).then(async data => {
let dataJson = JSON.parse(data);
- redirects.invidious = dataJson.invidious;
- redirects.piped = dataJson.piped;
+ 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];
@@ -267,9 +320,7 @@ function initDefaults() {
disableYoutube: false,
enableYoutubeCustomSettings: false,
onlyEmbeddedVideo: 'both',
-
youtubeRedirects: redirects,
-
youtubeFrontend: 'invidious',
invidiousNormalRedirectsChecks: invidiousNormalRedirectsChecks,
@@ -278,20 +329,37 @@ function initDefaults() {
invidiousTorRedirectsChecks: [...redirects.invidious.tor],
invidiousTorCustomRedirects: [],
+ invidiousI2pRedirectsChecks: [...redirects.invidious.i2p],
+ invidiousI2pCustomRedirects: [],
+
+ invidiousLokiRedirectsChecks: [...redirects.invidious.loki],
+ invidiousLokiCustomRedirects: [],
+
pipedNormalRedirectsChecks: pipedNormalRedirectsChecks,
pipedNormalCustomRedirects: [],
pipedTorRedirectsChecks: [...redirects.piped.tor],
pipedTorCustomRedirects: [],
+ pipedI2pRedirectsChecks: [...redirects.piped.i2p],
+ pipedI2pCustomRedirects: [],
+
+ pipedLokiRedirectsChecks: [...redirects.piped.loki],
+ pipedLokiCustomRedirects: [],
+
pipedMaterialNormalRedirectsChecks: pipedMaterialNormalRedirectsChecks,
pipedMaterialNormalCustomRedirects: [],
pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor],
pipedMaterialTorCustomRedirects: [],
- youtubeEmbedFrontend: 'invidious',
- youtubeProtocol: 'normal',
+ pipedMaterialI2pRedirectsChecks: [...redirects.pipedMaterial.i2p],
+ pipedMaterialI2pCustomRedirects: [],
+
+ pipedMaterialLokiRedirectsChecks: [...redirects.pipedMaterial.loki],
+ pipedMaterialLokiCustomRedirects: [],
+
+ youtubeEmbedFrontend: 'invidious'
}, () => resolve())
})
})
@@ -308,11 +376,18 @@ function copyPasteInvidiousCookies(test, from) {
...invidiousTorRedirectsChecks,
...invidiousNormalCustomRedirects,
...invidiousTorCustomRedirects,
+ ...invidiousI2pCustomRedirects,
+ ...invidiousLokiCustomRedirects
].includes(protocolHost)) { resolve(); return; }
if (!test) {
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ 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');
@@ -325,9 +400,13 @@ function pasteInvidiousCookies() {
return new Promise(async resolve => {
await init();
if (disableYoutube || youtubeFrontend != 'invidious') { resolve(); return; }
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects]
+ 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();
})
@@ -343,14 +422,20 @@ function copyPastePipedLocalStorage(test, url, tabId) {
...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" });
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ 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) {
@@ -365,9 +450,13 @@ function pastePipedLocalStorage() {
return new Promise(async resolve => {
await init();
if (disableYoutube || youtubeFrontend != 'piped') { resolve(); return; }
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedNormalCustomRedirects, ...pipedNormalRedirectsChecks]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects]
+ 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" }))
@@ -384,16 +473,22 @@ function copyPastePipedMaterialLocalStorage(test, url, tabId,) {
if (![
...pipedMaterialNormalRedirectsChecks,
...pipedMaterialNormalCustomRedirects,
- ...pipedMaterialTorRedirectsChecks,
+ //...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" });
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ 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)
@@ -410,9 +505,13 @@ function pastePipedMaterialLocalStorage() {
return new Promise(async resolve => {
await init();
if (disableYoutube || youtubeFrontend != 'pipedMaterial') { resolve(); return; }
- let checkedInstances;
- if (youtubeProtocol == 'normal') checkedInstances = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]
- else if (youtubeProtocol == 'tor') checkedInstances = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]
+ 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" }))
@@ -427,18 +526,26 @@ function removeXFrameOptions(e) {
if (e.type == 'main_frame') {
for (const i in e.responseHeaders) {
if (e.responseHeaders[i].name == 'content-security-policy') {
- let instancesList;
- if (youtubeFrontend == 'invidious') {
- if (youtubeProtocol == 'normal') instancesList = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
+ 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 (youtubeFrontend == 'piped') {
- if (youtubeProtocol == 'normal') instancesList = [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
+ else if (protocol == 'tor') {
+ if (youtubeFrontend == 'invidious') instancesList = [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects];
+ if (youtubeFrontend == 'piped') instancesList = [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects];
+ if (youtubeFrontend == 'pipedMaterial') instancesList = [...pipedMaterialTorCustomRedirects]; //...pipedMaterialTorRedirectsChecks,
}
- else if (youtubeFrontend == 'pipedMaterial') {
- if (youtubeProtocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects];
- else if (youtubeProtocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects];
+ 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();
diff --git a/src/assets/javascripts/youtubeMusic.js b/src/assets/javascripts/youtubeMusic.js
index fff2ebf8..46caf60e 100644
--- a/src/assets/javascripts/youtubeMusic.js
+++ b/src/assets/javascripts/youtubeMusic.js
@@ -12,26 +12,43 @@ let redirects = {
"normal": [
"https://beatbump.ml"
],
- "tor": []
+ "tor": [],
+ "i2p": [],
+ "loki": []
},
};
let
disableYoutubeMusic,
+ protocol,
+ protocolFallback,
beatbumpNormalRedirectsChecks,
- beatbumpNormalCustomRedirects;
+ beatbumpNormalCustomRedirects,
+ beatbumpTorCustomRedirects,
+ beatbumpI2pCustomRedirects,
+ beatbumpLokiCustomRedirects;
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;
}
)
}
@@ -75,7 +92,13 @@ function redirect(url, disableOverride) {
if (disableYoutubeMusic && !disableOverride) return;
if (!targets.some(rx => rx.test(url.href))) return;
- let instancesList = [...beatbumpNormalRedirectsChecks, ...beatbumpNormalCustomRedirects];
+ 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}`
@@ -93,6 +116,15 @@ async function initDefaults() {
beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal],
beatbumpNormalCustomRedirects: [],
+
+ beatbumpTorRedirectsChecks: [...redirects.beatbump.tor],
+ beatbumpTorCustomRedirects: [],
+
+ beatbumpI2pRedirectsChecks: [...redirects.beatbump.i2p],
+ beatbumpI2pCustomRedirects: [],
+
+ beatbumpLokiRedirectsChecks: [...redirects.beatbump.loki],
+ beatbumpLokiCustomRedirects: []
}, () => resolve())
)
}