about summary refs log tree commit diff stats
path: root/src/assets/javascripts/reuters.js
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
committerManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
commita9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch)
tree2cb69c855b36e82128a00e5895d5f5409d5e0a5e /src/assets/javascripts/reuters.js
parentMerge branch 'BobIsMyManager-librex' (diff)
parent, (diff)
downloadlibredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to 'src/assets/javascripts/reuters.js')
-rw-r--r--src/assets/javascripts/reuters.js254
1 files changed, 121 insertions, 133 deletions
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
index e1d18a40..e4afa19c 100644
--- a/src/assets/javascripts/reuters.js
+++ b/src/assets/javascripts/reuters.js
@@ -1,152 +1,140 @@
-window.browser = window.browser || window.chrome;
-
-import utils from './utils.js'
-
-const targets = [
-    /^https?:\/{2}(www\.|)reuters\.com.*/
-];
-
-let redirects = {
-    "neuters": {
-        "normal": [
-            "https://neuters.de"
-        ],
-        "tor": [],
-        "i2p": [],
-        "loki": []
-    }
-}
+window.browser = window.browser || window.chrome
+
+import utils from "./utils.js"
+
+const targets = [/^https?:\/{2}(www\.|)reuters\.com.*/]
 
-// const frontends = new Array("neuters")
-// const protocols = new Array("normal", "tor", "i2p", "loki")
+const frontends = new Array("neuters")
+const protocols = new Array("normal", "tor", "i2p", "loki")
 
-// for (let i = 0; i < frontends.length; i++) {
-//     redirects[frontends[i]] = {}
-//     for (let x = 0; x < protocols.length; x++) {
-//         redirects[frontends[i]][protocols[x]] = []
-//     }
-// }
+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.neuters = val;
-        neutersNormalRedirectsChecks = [...redirects.neuters.normal];
-        for (const instance of r.cloudflareBlackList) {
-            const a = neutersNormalRedirectsChecks.indexOf(instance);
-            if (a > -1) neutersNormalRedirectsChecks.splice(a, 1);
-        }
-        browser.storage.local.set({
-            neutersRedirects: redirects,
-            neutersNormalRedirectsChecks
-        })
-    })
+	browser.storage.local.get("cloudflareBlackList", r => {
+		redirects.neuters = val
+		neutersNormalRedirectsChecks = [...redirects.neuters.normal]
+		for (const instance of r.cloudflareBlackList) {
+			const a = neutersNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) neutersNormalRedirectsChecks.splice(a, 1)
+		}
+		browser.storage.local.set({
+			neutersRedirects: redirects,
+			neutersNormalRedirectsChecks,
+		})
+	})
 }
 
-let
-    disableReuters,
-    protocol,
-    protocolFallback,
-    reutersRedirects,
-    neutersNormalRedirectsChecks,
-    neutersNormalCustomRedirects,
-    neutersTorRedirectsChecks,
-    neutersTorCustomRedirects,
-    neutersI2pCustomRedirects,
-    neutersLokiCustomRedirects;
+let disableReuters,
+	protocol,
+	protocolFallback,
+	reutersRedirects,
+	neutersNormalRedirectsChecks,
+	neutersNormalCustomRedirects,
+	neutersTorRedirectsChecks,
+	neutersTorCustomRedirects,
+	neutersI2pCustomRedirects,
+	neutersLokiCustomRedirects
 
 function init() {
-    return new Promise(async resolve => {
-        browser.storage.local.get(
-            [
-                "disableReuters",
-                "protocol",
-                "protocolFallback",
-                "reutersRedirects",
-                "neutersNormalRedirectsChecks",
-                "neutersNormalCustomRedirects",
-                "neutersTorRedirectsChecks",
-                "neutersTorCustomRedirects",
-                "neutersI2pCustomRedirects",
-                "neutersLokiCustomRedirects"
-            ],
-            r => {
-                disableReuters = r.disableReuters;
-                protocol = r.protocol;
-                protocolFallback = r.protocolFallback;
-                reutersRedirects = r.reutersRedirects;
-                neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks;
-                neutersNormalCustomRedirects = r.neutersNormalCustomRedirects;
-                neutersTorRedirectsChecks = r.neutersTorRedirectsChecks;
-                neutersTorCustomRedirects = r.neutersTorCustomRedirects;
-                neutersI2pCustomRedirects = r.neutersI2pCustomRedirects;
-                neutersLokiCustomRedirects = r.neutersLokiCustomRedirects;
-                resolve();
-            }
-        )
-    })
+	return new Promise(async resolve => {
+		browser.storage.local.get(
+			[
+				"disableReuters",
+				"protocol",
+				"protocolFallback",
+				"reutersRedirects",
+				"neutersNormalRedirectsChecks",
+				"neutersNormalCustomRedirects",
+				"neutersTorRedirectsChecks",
+				"neutersTorCustomRedirects",
+				"neutersI2pCustomRedirects",
+				"neutersLokiCustomRedirects",
+			],
+			r => {
+				disableReuters = r.disableReuters
+				protocol = r.protocol
+				protocolFallback = r.protocolFallback
+				reutersRedirects = r.reutersRedirects
+				neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks
+				neutersNormalCustomRedirects = r.neutersNormalCustomRedirects
+				neutersTorRedirectsChecks = r.neutersTorRedirectsChecks
+				neutersTorCustomRedirects = r.neutersTorCustomRedirects
+				neutersI2pCustomRedirects = r.neutersI2pCustomRedirects
+				neutersLokiCustomRedirects = r.neutersLokiCustomRedirects
+				resolve()
+			}
+		)
+	})
 }
 
