about summary refs log tree commit diff stats
path: root/src/assets/javascripts/helpers
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-03-16 10:59:34 +0300
committerManeraKai <manerakai@protonmail.com>2022-03-16 10:59:34 +0300
commitc89f9cd7852ecd94a1c00569f6e80e542a34a517 (patch)
tree48549a6a957316759369529534d9439af4320a8b /src/assets/javascripts/helpers
parentRemoved installing web-ext as it's already in package.json #113 (diff)
downloadlibredirect-c89f9cd7852ecd94a1c00569f6e80e542a34a517.zip
Added librarian #78
Diffstat (limited to 'src/assets/javascripts/helpers')
-rw-r--r--src/assets/javascripts/helpers/general.js1
-rw-r--r--src/assets/javascripts/helpers/imgur.js2
-rw-r--r--src/assets/javascripts/helpers/lbry.js205
-rw-r--r--src/assets/javascripts/helpers/maps.js2
-rw-r--r--src/assets/javascripts/helpers/pixiv.js2
-rw-r--r--src/assets/javascripts/helpers/reddit.js4
-rw-r--r--src/assets/javascripts/helpers/search.js4
-rw-r--r--src/assets/javascripts/helpers/sendTargets.js4
-rw-r--r--src/assets/javascripts/helpers/tiktok.js2
-rw-r--r--src/assets/javascripts/helpers/twitter.js8
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js2
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js14
-rw-r--r--src/assets/javascripts/helpers/youtubeMusic.js2
13 files changed, 229 insertions, 23 deletions
diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js
index c542d88b..a655fa74 100644
--- a/src/assets/javascripts/helpers/general.js
+++ b/src/assets/javascripts/helpers/general.js
@@ -118,6 +118,7 @@ let allPopupFrontends = [
     "wikipedia",
     "medium",
     "peertube",
+    "lbry",
     "sendTargets"
 ];
 
diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js
index e3e21ecc..73f62c5d 100644
--- a/src/assets/javascripts/helpers/imgur.js
+++ b/src/assets/javascripts/helpers/imgur.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-    /^https?:\/\/(i|).?imgur\.com(\/.*)?$/
+    /^https?:\/{2}(i|).?imgur\.com(\/.*)?$/
 ];
 
 let redirects = {
diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js
new file mode 100644
index 00000000..c1eb4600
--- /dev/null
+++ b/src/assets/javascripts/helpers/lbry.js
@@ -0,0 +1,205 @@
+window.browser = window.browser || window.chrome;
+
+import commonHelper from './common.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 getRedirects = () => redirects;
+const getCustomRedirects = function () {
+    return {
+        "librarian": {
+            "normal": [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]
+        },
+    };
+};
+
+function setRedirects(val) {
+    redirects.librarian = val;
+    browser.storage.local.set({ lbryTargetsRedirects: redirects })
+    console.log("lbryTargetsRedirects: ", val)
+    for (const item of librarianNormalRedirectsChecks)
+        if (!redirects.librarian.normal.includes(item)) {
+            var index = librarianNormalRedirectsChecks.indexOf(item);
+            if (index !== -1) librarianNormalRedirectsChecks.splice(index, 1);
+        }
+    setLibrarianNormalRedirectsChecks(librarianNormalRedirectsChecks);
+
+    for (const item of librarianTorRedirectsChecks)
+        if (!redirects.librarian.normal.includes(item)) {
+            var index = librarianTorRedirectsChecks.indexOf(item);
+            if (index !== -1) librarianTorRedirectsChecks.splice(index, 1);
+        }
+    setLibrarianTorRedirectsChecks(librarianTorRedirectsChecks);
+}
+
+let librarianNormalRedirectsChecks;
+const getLibrarianNormalRedirectsChecks = () => librarianNormalRedirectsChecks;
+function setLibrarianNormalRedirectsChecks(val) {
+    librarianNormalRedirectsChecks = val;
+    browser.storage.local.set({ librarianNormalRedirectsChecks })
+    console.log("librarianNormalRedirectsChecks: ", val)
+}
+
+let librarianTorRedirectsChecks;
+const getLibrarianTorRedirectsChecks = () => librarianTorRedirectsChecks;
+function setLibrarianTorRedirectsChecks(val) {
+    librarianTorRedirectsChecks = val;
+    browser.storage.local.set({ librarianTorRedirectsChecks })
+    console.log("librarianTorRedirectsChecks: ", val)
+}
+
+let librarianNormalCustomRedirects = [];
+const getLibrarianNormalCustomRedirects = () => librarianNormalCustomRedirects;
+function setLibrarianNormalCustomRedirects(val) {
+    librarianNormalCustomRedirects = val;
+    browser.storage.local.set({ librarianNormalCustomRedirects })
+    console.log("librarianNormalCustomRedirects: ", val)
+}
+
+let librarianTorCustomRedirects = [];
+const getLibrarianTorCustomRedirects = () => librarianTorCustomRedirects;
+function setLibrarianTorCustomRedirects(val) {
+    librarianTorCustomRedirects = val;
+    browser.storage.local.set({ librarianTorCustomRedirects })
+    console.log("librarianTorCustomRedirects: ", val)
+}
+
+let disable;
+const getDisable = () => disable;
+function setDisable(val) {
+    disable = val;
+    browser.storage.local.set({ disableLbryTargets: disable })
+}
+
+let protocol;
+const getProtocol = () => protocol;
+function setProtocol(val) {
+    protocol = val;
+    browser.storage.local.set({ lbryTargetsProtocol: val })
+    console.log("lbryTargetsProtocol: ", val)
+}
+
+function changeInstance(url) {
+    let protocolHost = `${url.protocol}//${url.host}`;
+
+    let librarianList = [
+        ...redirects.librarian.normal,
+        ...redirects.librarian.tor,
+        ...librarianNormalCustomRedirects,
+        ...librarianTorCustomRedirects,
+    ];
+
+    if (!librarianList.includes(protocolHost)) return;
+
+    let instancesList;
+    if (protocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
+    else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
+
+    console.log("instancesList", instancesList);
+    let index = instancesList.indexOf(protocolHost);
+    if (index > -1) instancesList.splice(index, 1);
+
+    if (instancesList.length === 0) return null;
+
+    let randomInstance = commonHelper.getRandomInstance(instancesList);
+    return `${randomInstance}${url.pathname}${url.search}`;
+}
+
+function redirect(url, type, initiator) {
+    if (disable) return null;
+    if (initiator && ([...redirects.librarian.normal, ...librarianNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null;
+    if (!targets.includes(url.host)) return null;
+
+    if (type != "main_frame") return null;
+
+    let instancesList;
+    if (protocol == 'normal') instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects];
+    if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects];
+    if (instancesList.length === 0) return null;
+    let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+    return `${randomInstance}${url.pathname}${url.search}`;
+}
+
+async function init() {
+    return new Promise(resolve => {
+        fetch('/instances/data.json').then(response => response.text()).then(data => {
+            let dataJson = JSON.parse(data);
+            browser.storage.local.get(
+                [
+                    "disableLbryTargets",
+                    "lbryTargetsRedirects",
+
+                    "librarianNormalRedirectsChecks",
+                    "librarianNormalCustomRedirects",
+
+                    "librarianTorRedirectsChecks",
+                    "librarianTorCustomRedirects",
+
+                    "lbryTargetsProtocol"
+                ],
+                r => {
+
+                    disable = r.disableLbryTargets ?? true;
+
+                    protocol = r.lbryTargetsProtocol ?? "normal";
+
+                    if (r.lbryTargetsRedirects) redirects = r.lbryTargetsRedirects;
+
+                    librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks ?? [...redirects.librarian.normal];
+                    librarianNormalCustomRedirects = r.librarianNormalCustomRedirects ?? [];
+
+                    librarianTorRedirectsChecks = r.librarianTorRedirectsChecks ?? [...redirects.librarian.tor];
+                    librarianTorCustomRedirects = r.librarianTorCustomRedirects ?? [];
+
+                    resolve();
+                }
+            )
+        });
+    });
+}
+
+export default {
+
+    getRedirects,
+    getCustomRedirects,
+    setRedirects,
+
+    getDisable,
+    setDisable,
+
+    getProtocol,
+    setProtocol,
+
+    getLibrarianNormalRedirectsChecks,
+    setLibrarianNormalRedirectsChecks,
+    getLibrarianTorRedirectsChecks,
+    setLibrarianTorRedirectsChecks,
+
+    getLibrarianTorCustomRedirects,
+    setLibrarianTorCustomRedirects,
+    getLibrarianNormalCustomRedirects,
+    setLibrarianNormalCustomRedirects,
+
+    changeInstance,
+
+    redirect,
+    init,
+};
diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js
index 73d73308..c340557d 100644
--- a/src/assets/javascripts/helpers/maps.js
+++ b/src/assets/javascripts/helpers/maps.js
@@ -1,7 +1,7 @@
 window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
-const targets = /^https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
+const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
 let redirects = {
   'osm': {
     "normal": [
diff --git a/src/assets/javascripts/helpers/pixiv.js b/src/assets/javascripts/helpers/pixiv.js
index 236afa87..86ef6509 100644
--- a/src/assets/javascripts/helpers/pixiv.js
+++ b/src/assets/javascripts/helpers/pixiv.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-    /^https?:\/\/(www\.|)pixiv\.net.*/
+    /^https?:\/{2}(www\.|)pixiv\.net.*/
 ];
 
 let redirects = {
diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js
index e4347311..500a3925 100644
--- a/src/assets/javascripts/helpers/reddit.js
+++ b/src/assets/javascripts/helpers/reddit.js
@@ -3,8 +3,8 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-  /^https?:\/\/(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
-  /^https?:\/\/(i\.|preview\.)redd\.it/,
+  /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/,
+  /^https?:\/{2}(i\.|preview\.)redd\.it/,
 ];
 let redirects = {
   // modern UI
diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js
index f2610925..85865f67 100644
--- a/src/assets/javascripts/helpers/search.js
+++ b/src/assets/javascripts/helpers/search.js
@@ -4,8 +4,8 @@ import commonHelper from './common.js'
 
 const targets = [
   /^https?:\/{2}(www\.|search\.|)google(\.[a-z]{2,3}){1,2}(\/search(\?.*|$)|\/$)/,
-  /^https?:\/\/libredirect\.invalid/
-  // /^https?:\/\/yandex\.com(\...|)(\/search\/..*|\/$)/,
+  /^https?:\/{2}libredirect\.invalid/
+  // /^https?:\/{2}yandex\.com(\...|)(\/search\/..*|\/$)/,
 ];
 let redirects = {
   "searx": {
diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js
index 4987b851..d0691567 100644
--- a/src/assets/javascripts/helpers/sendTargets.js
+++ b/src/assets/javascripts/helpers/sendTargets.js
@@ -3,9 +3,9 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-    /^https?:\/\/send.invalid\/$/,
+    /^https?:\/{2}send.invalid\/$/,
     /^ https ?: \/\/send\.firefox\.com\/$/,
-    /^https?:\/\/sendfiles\.online\/$/
+    /^https?:\/{2}sendfiles\.online\/$/
 ];
 
 let redirects = {
diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js
index 7f1d15fc..671e6427 100644
--- a/src/assets/javascripts/helpers/tiktok.js
+++ b/src/assets/javascripts/helpers/tiktok.js
@@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-    /^https?:\/\/(www\.|)tiktok\.com.*/
+    /^https?:\/{2}(www\.|)tiktok\.com.*/
 ];
 
 let redirects = {
diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js
index 7dbdfcf9..6a283869 100644
--- a/src/assets/javascripts/helpers/twitter.js
+++ b/src/assets/javascripts/helpers/twitter.js
@@ -3,10 +3,10 @@ window.browser = window.browser || window.chrome;
 import commonHelper from './common.js'
 
 const targets = [
-  /^https?:\/\/(www\.|mobile\.|)twitter\.com/,
-  /^https?:\/\/(pbs\.|video\.|)twimg\.com/,
-  /^https?:\/\/platform\.twitter\.com\/embed/,
-  /^https?:\/\/t\.co/
+  /^https?:\/{2}(www\.|mobile\.|)twitter\.com/,
+  /^https?:\/{2}(pbs\.|video\.|)twimg\.com/,
+  /^https?:\/{2}platform\.twitter\.com\/embed/,
+  /^https?:\/{2}t\.co/
 ];
 
 let redirects = {
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index a2e9cab3..da713a03 100644
--- a/src/assets/javascripts/helpers/wikipedia.js
+++ b/src/assets/javascripts/helpers/wikipedia.js
@@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome;
 
 import commonHelper from './common.js'
 
-const targets = /^https?:\/\/(.*\.|)wikipedia\.org/
+const targets = /^https?:\/{2}(.*\.|)wikipedia\.org/
 
 let redirects = {
   "wikiless": {
diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js
index eb91ab08..8f1ff3f5 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -70,16 +70,16 @@ import {
 } from './options.js';
 
 const targets = [
-  /^https?:\/\/(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
+  /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/,
 
-  /^https?:\/\/img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
-  /^https?:\/\/(i|s)\.ytimg\.com\/vi\/.*\/..*/,
+  /^https?:\/{2}img\.youtube\.com\/vi\/.*\/..*/, // https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
+  /^https?:\/{2}(i|s)\.ytimg\.com\/vi\/.*\/..*/,
 
-  /^https?:\/\/(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
+  /^https?:\/{2}(www\.|music\.|)youtube\.com\/watch\?v\=..*/,
 
-  /^https?:\/\/youtu\.be\/..*/,
+  /^https?:\/{2}youtu\.be\/..*/,
 
-  /^https?:\/\/(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
+  /^https?:\/{2}(www\.|)(youtube|youtube-nocookie)\.com\/embed\/..*/,
 ];
 let redirects = {
   "invidious": {
@@ -383,7 +383,7 @@ function redirect(url, details, initiator) {
   if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API.
 
   if (frontend == 'yatte' && details.type === "main_frame")
-    return url.href.replace(/^https?:\/\//, 'yattee://');
+    return url.href.replace(/^https?:\/{2}/, 'yattee://');
 
   else if (frontend == 'freetube' && details.type === "main_frame")
     return `freetube://${url}`;
diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js
index b3f232c8..df713aae 100644
--- a/src/assets/javascripts/helpers/youtubeMusic.js
+++ b/src/assets/javascripts/helpers/youtubeMusic.js
@@ -5,7 +5,7 @@ import commonHelper from './common.js'
 window.browser = window.browser || window.chrome;
 
 const targets = [
-    /^https?:\/\/music\.youtube\.com(\/.*|$)/,
+    /^https?:\/{2}music\.youtube\.com(\/.*|$)/,
 ];
 let redirects = {
     "beatbump": {