diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js new file mode 100644 index 00000000..f3f82967 --- /dev/null +++ b/src/assets/javascripts/helpers/imgur.js @@ -0,0 +1,114 @@ +import commonHelper from './common.js' + +const targets = [ + /^https?:\/\/(i|).?imgur.com/ +]; + +let redirects = { + "rimgo": { + "normal": [ + "https://i.bcow.xyz", + "https://rimgo.bcow.xyz", + "https://rimgo.pussthecat.org", + "https://img.riverside.rocks", + "https://rimgo.totaldarkness.net", + "https://rimgo.bus-hit.me" + ], + "onion": [ + "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", + "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" + ] + } +} + +const getRedirects = () => redirects; +function setRedirects(val) { + redirects.rimgo = val; + browser.storage.sync.set({ imgurRedirects: redirects }) + console.log("imgurRedirects: ", val) + for (const item of rimgoRedirectsChecks) + if (!redirects.rimgo.normal.includes(item)) { + var index = rimgoRedirectsChecks.indexOf(item); + if (index !== -1) rimgoRedirectsChecks.splice(index, 1); + } + setRimgoRedirectsChecks(rimgoRedirectsChecks); +} + +let rimgoRedirectsChecks; +const getRimgoRedirectsChecks = () => rimgoRedirectsChecks; +function setRimgoRedirectsChecks(val) { + rimgoRedirectsChecks = val; + browser.storage.sync.set({ rimgoRedirectsChecks }) + console.log("rimgoRedirectsChecks: ", val) +} + +let rimgoCustomRedirects = []; +const getRimgoCustomRedirects = () => rimgoCustomRedirects; +function setRimgoCustomRedirects(val) { + rimgoCustomRedirects = val; + browser.storage.sync.set({ rimgoCustomRedirects }) + console.log("rimgoCustomRedirects: ", val) +} + +let disableImgur; +const getDisableImgur = () => disableImgur; +function setDisableImgur(val) { + disableImgur = val; + browser.storage.sync.set({ disableImgur }) +} + +function redirect(url, initiator, type) { + + if (disableImgur) return null; + + if (url.pathname == "/") return null; + + if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return null; + + let instancesList = [...rimgoRedirectsChecks, ...rimgoCustomRedirects]; + if (instancesList.length === 0) return null; + let randomInstance = commonHelper.getRandomInstance(instancesList) + + if (initiator && (instancesList.includes(initiator.origin) || targets.includes(initiator.host))) return null; + + return `${randomInstance}${url.pathname}${url.search}`; +} + +function isImgur(url) { + return targets.some((rx) => rx.test(url.href)); +} + +async function init() { + let result = await browser.storage.sync.get([ + "disableImgur", + "imgurRedirects", + "rimgoRedirectsChecks", + "rimgoCustomRedirects", + ]) + disableImgur = result.disableImgur ?? false; + if (result.imgurRedirects) + redirects = result.imgurRedirects; + + rimgoRedirectsChecks = result.rimgoRedirectsChecks ?? [...redirects.rimgo.normal]; + rimgoCustomRedirects = result.rimgoCustomRedirects ?? []; +} + +export default { + targets, + + getRedirects, + setRedirects, + + getDisableImgur, + setDisableImgur, + + getRimgoRedirectsChecks, + setRimgoRedirectsChecks, + + getRimgoCustomRedirects, + setRimgoCustomRedirects, + + redirect, + isImgur, + init, +}; diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index bc5455f4..348313bb 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -89,7 +89,7 @@ function redirect(url, initiator, type) { } function isMedium(url) { - return targets.some((rx) => rx.test(url.href)); + return targets.some((rx) => rx.test(url.host)); } async function init() { diff --git a/src/assets/javascripts/helpers/rimgo.js b/src/assets/javascripts/helpers/rimgo.js deleted file mode 100644 index 829dd230..00000000 --- a/src/assets/javascripts/helpers/rimgo.js +++ /dev/null @@ -1,14 +0,0 @@ -let redirects = { - "normal": [ - "https://i.bcow.xyz", - "https://rimgo.bcow.xyz", - "https://rimgo.pussthecat.org", - "https://img.riverside.rocks", - "https://rimgo.totaldarkness.net", - "https://rimgo.bus-hit.me" - ], - "onion": [ - "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", - "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" - ] -} \ No newline at end of file diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 7ed4c8e7..e9d2f395 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -9,6 +9,7 @@ import translateHelper from "../../assets/javascripts/helpers/translate.js"; import mapsHelper from "../../assets/javascripts/helpers/maps.js"; import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js"; import mediumHelper from "../../assets/javascripts/helpers/medium.js"; +import imgurHelper from "../../assets/javascripts/helpers/imgur.js"; window.browser = window.browser || window.chrome; @@ -22,6 +23,7 @@ function wholeInit() { twitterHelper.init() wikipediaHelper.init() youtubeHelper.init() + imgurHelper.init() } wholeInit(); @@ -51,6 +53,8 @@ browser.webRequest.onBeforeRequest.addListener( else if (mediumHelper.isMedium(url)) newUrl = mediumHelper.redirect(url, initiator, details.type); + else if (imgurHelper.isImgur(url)) newUrl = imgurHelper.redirect(url, initiator, details.type); + else if (translateHelper.isTranslate(url)) newUrl = translateHelper.redirect(url, initiator); else if (searchHelper.isSearch(url)) newUrl = searchHelper.redirect(url, initiator) @@ -92,24 +96,25 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => { mightyList.push( ...youtubeHelper.getRedirects().invidious.normal, ...youtubeHelper.getRedirects().piped.normal, - + ...twitterHelper.getRedirects().nitter.normal, ...instagramHelper.getRedirects().bibliogram.normal, - + ...redditHelper.getRedirects().libreddit.normal, ...redditHelper.getRedirects().teddit.normal, redditHelper.getRedirects().desktop, redditHelper.getRedirects().mobile, - + ...searchHelper.getRedirects().searx.normal, ...searchHelper.getRedirects().whoogle.normal, - + ...translateHelper.getRedirects().simplyTranslate.normal, ...translateHelper.getRedirects().lingva.normal, - + ...mediumHelper.getRedirects().scribe.normal, - + ...imgurHelper.getRedirects().rimgo.normal, + ...wikipediaHelper.getRedirects().wikiless.normal ); @@ -128,9 +133,9 @@ browser.pageAction.onClicked.addListener((tab) => { ) newUrl = 'https://youtube.com'; - if (twitterHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://twitter.com'; + if (twitterHelper.getRedirects().nitter.normal.includes(protocolHost)) newUrl = 'https://twitter.com'; - if (instagramHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://instagram.com'; + if (instagramHelper.getRedirects().bibliogram.normal.includes(protocolHost)) newUrl = 'https://instagram.com'; if (redditHelper.getRedirects().libreddit.normal.includes(protocolHost) || redditHelper.getRedirects().teddit.normal.includes(protocolHost)) { if (tabUrl.pathname.startsWith('/img')) { @@ -151,9 +156,11 @@ browser.pageAction.onClicked.addListener((tab) => { translateHelper.getRedirects().lingva.normal.includes(protocolHost) ) newUrl = 'https://translate.google.com'; - if (mediumHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://medium.com'; + if (mediumHelper.getRedirects().scribe.normal.includes(protocolHost)) newUrl = 'https://medium.com'; - if (wikipediaHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://wikipedia.com'; + if (imgurHelper.getRedirects().rimgo.normal.includes(protocolHost)) newUrl = 'https://imgur.com'; + + if (wikipediaHelper.getRedirects().wikiless.normal.includes(protocolHost)) newUrl = 'https://wikipedia.com'; if (newUrl) browser.tabs.update({ url: tabUrl.href.replace(protocolHost, newUrl) }); }); diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html index 3a9540a8..5dff25b7 100644 --- a/src/pages/options/general/general.html +++ b/src/pages/options/general/general.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/imgur/imgur.html b/src/pages/options/imgur/imgur.html new file mode 100644 index 00000000..9fdedd2e --- /dev/null +++ b/src/pages/options/imgur/imgur.html @@ -0,0 +1,65 @@ + + + +
+ + + + + +