about summary refs log tree commit diff stats
path: root/src/assets/javascripts/lbry.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/lbry.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/lbry.js')
-rw-r--r--src/assets/javascripts/lbry.js118
1 files changed, 65 insertions, 53 deletions
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());
+        });
     })
 }