diff options
author | SimonBrazell <simon@brazell.com.au> | 2020-02-01 14:17:51 +1100 |
---|---|---|
committer | SimonBrazell <simon@brazell.com.au> | 2020-02-01 14:17:51 +1100 |
commit | ed3941ff7281254ddb9a7cb8acef3bbf4c1d5d0f (patch) | |
tree | c704845c829887f37b7ea9df455b5a4f6e4122b3 /background.js | |
parent | Fix embedded video redirects (diff) | |
download | libredirect-ed3941ff7281254ddb9a7cb8acef3bbf4c1d5d0f.zip |
Add support for Bibliogram redirects
Diffstat (limited to 'background.js')
-rw-r--r-- | background.js | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/background.js b/background.js index 8d6c6b3b..a3284889 100644 --- a/background.js +++ b/background.js @@ -1,23 +1,36 @@ 'use strict'; const nitterDefault = 'https://nitter.net'; +const twitterRegex = /((www|mobile)\.)?twitter\.com/; const invidiousDefault = 'https://invidio.us'; const youtubeRegex = /((www|m)\.)?youtube(-nocookie)?\.com/; -const twitterRegex = /((www|mobile)\.)?twitter\.com/; -const pathRegex = /^https?:\/\/[^\/]+([\S\s]*)/; +const bibliogramDefault = 'https://bibliogram.art'; +const instagramRegex = /((www|about|help)\.)?instagram\.com/; +const instagramPathsRegex = /(\/a|\/admin|\/api|\/favicon.ico|\/static|\/imageproxy|\/p|\/u|\/developer|\/about|\/legal|\/explore|\/director)/; let nitterInstance; let invidiousInstance; +let bibliogramInstance; let disableNitter; let disableInvidious; +let disableBibliogram; chrome.storage.sync.get( - ['disableNitter', 'disableInvidious', 'nitterInstance', 'invidiousInstance'], + [ + 'nitterInstance', + 'invidiousInstance', + 'bibliogramInstance', + 'disableNitter', + 'disableInvidious', + 'disableBibliogram' + ], result => { disableNitter = result.disableNitter; disableInvidious = result.disableInvidious; + disableBibliogram = result.disableBibliogram; nitterInstance = result.nitterInstance || nitterDefault; invidiousInstance = result.invidiousInstance || invidiousDefault; + bibliogramInstance = result.bibliogramInstance || bibliogramDefault; } ); @@ -28,32 +41,56 @@ chrome.storage.onChanged.addListener(changes => { if ('invidiousInstance' in changes) { invidiousInstance = changes.invidiousInstance.newValue || invidiousDefault; } + if ('bibliogramInstance' in changes) { + bibliogramInstance = changes.bibliogramInstance.newValue || bibliogramDefault; + } if ('disableNitter' in changes) { disableNitter = changes.disableNitter.newValue; } if ('disableInvidious' in changes) { disableInvidious = changes.disableInvidious.newValue; } + if ('disableBibliogram' in changes) { + disableBibliogram = changes.disableBibliogram.newValue; + } }); +function redirectBibliogram(url) { + if (url.pathname === '/' || url.pathname.match(instagramPathsRegex)) { + return bibliogramInstance + url.pathname; + } else { + // Redirect user profile requests to '/u/...' + return `${bibliogramInstance}/u${url.pathname}`; + } +} + chrome.webRequest.onBeforeRequest.addListener( details => { + const url = new URL(details.url); let redirect; - if (details.url.match(youtubeRegex)) { + if (url.host.match(youtubeRegex)) { if (!disableInvidious) { redirect = { - redirectUrl: invidiousInstance + details.url.match(pathRegex)[1] + redirectUrl: invidiousInstance + url.pathname }; } - } else if (details.url.match(twitterRegex)) { + } else if (url.host.match(twitterRegex)) { if (!disableNitter) { redirect = { - redirectUrl: nitterInstance + details.url.match(pathRegex)[1] + redirectUrl: nitterInstance + url.pathname + }; + } + } else if (url.host.match(instagramRegex)) { + if (!disableBibliogram) { + redirect = { + redirectUrl: redirectBibliogram(url) }; } } if (redirect) { - console.log('Redirecting', `"${details.url}"`, '=>', `"${redirect.redirectUrl}"`); + console.log( + 'Redirecting', `"${url.host}"`, '=>', `"${redirect.redirectUrl}"` + ); console.log('Details', details); } return redirect; |