From 2570cd8d32eabe211616b2de80841a2ed29934b2 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Tue, 22 Feb 2022 23:52:38 +0300 Subject: Added wikipedia tor support #32 --- src/assets/javascripts/helpers/instagram.js | 100 +++++++--- src/assets/javascripts/helpers/twitter.js | 4 +- src/assets/javascripts/helpers/wikipedia.js | 96 ++++++++-- src/instances/data.json | 6 +- src/instances/get_instances.py | 1 + src/pages/options/instagram/instagram.html | 283 +++++++++++++++------------- src/pages/options/instagram/instagram.js | 38 ++++ src/pages/options/wikipedia/wikipedia.html | 72 +++++-- src/pages/options/wikipedia/wikipedia.js | 39 ++++ 9 files changed, 441 insertions(+), 198 deletions(-) diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index 46051970..fc004e09 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -9,17 +9,8 @@ const targets = [ ]; let redirects = { "bibliogram": { - "normal": [ - "https://bibliogram.art", - "https://bibliogram.snopyta.org", - "https://bibliogram.pussthecat.org", - "https://bibliogram.1d4.us", - "https://insta.trom.tf", - "https://bib.riverside.rocks", - "https://bibliogram.esmailelbob.xyz", - "https://bib.actionsack.com", - "https://biblio.alefvanoon.xyz" - ] + "normal": [], + "tor": [] } }; const getRedirects = () => redirects; @@ -50,6 +41,14 @@ function setBibliogramNormalRedirectsChecks(val) { console.log("bibliogramNormalRedirectsChecks: ", val) } +let bibliogramTorRedirectsChecks; +const getBibliogramTorRedirectsChecks = () => bibliogramTorRedirectsChecks; +function setBibliogramTorRedirectsChecks(val) { + bibliogramTorRedirectsChecks = val; + browser.storage.local.set({ bibliogramTorRedirectsChecks }) + console.log("bibliogramTorRedirectsChecks: ", val) +} + let bibliogramNormalCustomRedirects = []; const getBibliogramNormalCustomRedirects = () => bibliogramNormalCustomRedirects; function setBibliogramNormalCustomRedirects(val) { @@ -58,6 +57,14 @@ function setBibliogramNormalCustomRedirects(val) { console.log("bibliogramNormalCustomRedirects: ", val) } +let bibliogramTorCustomRedirects = []; +const getBibliogramTorCustomRedirects = () => bibliogramTorCustomRedirects; +function setBibliogramTorCustomRedirects(val) { + bibliogramTorCustomRedirects = val; + browser.storage.local.set({ bibliogramTorCustomRedirects }) + console.log("bibliogramTorCustomRedirects: ", val) +} + const reservedPaths = [ "about", "explore", @@ -93,6 +100,14 @@ function setDisable(val) { browser.storage.local.set({ disableInstagram: disable }) } +let protocol; +const getprotocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ nitterProtocol: val }) + console.log("nitterProtocol: ", val) +} + function isInstagram(url, initiator) { if (disable) return false; if ( @@ -107,7 +122,10 @@ function redirect(url, type) { if (type !== "main_frame" || url.pathname.match(bypassPaths)) return 'CANCEL'; // Do not redirect /accounts, /embeds.js, or anything other than main_frame - let instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; + + let instancesList; + if (protocol == 'normal') instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; + else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; if (instancesList.length === 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList) @@ -120,24 +138,39 @@ function redirect(url, type) { async function init() { return new Promise((resolve) => { - browser.storage.local.get( - [ - "disableInstagram", - "instagramRedirects", - "bibliogramNormalRedirectsChecks", - "bibliogramNormalCustomRedirects", - ], - (result) => { - disable = result.disableInstagram ?? false; - - if (result.instagramRedirects) redirects = result.instagramRedirects - - bibliogramNormalRedirectsChecks = result.bibliogramNormalRedirectsChecks ?? [...redirects.bibliogram.normal]; - bibliogramNormalCustomRedirects = result.bibliogramNormalCustomRedirects ?? []; - - resolve(); - } - ) + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disableInstagram", + "instagramRedirects", + + "bibliogramNormalRedirectsChecks", + "bibliogramTorRedirectsChecks", + + "bibliogramNormalCustomRedirects", + "bibliogramTorCustomRedirects", + "bibliogramProtocol" + ], + (result) => { + disable = result.disableInstagram ?? false; + + redirects.bibliogram = dataJson.bibliogram; + + if (result.instagramRedirects) redirects = result.instagramRedirects + + bibliogramNormalRedirectsChecks = result.bibliogramNormalRedirectsChecks ?? [...redirects.bibliogram.normal]; + bibliogramNormalCustomRedirects = result.bibliogramNormalCustomRedirects ?? []; + + bibliogramTorRedirectsChecks = result.bibliogramTorRedirectsChecks ?? [...redirects.bibliogram.tor]; + bibliogramTorCustomRedirects = result.bibliogramTorCustomRedirects ?? []; + + protocol = result.bibliogramProtocol ?? "normal"; + + resolve(); + } + ) + }) }) } @@ -149,11 +182,18 @@ export default { getDisable, setDisable, + getprotocol, + setProtocol, + getBibliogramNormalRedirectsChecks, setBibliogramNormalRedirectsChecks, + getBibliogramTorRedirectsChecks, + setBibliogramTorRedirectsChecks, getBibliogramNormalCustomRedirects, setBibliogramNormalCustomRedirects, + getBibliogramTorCustomRedirects, + setBibliogramTorCustomRedirects, isInstagram, diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index 4e0c4845..3edea7ac 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -149,6 +149,8 @@ async function init() { (result) => { disable = result.disableTwitter ?? false; + protocol = result.nitterProtocol ?? "normal"; + redirects.nitter = dataJson.nitter; if (result.twitterRedirects) redirects = result.twitterRedirects; @@ -158,8 +160,6 @@ async function init() { nitterTorRedirectsChecks = result.nitterTorRedirectsChecks ?? [...redirects.nitter.tor]; nitterTorCustomRedirects = result.nitterTorCustomRedirects ?? []; - protocol = result.nitterProtocol ?? "normal"; - resolve(); } ); diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js index fc777bee..e27f80bc 100644 --- a/src/assets/javascripts/helpers/wikipedia.js +++ b/src/assets/javascripts/helpers/wikipedia.js @@ -21,10 +21,12 @@ const getRedirects = () => redirects; const getCustomRedirects = function () { return { "wikiless": { - "normal": [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects] + "normal": [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects], + "tor": [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects] }, }; }; + function setRedirects(val) { redirects.wikiless = val; browser.storage.local.set({ wikipediaRedirects: redirects }) @@ -35,6 +37,13 @@ function setRedirects(val) { if (index !== -1) wikilessNormalRedirectsChecks.splice(index, 1); } setWikilessNormalRedirectsChecks(wikilessNormalRedirectsChecks); + + for (const item of wikilessTorRedirectsChecks) + if (!redirects.wikiless.normal.includes(item)) { + var index = wikilessTorRedirectsChecks.indexOf(item); + if (index !== -1) wikilessTorRedirectsChecks.splice(index, 1); + } + setWikilessTorRedirectsChecks(wikilessTorRedirectsChecks); } let disable; @@ -44,6 +53,15 @@ function setDisable(val) { browser.storage.local.set({ disableWikipedia: disable }) } +let protocol; +const getProtocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ wikilessProtocol: val }) + console.log("wikilessProtocol: ", val) +} + + let wikilessNormalRedirectsChecks; const getWikilessNormalRedirectsChecks = () => wikilessNormalRedirectsChecks; function setWikilessNormalRedirectsChecks(val) { @@ -52,6 +70,15 @@ function setWikilessNormalRedirectsChecks(val) { console.log("wikilessNormalRedirectsChecks: ", val) } +let wikilessTorRedirectsChecks; +const getWikilessTorRedirectsChecks = () => wikilessTorRedirectsChecks; +function setWikilessTorRedirectsChecks(val) { + wikilessTorRedirectsChecks = val; + browser.storage.local.set({ wikilessTorRedirectsChecks }) + console.log("wikilessTorRedirectsChecks: ", val) +} + + let wikilessNormalCustomRedirects = []; const getWikilessNormalCustomRedirects = () => wikilessNormalCustomRedirects; function setWikilessNormalCustomRedirects(val) { @@ -60,6 +87,14 @@ function setWikilessNormalCustomRedirects(val) { console.log("wikilessNormalCustomRedirects: ", val) } +let wikilessTorCustomRedirects = []; +const getWikilessTorCustomRedirects = () => wikilessTorCustomRedirects; +function setWikilessTorCustomRedirects(val) { + wikilessTorCustomRedirects = val; + browser.storage.local.set({ wikilessTorCustomRedirects }) + console.log("wikilessTorCustomRedirects: ", val) +} + function isWikipedia(url, initiator) { if (disable) return false; return targets.test(url.href); @@ -75,8 +110,9 @@ function redirect(url) { GETArguments.push([args[0], args[1]]); } } - - let instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + let instancesList; + if (protocol == 'normal') instancesList = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects]; + else if (protocol == 'tor') instancesList = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]; if (instancesList.length === 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList) @@ -100,23 +136,36 @@ function redirect(url) { async function init() { return new Promise((resolve) => { - browser.storage.local.get( - [ - "disableWikipedia", - "wikipediaRedirects", - "wikilessNormalRedirectsChecks", - "wikilessNormalCustomRedirects", - ], (result) => { - disable = result.disableWikipedia ?? false; - - if (result.wikipediaRedirects) redirects = result.wikipediaRedirects; - - wikilessNormalRedirectsChecks = result.wikilessNormalRedirectsChecks ?? [...redirects.wikiless.normal]; - wikilessNormalCustomRedirects = result.wikilessNormalCustomRedirects ?? []; - - resolve(); - } - ); + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disableWikipedia", + "wikipediaRedirects", + "wikilessNormalRedirectsChecks", + "wikilessTorRedirectsChecks", + "wikilessNormalCustomRedirects", + "wikilessTorCustomRedirects", + "wikilessProtocol" + + ], (result) => { + disable = result.disableWikipedia ?? false; + + protocol = result.wikilessProtocol ?? "normal"; + + redirects.wikiless = dataJson.wikiless; + if (result.wikipediaRedirects) redirects = result.wikipediaRedirects; + + wikilessNormalRedirectsChecks = result.wikilessNormalRedirectsChecks ?? [...redirects.wikiless.normal]; + wikilessNormalCustomRedirects = result.wikilessNormalCustomRedirects ?? []; + + wikilessTorRedirectsChecks = result.wikilessTorRedirectsChecks ?? [...redirects.wikiless.tor]; + wikilessTorCustomRedirects = result.wikilessTorCustomRedirects ?? []; + + resolve(); + } + ); + }); }); } @@ -128,11 +177,18 @@ export default { setDisable, getDisable, + getProtocol, + setProtocol, + getWikilessNormalRedirectsChecks, setWikilessNormalRedirectsChecks, + getWikilessTorRedirectsChecks, + setWikilessTorRedirectsChecks, getWikilessNormalCustomRedirects, setWikilessNormalCustomRedirects, + getWikilessTorCustomRedirects, + setWikilessTorCustomRedirects, redirect, isWikipedia, diff --git a/src/instances/data.json b/src/instances/data.json index 113a6025..fe7c400b 100644 --- a/src/instances/data.json +++ b/src/instances/data.json @@ -73,7 +73,8 @@ "https://tw.artemislena.eu", "https://de.nttr.stream", "https://nitter.winscloud.net", - "https://nitter.tiekoetter.com" + "https://nitter.tiekoetter.com", + "https://nitter.spaceint.fr" ], "tor": [ "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion", @@ -105,7 +106,8 @@ "https://bibliogram.esmailelbob.xyz", "https://bib.actionsack.com", "https://biblio.alefvanoon.xyz" - ] + ], + "tor": [] }, "teddit": { "normal": [ diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index a3d5c325..3aee6cdb 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -59,6 +59,7 @@ r = requests.get('https://bibliogram.art/api/instances') rJson = json.loads(r.text) bibliogramList = {} bibliogramList['normal'] = [] +bibliogramList['tor'] = [] for item in rJson['data']: bibliogramList['normal'].append(item['address']) mightyList['bibliogram'] = bibliogramList diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html index 6a53fca3..0062a6ea 100644 --- a/src/pages/options/instagram/instagram.html +++ b/src/pages/options/instagram/instagram.html @@ -2,146 +2,177 @@ - - - - - - LibRedirect Options: Instagram + + + + + + LibRedirect Options: Instagram - + + + + Wikipedia + +
+ + + + + + + + + + Medium +
+ -
-
-

