From 60be141050374db1ea82b0bf50a6580c6335c218 Mon Sep 17 00:00:00 2001 From: Kotuklion Date: Mon, 12 Jul 2021 18:16:23 +0200 Subject: add Wikiless support --- src/pages/background/background.js | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 88b6f759..2060395c 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( -- cgit 1.4.1 From cf7575f33b55c04a96afb0aec49368fbbe287cd9 Mon Sep 17 00:00:00 2001 From: Kotuklion Date: Mon, 12 Jul 2021 18:24:45 +0200 Subject: fix minor typos --- src/pages/background/background.js | 2 +- src/pages/options/options.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 2060395c..0b039180 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -35,7 +35,7 @@ const simplyTranslateInstances = googleTranslateHelper.redirects; const simplyTranslateDefault = simplyTranslateInstances[0]; const googleTranslateDomains = googleTranslateHelper.targets; const wikipediaInstances = wikipediaHelper.redirects; -const wikipediaDefault = simplyTranslateInstances[0]; +const wikipediaDefault = wikipediaInstances[0]; const wikipediaRegex = wikipediaHelper.targets; let disableNitter; diff --git a/src/pages/options/options.html b/src/pages/options/options.html index 4e6bc84e..15d1c64e 100644 --- a/src/pages/options/options.html +++ b/src/pages/options/options.html @@ -267,8 +267,8 @@ /> -
-

SimplyTranslate Instance

+
+

SimplyTranslate Instance

Date: Mon, 12 Jul 2021 18:30:54 +0200 Subject: left some unnecessary spaces here and there --- src/pages/background/background.js | 4 ---- src/pages/options/options.html | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 0b039180..00dd00d6 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -163,7 +163,6 @@ browser.storage.onChanged.addListener((changes) => { simplyTranslateInstance = changes.simplyTranslateInstance.newValue || simplyTranslateDefault; } - if ("wikipediaInstance" in changes) { wikipediaInstance = changes.wikipediaInstance.newValue || wikipediaDefault; @@ -554,7 +553,6 @@ function redirectWikipedia(url, initiator) { 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 @@ -569,14 +567,12 @@ 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), diff --git a/src/pages/options/options.html b/src/pages/options/options.html index 15d1c64e..65da7f06 100644 --- a/src/pages/options/options.html +++ b/src/pages/options/options.html @@ -268,7 +268,7 @@
-

SimplyTranslate Instance

+

SimplyTranslate Instance

Date: Mon, 12 Jul 2021 18:48:52 +0200 Subject: check host instead of the whole href for occurence of wikipedia.org --- src/pages/background/background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 00dd00d6..e3727e7c 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -601,7 +601,7 @@ browser.webRequest.onBeforeRequest.addListener( redirect = { redirectUrl: redirectGoogleTranslate(url, initiator), }; - } else if (url.href.match(wikipediaRegex)) { + } else if (url.host.match(wikipediaRegex)) { redirect = { redirectUrl: redirectWikipedia(url, initiator), }; -- cgit 1.4.1 From 9d926716922a459131dab1b2f94f0794a702a08c Mon Sep 17 00:00:00 2001 From: Kotuklion Date: Mon, 12 Jul 2021 23:02:56 +0200 Subject: better GET processing --- src/pages/background/background.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index e3727e7c..8feb5dfd 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -543,24 +543,41 @@ function redirectGoogleTranslate(url, initiator) { } function redirectWikipedia(url, initiator) { + console.log(url); if (disableWikipedia || isException(url, initiator)) { return null; } + let GETArguments = []; + if (url.search.length > 0) { + let search = url.search.substring(1); //get rid of '?' + let argstrings = search.split('&'); + for (let i = 0; i < argstrings.length;i++) { + let args = argstrings[i].split('='); + GETArguments.push([args[0],args[1]]); + } + } + 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"; + GETArguments.push(["mobileaction","toggle_view_mobile"]); else - link += `?lang=${urlSplit[0]}`; + GETArguments.push(["lang",urlSplit[0]]); if (urlSplit[1] == 'm') - link += "&mobileaction=toggle_view_mobile"; + GETArguments.push(["mobileaction","toggle_view_mobile"]); //wikiless doesn't have mobile view support yet } + for (let i = 0; i < GETArguments.length; i++) { + link += (i == 0 ? '?' : '&') + GETArguments[i][0] + + '=' + GETArguments[i][1]; + } if (urlSplit[urlSplit.length - 1] == "org" && - urlSplit[urlSplit.length - 2] == "wikipedia") + urlSplit[urlSplit.length - 2] == "wikipedia") //just in case someone wanted to visit wikipedia.org.foo.bar.net - return link; + return link; + else + return null; } browser.webRequest.onBeforeRequest.addListener( -- cgit 1.4.1 From 033dad74bc33a442114f7a662a414e8a672f37fe Mon Sep 17 00:00:00 2001 From: Kotuklion Date: Mon, 12 Jul 2021 23:08:08 +0200 Subject: cleanup --- src/pages/background/background.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/pages/background') diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 8feb5dfd..5f60f8b9 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -543,7 +543,6 @@ function redirectGoogleTranslate(url, initiator) { } function redirectWikipedia(url, initiator) { - console.log(url); if (disableWikipedia || isException(url, initiator)) { return null; } @@ -556,7 +555,6 @@ function redirectWikipedia(url, initiator) { GETArguments.push([args[0],args[1]]); } } - let link = `${wikipediaInstance}${url.pathname}`; let urlSplit = url.host.split('.'); if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") { -- cgit 1.4.1