aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets/javascripts
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-06-11 15:39:22 +0300
committerManeraKai <manerakai@protonmail.com>2022-06-11 15:39:22 +0300
commitcd285222c76e864387d4bb74df6aeb64b61d9363 (patch)
tree8b32867aa38af6183623e054f189fe36a6a428d7 /src/assets/javascripts
parentFixed typo in instagram settings tab #298 (diff)
downloadlibredirect-cd285222c76e864387d4bb74df6aeb64b61d9363.zip
Added Neuters #231
Diffstat (limited to 'src/assets/javascripts')
-rw-r--r--src/assets/javascripts/general.js1
-rw-r--r--src/assets/javascripts/quora.js2
-rw-r--r--src/assets/javascripts/reuters.js106
3 files changed, 107 insertions, 2 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index 7b643cfa..50d6ee33 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -64,6 +64,7 @@ const allPopupFrontends = [
"wikipedia",
"medium",
"quora",
+ "reuters",
"peertube",
"lbry",
"sendTargets"
diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js
index ecd305f0..bf87628b 100644
--- a/src/assets/javascripts/quora.js
+++ b/src/assets/javascripts/quora.js
@@ -65,8 +65,6 @@ function init() {
init();
browser.storage.onChanged.addListener(init)
-// https://www.quora.com/@keysikaspol/video/7061265241887345946
-// https://www.quora.com/@keysikaspol
function redirect(url, type, initiator) {
if (disableQuora) return;
if (type != "main_frame") return;
diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js
new file mode 100644
index 00000000..9afb67a9
--- /dev/null
+++ b/src/assets/javascripts/reuters.js
@@ -0,0 +1,106 @@
+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": []
+ }
+}
+
+let
+ disableReuters,
+ reutersProtocol,
+ reutersRedirects,
+ neutersNormalRedirectsChecks,
+ neutersNormalCustomRedirects,
+ neutersTorRedirectsChecks,
+ neutersTorCustomRedirects;
+
+function init() {
+ return new Promise(async resolve => {
+ browser.storage.local.get(
+ [
+ "disableReuters",
+ "reutersProtocol",
+ "reutersRedirects",
+ "neutersNormalRedirectsChecks",
+ "neutersNormalCustomRedirects",
+ "neutersTorRedirectsChecks",
+ "neutersTorCustomRedirects",
+ ],
+ r => {
+ disableReuters = r.disableReuters;
+ reutersProtocol = r.reutersProtocol;
+ reutersRedirects = r.reutersRedirects;
+ neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks;
+ neutersNormalCustomRedirects = r.neutersNormalCustomRedirects;
+ neutersTorRedirectsChecks = r.neutersTorRedirectsChecks;
+ neutersTorCustomRedirects = r.neutersTorCustomRedirects;
+ resolve();
+ }
+ )
+ })
+}
+
+init();
+browser.storage.onChanged.addListener(init)
+
+function redirect(url, type, initiator) {
+ if (disableReuters) 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 (reutersProtocol == 'normal') instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects];
+ if (reutersProtocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects];
+ 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: false,
+ reutersProtocol: "normal",
+
+ reutersRedirects: redirects,
+
+ neutersNormalRedirectsChecks: [...redirects.neuters.normal],
+ neutersNormalCustomRedirects: [],
+
+ neutersTorRedirectsChecks: [...redirects.neuters.tor],
+ neutersTorCustomRedirects: [],
+ }, () => resolve());
+ });
+}
+
+export default {
+ redirect,
+ initDefaults
+};