summaryrefslogtreecommitdiffstats
path: root/src/pages/background/background.js
diff options
context:
space:
mode:
authorKotuklion <quemasterbog@gmail.com>2021-07-12 18:16:23 +0200
committerKotuklion <quemasterbog@gmail.com>2021-07-12 18:16:23 +0200
commit60be141050374db1ea82b0bf50a6580c6335c218 (patch)
treeabfe180912e9cf7010d03fbf6fb56abce80d67b3 /src/pages/background/background.js
parent8a21b62478394461601f50341fd054220bd7a6d5 (diff)
downloadprivacy-redirect-60be141050374db1ea82b0bf50a6580c6335c218.tar.gz
privacy-redirect-60be141050374db1ea82b0bf50a6580c6335c218.tar.bz2
privacy-redirect-60be141050374db1ea82b0bf50a6580c6335c218.zip
add Wikiless support
Diffstat (limited to 'src/pages/background/background.js')
-rw-r--r--src/pages/background/background.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index 88b6f75..2060395 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -8,6 +8,7 @@ import mapsHelper from "../../assets/javascripts/helpers/google-maps.js";
import redditHelper from "../../assets/javascripts/helpers/reddit.js";
import searchHelper from "../../assets/javascripts/helpers/google-search.js";
import googleTranslateHelper from "../../assets/javascripts/helpers/google-translate.js";
+import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
const nitterInstances = twitterHelper.redirects;
const twitterDomains = twitterHelper.targets;
@@ -33,6 +34,9 @@ const searchEngineInstances = searchHelper.redirects;
const simplyTranslateInstances = googleTranslateHelper.redirects;
const simplyTranslateDefault = simplyTranslateInstances[0];
const googleTranslateDomains = googleTranslateHelper.targets;
+const wikipediaInstances = wikipediaHelper.redirects;
+const wikipediaDefault = simplyTranslateInstances[0];
+const wikipediaRegex = wikipediaHelper.targets;
let disableNitter;
let disableInvidious;
@@ -41,6 +45,7 @@ let disableOsm;
let disableReddit;
let disableSearchEngine;
let disableSimplyTranslate;
+let disableWikipedia;
let nitterInstance;
let invidiousInstance;
let bibliogramInstance;
@@ -48,6 +53,7 @@ let osmInstance;
let redditInstance;
let searchEngineInstance;
let simplyTranslateInstance;
+let wikipediaInstance;
let alwaysProxy;
let onlyEmbeddedVideo;
let videoQuality;
@@ -73,6 +79,7 @@ browser.storage.sync.get(
"redditInstance",
"searchEngineInstance",
"simplyTranslateInstance",
+ "wikipediaInstance",
"disableNitter",
"disableInvidious",
"disableBibliogram",
@@ -80,6 +87,7 @@ browser.storage.sync.get(
"disableReddit",
"disableSearchEngine",
"disableSimplyTranslate",
+ "disableWikipedia",
"alwaysProxy",
"onlyEmbeddedVideo",
"videoQuality",
@@ -103,12 +111,14 @@ browser.storage.sync.get(
searchEngineInstance = result.searchEngineInstance;
simplyTranslateInstance =
result.simplyTranslateInstance || simplyTranslateDefault;
+ wikipediaInstance = result.wikipediaInstance || wikipediaDefault;
disableNitter = result.disableNitter;
disableInvidious = result.disableInvidious;
disableBibliogram = result.disableBibliogram;
disableOsm = result.disableOsm;
disableReddit = result.disableReddit;
disableSearchEngine = result.disableSearchEngine;
+ disableWikipedia = result.disableWikipedia;
disableSimplyTranslate = result.disableSimplyTranslate;
alwaysProxy = result.alwaysProxy;
onlyEmbeddedVideo = result.onlyEmbeddedVideo;
@@ -153,6 +163,11 @@ browser.storage.onChanged.addListener((changes) => {
simplyTranslateInstance =
changes.simplyTranslateInstance.newValue || simplyTranslateDefault;
}
+
+ if ("wikipediaInstance" in changes) {
+ wikipediaInstance =
+ changes.wikipediaInstance.newValue || wikipediaDefault;
+ }
if ("redditInstance" in changes) {
redditInstance = changes.redditInstance.newValue || redditDefault;
}
@@ -180,6 +195,9 @@ browser.storage.onChanged.addListener((changes) => {
if ("disableSimplyTranslate" in changes) {
disableSimplyTranslate = changes.disableSimplyTranslate.newValue;
}
+ if ("disableWikipedia" in changes) {
+ disableWikipedia = changes.disableWikipedia.newValue;
+ }
if ("alwaysProxy" in changes) {
alwaysProxy = changes.alwaysProxy.newValue;
}
@@ -525,16 +543,40 @@ function redirectGoogleTranslate(url, initiator) {
return `${simplyTranslateInstance}/${url.search}`;
}
+function redirectWikipedia(url, initiator) {
+ if (disableWikipedia || isException(url, initiator)) {
+ return null;
+ }
+ let link = `${wikipediaInstance}${url.pathname}`;
+ let urlSplit = url.host.split('.');
+ if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
+ if (urlSplit[0] == 'm')
+ link += "?mobileaction=toggle_view_mobile";
+ else
+ link += `?lang=${urlSplit[0]}`;
+
+ if (urlSplit[1] == 'm')
+ link += "&mobileaction=toggle_view_mobile";
+ //wikiless doesn't have mobile view support yet
+ }
+ if (urlSplit[urlSplit.length - 1] == "org" &&
+ urlSplit[urlSplit.length - 2] == "wikipedia")
+ //just in case someone wanted to visit wikipedia.org.foo.bar.net
+ return link;
+}
+
browser.webRequest.onBeforeRequest.addListener(
(details) => {
const url = new URL(details.url);
let initiator;
+
if (details.originUrl) {
initiator = new URL(details.originUrl);
} else if (details.initiator) {
initiator = new URL(details.initiator);
}
let redirect;
+
if (youtubeDomains.includes(url.host)) {
redirect = {
redirectUrl: redirectYouTube(url, initiator, details.type),
@@ -563,6 +605,10 @@ browser.webRequest.onBeforeRequest.addListener(
redirect = {
redirectUrl: redirectGoogleTranslate(url, initiator),
};
+ } else if (url.href.match(wikipediaRegex)) {
+ redirect = {
+ redirectUrl: redirectWikipedia(url, initiator),
+ };
}
if (redirect && redirect.redirectUrl) {
console.info(