about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--background.js36
-rw-r--r--images/buy-me-a-coffee.pngbin8257 -> 5008 bytes
-rw-r--r--manifest.json2
4 files changed, 32 insertions, 10 deletions
diff --git a/README.md b/README.md
index 29c5a492..8435bff7 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
 # ![nitter-redirect](images/icon32.png) Privacy Redirect
 
-[![Buy me a coffee](images/buy-me-a-coffee.png)](https://www.buymeacoffee.com/SimonBrazell)
+[![Donate](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/SimonBrazell/donate) [![Buy me a coffee](images/buy-me-a-coffee.png)](https://www.buymeacoffee.com/SimonBrazell)
 
 -  [Chrome Extension](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb)
 -  [Firefox Add-on](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/)
 
-A simple web extension that redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/omarroth/invidious), [Bibliogram](https://github.com/cloudrac3r/bibliogram) & [OpenStreetMap](https://www.openstreetmap.org/).
+A web extension that redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives - [Nitter](https://github.com/zedeus/nitter), [Invidious](https://github.com/omarroth/invidious), [Bibliogram](https://github.com/cloudrac3r/bibliogram) & [OpenStreetMap](https://www.openstreetmap.org/).
 
 Allows for setting custom [Nitter](https://github.com/zedeus/nitter/wiki/Instances), [Invidious](https://github.com/omarroth/invidious/wiki/Invidious-Instances), [Bibliogram](https://github.com/cloudrac3r/bibliogram/wiki/Instances) & [OpenStreetMap](https://wiki.openstreetmap.org/wiki/Tile_servers) instances and toggling all redirects on & off.
 
diff --git a/background.js b/background.js
index 4811994f..33ff7a8b 100644
--- a/background.js
+++ b/background.js
@@ -145,10 +145,13 @@ function addressToLatLng(address, callback) {
   xmlhttp.send();
 }
 
-function redirectYouTube(url, type) {
+function redirectYouTube(url, initiator, type) {
   if (disableInvidious) {
     return null;
   }
+  if (initiator && (initiator.origin === invidiousInstance || youtubeDomains.includes(initiator.host))) {
+    return null;
+  }
   if (url.pathname.match(/iframe_api/)) {
     // Redirect requests for YouTube Player API to local files instead
     return browser.runtime.getURL('assets/iframe_api.js');
@@ -170,10 +173,13 @@ function redirectYouTube(url, type) {
   }
 }
 
-function redirectTwitter(url) {
+function redirectTwitter(url, initiator) {
   if (disableNitter) {
     return null;
   }
+  if (initiator && (initiator.origin === nitterInstance || twitterDomains.includes(initiator.host))) {
+    return null;
+  }
   if (url.host.split('.')[0] === 'pbs') {
     return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
   } else if (url.host.split('.')[0] === 'video') {
@@ -183,10 +189,13 @@ function redirectTwitter(url) {
   }
 }
 
-function redirectInstagram(url) {
+function redirectInstagram(url, initiator) {
   if (disableBibliogram) {
     return null;
   }
+  if (initiator && (initiator.origin === bibliogramInstance || initiator.host.match(instagramRegex))) {
+    return null;
+  }
   if (url.pathname === '/' || url.pathname.match(instagramPathsRegex)) {
     return `${bibliogramInstance}${url.pathname}${url.search}`;
   } else {
@@ -217,7 +226,19 @@ function redirectGoogleMaps(url) {
   params = `${params}&layers=${layers[url.searchParams.get('layer')] || layers['none']}`;
   // Handle Google Maps Embed API
   if (url.pathname.includes('/embed')) {
-    const query = url.searchParams.get('q') || url.searchParams.get('query');
+    let query = '';
+    if (url.searchParams.has('q')) {
+      query = url.searchParams.get('q');
+    } else if (url.searchParams.has('query')) {
+      query = url.searchParams.has('query');
+    } else if (url.searchParams.has('pb')) {
+      try {
+        query = url.searchParams.get('pb').split(/!2s(.*?)!/)[1];
+      } catch (error) {
+        console.error(error);
+        // Unable to find map marker in URL.
+      }
+    }
     let marker, bbox;
     addressToLatLng(query, (coords, boundingbox) => {
       marker = coords;
@@ -267,18 +288,19 @@ function redirectGoogleMaps(url) {
 browser.webRequest.onBeforeRequest.addListener(
   details => {
     const url = new URL(details.url);
+    let initiator = details.initiator && new URL(details.initiator);
     let redirect;
     if (youtubeDomains.includes(url.host)) {
       redirect = {
-        redirectUrl: redirectYouTube(url, details.type)
+        redirectUrl: redirectYouTube(url, initiator, details.type)
       };
     } else if (twitterDomains.includes(url.host)) {
       redirect = {
-        redirectUrl: redirectTwitter(url)
+        redirectUrl: redirectTwitter(url, initiator)
       };
     } else if (url.host.match(instagramRegex)) {
       redirect = {
-        redirectUrl: redirectInstagram(url)
+        redirectUrl: redirectInstagram(url, initiator)
       };
     } else if (url.href.match(googleMapsRegex)) {
       redirect = {
diff --git a/images/buy-me-a-coffee.png b/images/buy-me-a-coffee.png
index e0c8c111..1bb2ad61 100644
--- a/images/buy-me-a-coffee.png
+++ b/images/buy-me-a-coffee.png
Binary files differdiff --git a/manifest.json b/manifest.json
index fb5605a3..5a5ac3c5 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
 {
   "name": "Privacy Redirect",
   "description": "Redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives.",
-  "version": "1.1.17",
+  "version": "1.1.18",
   "manifest_version": 2,
   "background": {
     "scripts": [