diff options
Diffstat (limited to 'src/assets/javascripts/imdb.js')
-rw-r--r-- | src/assets/javascripts/imdb.js | 49 |
1 files changed, 31 insertions, 18 deletions
diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js index 0061b7e3..de1293af 100644 --- a/src/assets/javascripts/imdb.js +++ b/src/assets/javascripts/imdb.js @@ -3,15 +3,21 @@ window.browser = window.browser || window.chrome; import utils from './utils.js' const targets = [ - /^https?:\/{2}(www\.|)imdb\.com.*/ + /^https?:\/{2}(?:www\.|)imdb\.com.*/ ]; -let redirects = { - "libremdb": { - "normal": [], - "tor": [] +const frontends = new Array("libremdb") +const protocols = new Array("normal", "tor", "i2p", "loki") + +let redirects = {} + +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] } } + function setRedirects(val) { browser.storage.local.get('cloudflareBlackList', r => { redirects.libremdb = val; @@ -29,7 +35,8 @@ function setRedirects(val) { let disableImdb, - imdbProtocol, + protocol, + protocolFallback, imdbRedirects, libremdbNormalRedirectsChecks, libremdbNormalCustomRedirects, @@ -41,7 +48,8 @@ function init() { browser.storage.local.get( [ "disableImdb", - "imdbProtocol", + "protocol", + "protocolFallback", "imdbRedirects", "libremdbNormalRedirectsChecks", "libremdbNormalCustomRedirects", @@ -50,7 +58,8 @@ function init() { ], r => { disableImdb = r.disableImdb; - imdbProtocol = r.imdbProtocol; + protocol = r.protocol; + protocolFallback = r.protocolFallback; imdbRedirects = r.imdbRedirects; libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks; libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects; @@ -76,10 +85,12 @@ function redirect(url, type, initiator, disableOverride) { if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; if (!targets.some(rx => rx.test(url.href))) return; - let instancesList; - if (imdbProtocol == 'normal') instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; - if (imdbProtocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; - if (instancesList.length === 0) return; + let instancesList = []; + if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; + } + if (instancesList.length === 0) { return; } const randomInstance = utils.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}`; @@ -115,9 +126,11 @@ function switchInstance(url, disableOverride) { ]; if (!all.includes(protocolHost)) { resolve(); return; } - let instancesList; - if (imdbProtocol == 'normal') instancesList = [...libremdbNormalCustomRedirects, ...libremdbNormalRedirectsChecks]; - else if (imdbProtocol == 'tor') instancesList = [...libremdbTorCustomRedirects, ...libremdbTorRedirectsChecks]; + let instancesList = []; + if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; + if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { + instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; + } const i = instancesList.indexOf(protocolHost); if (i > -1) instancesList.splice(i, 1); @@ -132,11 +145,11 @@ function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); - redirects.libremdb = dataJson.libremdb; + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } browser.storage.local.set({ disableImdb: true, - imdbProtocol: "normal", - imdbRedirects: redirects, libremdbNormalRedirectsChecks: [...redirects.libremdb.normal], |