about summary refs log tree commit diff stats
path: root/src/assets/javascripts/imdb.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/imdb.js')
-rw-r--r--src/assets/javascripts/imdb.js49
1 files changed, 31 insertions, 18 deletions
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js
index 0061b7e3..de1293af 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,7 +35,8 @@ function setRedirects(val) {
 
 let
     disableImdb,
-    imdbProtocol,
+    protocol,
+    protocolFallback,
     imdbRedirects,
     libremdbNormalRedirectsChecks,
     libremdbNormalCustomRedirects,
@@ -41,7 +48,8 @@ function init() {
         browser.storage.local.get(
             [
                 "disableImdb",
-                "imdbProtocol",
+                "protocol",
+                "protocolFallback",
                 "imdbRedirects",
                 "libremdbNormalRedirectsChecks",
                 "libremdbNormalCustomRedirects",
@@ -50,7 +58,8 @@ function init() {
             ],
             r => {
                 disableImdb = r.disableImdb;
-                imdbProtocol = r.imdbProtocol;
+                protocol = r.protocol;
+                protocolFallback = r.protocolFallback;
                 imdbRedirects = r.imdbRedirects;
                 libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks;
                 libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects;
@@ -76,10 +85,12 @@ 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 == '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}`;
@@ -115,9 +126,11 @@ function switchInstance(url, disableOverride) {
         ];
         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 == '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 +145,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],