about summary refs log tree commit diff stats
path: root/src/assets/javascripts/imdb.js
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-24 11:34:39 +0300
committerManeraKai <manerakai@protonmail.com>2022-07-24 11:34:39 +0300
commitccfcccd53ed6a7a5cc56adc0d7f027e475f0665a (patch)
treebe58876ebca99733cf54a297d22e2117a176f001 /src/assets/javascripts/imdb.js
parentMerge pull request 'No more trailing slashes' (#9) from BobIsMyManager/libred... (diff)
parentfix some typos (diff)
downloadlibredirect-ccfcccd53ed6a7a5cc56adc0d7f027e475f0665a.zip
Merge branch 'BobIsMyManager-librex'
Diffstat (limited to 'src/assets/javascripts/imdb.js')
-rw-r--r--src/assets/javascripts/imdb.js73
1 files changed, 53 insertions, 20 deletions
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());
         });
     })