about summary refs log tree commit diff stats
path: root/src/assets/javascripts
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-03-10 10:30:23 +0300
committerManeraKai <manerakai@protonmail.com>2022-03-10 10:30:23 +0300
commitd3df133f4e9bf930179f700e93c2ec69058f1b44 (patch)
tree07a302ba8f83b491fa79a719c94398550c286b7c /src/assets/javascripts
parentMerge branch 'master' of https://github.com/libredirect/libredirect (diff)
downloadlibredirect-d3df133f4e9bf930179f700e93c2ec69058f1b44.zip
Added send, fixed a bug in #89
Diffstat (limited to 'src/assets/javascripts')
-rw-r--r--src/assets/javascripts/helpers/sendTargets.js188
-rw-r--r--src/assets/javascripts/helpers/wikipedia.js2
2 files changed, 189 insertions, 1 deletions
diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js
new file mode 100644
index 00000000..3108257a
--- /dev/null
+++ b/src/assets/javascripts/helpers/sendTargets.js
@@ -0,0 +1,188 @@
+window.browser = window.browser || window.chrome;
+
+import commonHelper from './common.js'
+
+const targets = [
+    /^https?:\/\/send\.firefox\.com\/$/,
+    /^https?:\/\/sendfiles\.online\/$/
+];
+
+let redirects = {
+    "send": {
+        "normal": [
+            "https://send.silkky.cloud",
+            "https://send.turingpoint.de",
+            "https://send.ephemeral.land",
+            "https://send.monks.tools",
+            "https://send.jeugdhulp.be",
+            "https://send.aurorabilisim.com",
+            "https://nhanh.cloud",
+            "https://send.datahoarder.dev",
+            "https://send.navennec.net",
+            "https://fileupload.ggc-project.de",
+            "https://drop.chapril.org",
+            "https://files.psu.ru",
+            "https://send.portailpro.net",
+            "https://bytefile.de",
+            "https://transfer.acted.org ",
+        ],
+        "tor": []
+    }
+}
+
+const getRedirects = () => redirects;
+const getCustomRedirects = function () {
+    return {
+        "send": {
+            "normal": [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]
+        },
+    };
+};
+
+function setRedirects(val) {
+    redirects.send = val;
+    browser.storage.local.set({ sendTargetsRedirects: redirects })
+    console.log("sendTargetsRedirects: ", val)
+    for (const item of sendNormalRedirectsChecks)
+        if (!redirects.send.normal.includes(item)) {
+            var index = sendNormalRedirectsChecks.indexOf(item);
+            if (index !== -1) sendNormalRedirectsChecks.splice(index, 1);
+        }
+    setSendNormalRedirectsChecks(sendNormalRedirectsChecks);
+
+    for (const item of sendTorRedirectsChecks)
+        if (!redirects.send.normal.includes(item)) {
+            var index = sendTorRedirectsChecks.indexOf(item);
+            if (index !== -1) sendTorRedirectsChecks.splice(index, 1);
+        }
+    setSendTorRedirectsChecks(sendTorRedirectsChecks);
+}
+
+let sendNormalRedirectsChecks;
+const getSendNormalRedirectsChecks = () => sendNormalRedirectsChecks;
+function setSendNormalRedirectsChecks(val) {
+    sendNormalRedirectsChecks = val;
+    browser.storage.local.set({ sendNormalRedirectsChecks })
+    console.log("sendNormalRedirectsChecks: ", val)
+}
+
+let sendTorRedirectsChecks;
+const getSendTorRedirectsChecks = () => sendTorRedirectsChecks;
+function setSendTorRedirectsChecks(val) {
+    sendTorRedirectsChecks = val;
+    browser.storage.local.set({ sendTorRedirectsChecks })
+    console.log("sendTorRedirectsChecks: ", val)
+}
+
+let sendNormalCustomRedirects = [];
+const getSendNormalCustomRedirects = () => sendNormalCustomRedirects;
+function setSendNormalCustomRedirects(val) {
+    sendNormalCustomRedirects = val;
+    browser.storage.local.set({ sendNormalCustomRedirects })
+    console.log("sendNormalCustomRedirects: ", val)
+}
+
+let sendTorCustomRedirects = [];
+const getSendTorCustomRedirects = () => sendTorCustomRedirects;
+function setSendTorCustomRedirects(val) {
+    sendTorCustomRedirects = val;
+    browser.storage.local.set({ sendTorCustomRedirects })
+    console.log("sendTorCustomRedirects: ", val)
+}
+
+let disable;
+const getDisable = () => disable;
+function setDisable(val) {
+    disable = val;
+    browser.storage.local.set({ disableSendTarget: disable })
+}
+
+let protocol;
+const getProtocol = () => protocol;
+function setProtocol(val) {
+    protocol = val;
+    browser.storage.local.set({ sendTargetsProtocol: val })
+    console.log("sendTargetsProtocol: ", val)
+}
+
+function redirect(url, type, initiator) {
+
+    if (disable) return null;
+    if (initiator && ([...redirects.send.normal, ...sendNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null;
+    if (!targets.some((rx) => rx.test(url.href))) return null;
+
+    if (type != "main_frame") return null;
+
+    let instancesList;
+    if (protocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects];
+    if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects];
+    if (instancesList.length === 0) return null;
+    let randomInstance = commonHelper.getRandomInstance(instancesList);
+
+    let pathName = url.pathname.replace(new RegExp(/@.*\/(?=video)/), "");
+
+    return `${randomInstance}${pathName}`;
+}
+
+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(
+                [
+                    "disableSendTarget",
+                    "sendTargetsRedirects",
+
+                    "sendNormalRedirectsChecks",
+                    "sendNormalCustomRedirects",
+
+                    "sendTorRedirectsChecks",
+                    "sendTorCustomRedirects",
+
+                    "sendTargetsProtocol"
+                ],
+                r => {
+                    disable = r.disableSendTarget ?? false;
+
+                    protocol = r.sendTargetsProtocol ?? "normal";
+
+                    if (r.sendTargetsRedirects) redirects = r.sendTargetsRedirects;
+
+                    sendNormalRedirectsChecks = r.sendNormalRedirectsChecks ?? [...redirects.send.normal];
+                    sendNormalCustomRedirects = r.sendNormalCustomRedirects ?? [];
+
+                    sendTorRedirectsChecks = r.sendTorRedirectsChecks ?? [...redirects.send.tor];
+                    sendTorCustomRedirects = r.sendTorCustomRedirects ?? [];
+
+                    resolve();
+                }
+            )
+        });
+    });
+}
+
+export default {
+
+    getRedirects,
+    getCustomRedirects,
+    setRedirects,
+
+    getDisable,
+    setDisable,
+
+    getProtocol,
+    setProtocol,
+
+    getSendNormalRedirectsChecks,
+    setSendNormalRedirectsChecks,
+    getSendTorRedirectsChecks,
+    setSendTorRedirectsChecks,
+
+    getSendTorCustomRedirects,
+    setSendTorCustomRedirects,
+    getSendNormalCustomRedirects,
+    setSendNormalCustomRedirects,
+
+    redirect,
+    init,
+};
diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js
index 299e6cde..12171625 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?:\/\/(.*\.|)wikipedia\.org/
 
 let redirects = {
   "wikiless": {