Enable

- -
+
+
+

Enable

+ +
-
+
+

Protocol

+ +
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
-

Default Instances

+ +
-
-
+
+
+
+ +
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
-

Custom Instances

+ +
- -
- - -
-
-
+ +
+
-
- - - +
+ + + - + \ No newline at end of file diff --git a/src/pages/options/instagram/instagram.js b/src/pages/options/instagram/instagram.js index 9cfb8491..c5ed8058 100644 --- a/src/pages/options/instagram/instagram.js +++ b/src/pages/options/instagram/instagram.js @@ -6,9 +6,36 @@ disableInstagramElement.addEventListener("change", (event) => instagramHelper.setDisable(!event.target.checked) ); +let protocolElement = document.getElementById("protocol") +protocolElement.addEventListener("change", + (event) => { + let protocol = event.target.options[protocolElement.selectedIndex].value + instagramHelper.setProtocol(protocol); + changeProtocolSettings(protocol); + } +); + +function changeProtocolSettings(protocol) { + let normalDiv = document.getElementById("normal"); + let torDiv = document.getElementById("tor"); + if (protocol == 'normal') { + normalDiv.style.display = 'block'; + torDiv.style.display = 'none'; + } + else if (protocol == 'tor') { + normalDiv.style.display = 'none'; + torDiv.style.display = 'block'; + } +} + instagramHelper.init().then(() => { disableInstagramElement.checked = !instagramHelper.getDisable(); + let protocol = instagramHelper.getprotocol(); + protocolElement.value = protocol; + changeProtocolSettings(protocol); + + commonHelper.processDefaultCustomInstances( 'bibliogram', 'normal', @@ -19,4 +46,15 @@ instagramHelper.init().then(() => { instagramHelper.getBibliogramNormalCustomRedirects, instagramHelper.setBibliogramNormalCustomRedirects ) + + commonHelper.processDefaultCustomInstances( + 'bibliogram', + 'tor', + instagramHelper, + document, + instagramHelper.getBibliogramTorRedirectsChecks, + instagramHelper.setBibliogramTorRedirectsChecks, + instagramHelper.getBibliogramTorCustomRedirects, + instagramHelper.setBibliogramTorCustomRedirects + ) }) \ No newline at end of file diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html index 5f844ebc..0e96259b 100644 --- a/src/pages/options/wikipedia/wikipedia.html +++ b/src/pages/options/wikipedia/wikipedia.html @@ -112,31 +112,67 @@ -
-

Default Instances

-
-
+

Protocol

+
+
-
-

Custom Instances

+ +
+
+

Default Instances

+
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
-
+ +
- - +

Default Instances

+
+
- -
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
@@ -144,4 +180,4 @@ - + \ No newline at end of file diff --git a/src/pages/options/wikipedia/wikipedia.js b/src/pages/options/wikipedia/wikipedia.js index 29a75f72..92ab8dc5 100644 --- a/src/pages/options/wikipedia/wikipedia.js +++ b/src/pages/options/wikipedia/wikipedia.js @@ -5,9 +5,37 @@ let disableWikipediaElement = document.getElementById("disable-wikipedia"); disableWikipediaElement.addEventListener("change", (event) => wikipediaHelper.setDisable(!event.target.checked) ); + +let protocolElement = document.getElementById("protocol") +protocolElement.addEventListener("change", + (event) => { + let protocol = event.target.options[protocolElement.selectedIndex].value + wikipediaHelper.setProtocol(protocol); + changeProtocolSettings(protocol); + } +); + + +function changeProtocolSettings(protocol) { + let normalDiv = document.getElementById("normal"); + let torDiv = document.getElementById("tor"); + if (protocol == 'normal') { + normalDiv.style.display = 'block'; + torDiv.style.display = 'none'; + } + else if (protocol == 'tor') { + normalDiv.style.display = 'none'; + torDiv.style.display = 'block'; + } +} + wikipediaHelper.init().then(() => { disableWikipediaElement.checked = !wikipediaHelper.getDisable(); + let protocol = wikipediaHelper.getProtocol(); + protocolElement.value = protocol; + changeProtocolSettings(protocol); + commonHelper.processDefaultCustomInstances( 'wikiless', 'normal', @@ -18,4 +46,15 @@ wikipediaHelper.init().then(() => { wikipediaHelper.getWikilessNormalCustomRedirects, wikipediaHelper.setWikilessNormalCustomRedirects ) + + commonHelper.processDefaultCustomInstances( + 'wikiless', + 'tor', + wikipediaHelper, + document, + wikipediaHelper.getWikilessTorRedirectsChecks, + wikipediaHelper.setWikilessTorRedirectsChecks, + wikipediaHelper.getWikilessTorCustomRedirects, + wikipediaHelper.setWikilessTorCustomRedirects + ) }) \ No newline at end of file -- cgit 1.4.1