From ae6f4f6a6cd9fbd5fe583f52782e94641c752706 Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Tue, 1 Sep 2020 17:26:23 +1000 Subject: Randomise instances when empty (#48) --- background.js | 91 +++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 33 deletions(-) (limited to 'background.js') diff --git a/background.js b/background.js index ffe1857e..3f5145cd 100644 --- a/background.js +++ b/background.js @@ -1,6 +1,5 @@ "use strict"; -const invidiousDefault = "https://invidious.snopyta.org"; const youtubeDomains = [ "m.youtube.com", "youtube.com", @@ -22,7 +21,6 @@ const invidiousInstances = [ "https://invidious.fdn.fr", "https://invidious.toot.koeln", ]; -const nitterDefault = "https://nitter.net"; const twitterDomains = [ "twitter.com", "www.twitter.com", @@ -30,7 +28,20 @@ const twitterDomains = [ "pbs.twimg.com", "video.twimg.com", ]; -const bibliogramDefault = "https://bibliogram.art"; +const nitterInstances = [ + "https://nitter.net", + "https://nitter.snopyta.org", + "https://nitter.42l.fr", + "https://nitter.nixnet.services", + "https://nitter.13ad.de", + "https://nitter.pussthecat.org", + "https://nitter.mastodont.cat", + "https://nitter.tedomum.net", + "https://nitter.cattube.org", + "https://nitter.fdn.fr", + "https://nitter.1d4.us", + "https://nitter.kavin.rocks", +]; const instagramDomains = [ "instagram.com", "www.instagram.com", @@ -64,6 +75,13 @@ const bibliogramBypassPaths = /\/(accounts\/|embeds?.js)/; const bibliogramInstances = [ "https://bibliogram.art", "https://bibliogram.snopyta.org", + "https://bibliogram.pussthecat.org", + "https://bibliogram.nixnet.services", + "https://bg.endl.site", + "https://bibliogram.13ad.de ", + "https://bibliogram.stemy.me ", + "https://bibliogram.hamster.dance", + "https://bibliogram.ggc-project.de", ]; const osmDefault = "https://openstreetmap.org"; const googleMapsRegex = /https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/; @@ -128,9 +146,9 @@ browser.storage.sync.get( disableInvidious = result.disableInvidious; disableBibliogram = result.disableBibliogram; disableOsm = result.disableOsm; - nitterInstance = result.nitterInstance || nitterDefault; - invidiousInstance = result.invidiousInstance || invidiousDefault; - bibliogramInstance = result.bibliogramInstance || bibliogramDefault; + nitterInstance = result.nitterInstance; + invidiousInstance = result.invidiousInstance; + bibliogramInstance = result.bibliogramInstance; osmInstance = result.osmInstance || osmDefault; alwaysProxy = result.alwaysProxy; onlyEmbeddedVideo = result.onlyEmbeddedVideo; @@ -150,14 +168,13 @@ browser.storage.sync.get( browser.storage.onChanged.addListener((changes) => { if ("nitterInstance" in changes) { - nitterInstance = changes.nitterInstance.newValue || nitterDefault; + nitterInstance = changes.nitterInstance.newValue; } if ("invidiousInstance" in changes) { - invidiousInstance = changes.invidiousInstance.newValue || invidiousDefault; + invidiousInstance = changes.invidiousInstance.newValue; } if ("bibliogramInstance" in changes) { - bibliogramInstance = - changes.bibliogramInstance.newValue || bibliogramDefault; + bibliogramInstance = changes.bibliogramInstance.newValue; } if ("osmInstance" in changes) { osmInstance = changes.osmInstance.newValue || osmDefault; @@ -205,6 +222,10 @@ browser.storage.onChanged.addListener((changes) => { } }); +function getRandomInstance(instanceList) { + return instanceList[~~(instanceList.length * Math.random())]; +} + function addressToLatLng(address, callback) { const xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = () => { @@ -248,6 +269,7 @@ function redirectYouTube(url, initiator, type) { if ( initiator && (initiator.origin === invidiousInstance || + invidiousInstances.includes(initiator.origin) || youtubeDomains.includes(initiator.host)) ) { return null; @@ -284,7 +306,9 @@ function redirectYouTube(url, initiator, type) { } url.searchParams.append("autoplay", invidiousAutoplay ? 1 : 0); - return `${invidiousInstance}${url.pathname}${url.search}`; + return `${invidiousInstance || getRandomInstance(invidiousInstances)}${ + url.pathname + }${url.search}`; } function redirectTwitter(url, initiator) { @@ -298,6 +322,7 @@ function redirectTwitter(url, initiator) { isFirefox() && initiator && (initiator.origin === nitterInstance || + nitterInstances.includes(initiator.origin) || twitterDomains.includes(initiator.host)) ) { browser.storage.sync.set({ @@ -306,15 +331,21 @@ function redirectTwitter(url, initiator) { return null; } if (url.host.split(".")[0] === "pbs") { - return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`; + return `${ + nitterInstance || getRandomInstance(nitterInstances) + }/pic/${encodeURIComponent(url.href)}`; } else if (url.host.split(".")[0] === "video") { - return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`; + return `${ + nitterInstance || getRandomInstance(nitterInstances) + }/gif/${encodeURIComponent(url.href)}`; } else if (url.pathname.includes("tweets")) { - return `${nitterInstance}${url.pathname.replace("/tweets", "")}${ - url.search - }`; + return `${ + nitterInstance || getRandomInstance(nitterInstances) + }${url.pathname.replace("/tweets", "")}${url.search}`; } else { - return `${nitterInstance}${url.pathname}${url.search}`; + return `${nitterInstance || getRandomInstance(nitterInstances)}${ + url.pathname + }${url.search}`; } } @@ -326,6 +357,7 @@ function redirectInstagram(url, initiator, type) { if ( initiator && (initiator.origin === bibliogramInstance || + bibliogramInstances.includes(initiator.origin) || instagramDomains.includes(initiator.host)) ) { return null; @@ -338,10 +370,14 @@ function redirectInstagram(url, initiator, type) { url.pathname === "/" || instagramReservedPaths.includes(url.pathname.split("/")[1]) ) { - return `${bibliogramInstance}${url.pathname}${url.search}`; + return `${bibliogramInstance || getRandomInstance(bibliogramInstances)}${ + url.pathname + }${url.search}`; } else { // Likely a user profile, redirect to '/u/...' - return `${bibliogramInstance}/u${url.pathname}${url.search}`; + return `${bibliogramInstance || getRandomInstance(bibliogramInstances)}/u${ + url.pathname + }${url.search}`; } } @@ -482,14 +518,7 @@ browser.webRequest.onBeforeRequest.addListener( ); browser.runtime.onInstalled.addListener((details) => { - if (details.reason === "install") { - browser.storage.sync.set({ - bibliogramInstance: - bibliogramInstances[~~(bibliogramInstances.length * Math.random())], - invidiousInstance: - invidiousInstances[~~(invidiousInstances.length * Math.random())], - }); - } else if (details.reason === "update") { + if (details.reason === "update") { browser.storage.sync.get( ["whitelist", "exceptions", "invidiousInstance"], (result) => { @@ -502,13 +531,9 @@ browser.runtime.onInstalled.addListener((details) => { whitelist: null, }); } - if ( - result.invidiousInstance === "https://invidio.us" || - result.invidiousInstance === null - ) { + if (result.invidiousInstance === "https://invidio.us") { browser.storage.sync.set({ - invidiousInstance: - invidiousInstances[~~(invidiousInstances.length * Math.random())], + invidiousInstance: null, }); } } -- cgit 1.4.1