-init();
+init()
 browser.storage.onChanged.addListener(init)
 
 function redirect(url, type, initiator, disableOverride) {
-    if (disableReuters && !disableOverride) return;
-    if (type != "main_frame") return;
-    const all = [
-        ...reutersRedirects.neuters.normal,
-        ...neutersNormalCustomRedirects
-    ];
-    if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return;
-    if (!targets.some(rx => rx.test(url.href))) return;
-
-    let instancesList = [];
-    if (protocol == 'loki') instancesList = [...neutersLokiCustomRedirects];
-    else if (protocol == 'i2p') instancesList = [...neutersI2pCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects];
-    if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
-        instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects];
-    }
-    if (instancesList.length === 0) return;
-
-    const randomInstance = utils.getRandomInstance(instancesList);
-    // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
-    if (
-        url.pathname.startsWith('/article/') ||
-        url.pathname.startsWith('/pf/') ||
-        url.pathname.startsWith('/arc/') ||
-        url.pathname.startsWith('/resizer/')
-    )
-        return null;
-    else if (url.pathname.endsWith('/'))
-        return `${randomInstance}${url.pathname}`;
-    else
-        return `${randomInstance}${url.pathname}/`;
+	if (disableReuters && !disableOverride) return
+	if (type != "main_frame") return
+	const all = [...reutersRedirects.neuters.normal, ...neutersNormalCustomRedirects]
+	if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return
+	if (!targets.some(rx => rx.test(url.href))) return
+
+	let instancesList = []
+	if (protocol == "loki") instancesList = [...neutersLokiCustomRedirects]
+	else if (protocol == "i2p") instancesList = [...neutersI2pCustomRedirects]
+	else if (protocol == "tor") instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]
+	if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+		instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]
+	}
+	if (instancesList.length === 0) return
+
+	const randomInstance = utils.getRandomInstance(instancesList)
+	// stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/
+	if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null
+	else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}`
+	else return `${randomInstance}${url.pathname}/`
 }
 
 function initDefaults() {
-    return new Promise(resolve => {
-        browser.storage.local.set({
-            disableReuters: true,
-
-            reutersRedirects: redirects,
-
-            neutersNormalRedirectsChecks: [...redirects.neuters.normal],
-            neutersNormalCustomRedirects: [],
-
-            neutersTorRedirectsChecks: [...redirects.neuters.tor],
-            neutersTorCustomRedirects: [],
-
-            neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
-            neutersI2pCustomRedirects: [],
-
-            neutersLokiRedirectsChecks: [...redirects.neuters.loki],
-            neutersLokiCustomRedirects: []
-        }, () => resolve());
-    });
+	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(
+					{
+						disableReuters: true,
+
+						reutersRedirects: redirects,
+
+						neutersNormalRedirectsChecks: [...redirects.neuters.normal],
+						neutersNormalCustomRedirects: [],
+
+						neutersTorRedirectsChecks: [...redirects.neuters.tor],
+						neutersTorCustomRedirects: [],
+
+						neutersI2pRedirectsChecks: [...redirects.neuters.i2p],
+						neutersI2pCustomRedirects: [],
+
+						neutersLokiRedirectsChecks: [...redirects.neuters.loki],
+						neutersLokiCustomRedirects: [],
+					},
+					() => resolve()
+				)
+			})
+	})
 }
 
 export default {
-    setRedirects,
-    redirect,
-    initDefaults
-};
+	setRedirects,
+	redirect,
+	initDefaults,
+}