From 0f30806ef56ecee5d33694514b65e69b2caf252c Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 14 Apr 2022 17:13:41 +0300 Subject: Adding speedtest #170. Adding Pug templates structure Signed-off-by: ManeraKai --- src/assets/images/librespeed-icon.svg | 497 ++++++++++++++++++++++++++++ src/assets/javascripts/helpers/speedtest.js | 173 ++++++++++ src/assets/javascripts/helpers/twitter.js | 2 - 3 files changed, 670 insertions(+), 2 deletions(-) create mode 100644 src/assets/images/librespeed-icon.svg create mode 100644 src/assets/javascripts/helpers/speedtest.js (limited to 'src/assets') diff --git a/src/assets/images/librespeed-icon.svg b/src/assets/images/librespeed-icon.svg new file mode 100644 index 00000000..8691d7a3 --- /dev/null +++ b/src/assets/images/librespeed-icon.svg @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/javascripts/helpers/speedtest.js b/src/assets/javascripts/helpers/speedtest.js new file mode 100644 index 00000000..1e2fddeb --- /dev/null +++ b/src/assets/javascripts/helpers/speedtest.js @@ -0,0 +1,173 @@ +window.browser = window.browser || window.chrome; + +import commonHelper from './common.js' + +const targets = [ + /^https?:\/{2}(www\.|)speedtest\.net\/$/ +]; + +let redirects = { + "librespeed": { + "normal": [ + "https://librespeed.org" + ], + "tor": [] + } +} + +const getRedirects = () => redirects; +const getCustomRedirects = function () { + return { + "librespeed": { + "normal": [...librespeedNormalRedirectsChecks, ...librespeedNormalCustomRedirects], + "tor": [] + }, + }; +}; + +function setRedirects(val) { + redirects.librespeed = val; + browser.storage.local.set({ speedtestRedirects: redirects }) + console.log("speedtestRedirects: ", val) + for (const item of librespeedNormalRedirectsChecks) + if (!redirects.librespeed.normal.includes(item)) { + var index = librespeedNormalRedirectsChecks.indexOf(item); + if (index !== -1) librespeedNormalRedirectsChecks.splice(index, 1); + } + setLibrespeedNormalRedirectsChecks(librespeedNormalRedirectsChecks); + + for (const item of librespeedTorRedirectsChecks) + if (!redirects.librespeed.normal.includes(item)) { + var index = librespeedTorRedirectsChecks.indexOf(item); + if (index !== -1) librespeedTorRedirectsChecks.splice(index, 1); + } + setLibrespeedTorRedirectsChecks(librespeedTorRedirectsChecks); +} + +let librespeedNormalRedirectsChecks; +const getLibrespeedNormalRedirectsChecks = () => librespeedNormalRedirectsChecks; +function setLibrespeedNormalRedirectsChecks(val) { + librespeedNormalRedirectsChecks = val; + browser.storage.local.set({ librespeedNormalRedirectsChecks }) + console.log("librespeedNormalRedirectsChecks: ", val) +} + +let librespeedTorRedirectsChecks; +const getLibrespeedTorRedirectsChecks = () => librespeedTorRedirectsChecks; +function setLibrespeedTorRedirectsChecks(val) { + librespeedTorRedirectsChecks = val; + browser.storage.local.set({ librespeedTorRedirectsChecks }) + console.log("librespeedTorRedirectsChecks: ", val) +} + +let librespeedNormalCustomRedirects = []; +const getLibrespeedNormalCustomRedirects = () => librespeedNormalCustomRedirects; +function setLibrespeedNormalCustomRedirects(val) { + librespeedNormalCustomRedirects = val; + browser.storage.local.set({ librespeedNormalCustomRedirects }) + console.log("librespeedNormalCustomRedirects: ", val) +} + +let librespeedTorCustomRedirects = []; +const getLibrespeedTorCustomRedirects = () => librespeedTorCustomRedirects; +function setLibrespeedTorCustomRedirects(val) { + librespeedTorCustomRedirects = val; + browser.storage.local.set({ librespeedTorCustomRedirects }) + console.log("librespeedTorCustomRedirects: ", val) +} + +let disable; +const getDisable = () => disable; +function setDisable(val) { + disable = val; + browser.storage.local.set({ disableSpeedtest: disable }) + console.log("disableSpeedtest", val); +} + +let protocol; +const getProtocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ speedtestProtocol: val }) + console.log("speedtestProtocol: ", val) +} + +function redirect(url, type, initiator) { + if (disable) return null; + if (initiator && ([...redirects.librespeed.normal, ...librespeedNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; + console.log("Librespeed!!"); + + if (type != "main_frame" && type != "sub_frame") return null; + + let instancesList; + if (protocol == 'normal') instancesList = [...librespeedNormalRedirectsChecks, ...librespeedNormalCustomRedirects]; + if (protocol == 'tor') instancesList = [...librespeedTorRedirectsChecks, ...librespeedTorCustomRedirects]; + if (instancesList.length === 0) return null; + let randomInstance = commonHelper.getRandomInstance(instancesList); + + return `${randomInstance}`; +} + +async function init() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disableSpeedtest", + "speedtestRedirects", + + "librespeedNormalRedirectsChecks", + "librespeedNormalCustomRedirects", + + "librespeedTorRedirectsChecks", + "librespeedTorCustomRedirects", + + "speedtestProtocol" + ], + r => { + disable = r.disableSpeedtest ?? true; + + protocol = r.speedtestProtocol ?? "normal"; + + if (r.speedtestRedirects) redirects = r.speedtestRedirects; + + librespeedNormalRedirectsChecks = r.librespeedNormalRedirectsChecks ?? [...redirects.librespeed.normal]; + librespeedNormalCustomRedirects = r.librespeedNormalCustomRedirects ?? []; + + librespeedTorRedirectsChecks = r.librespeedTorRedirectsChecks ?? [...redirects.librespeed.tor]; + librespeedTorCustomRedirects = r.librespeedTorCustomRedirects ?? []; + + resolve(); + } + ) + }); + }); +} + +export default { + + getRedirects, + getCustomRedirects, + setRedirects, + + getDisable, + setDisable, + + getProtocol, + setProtocol, + + getLibrespeedNormalRedirectsChecks, + setLibrespeedNormalRedirectsChecks, + getLibrespeedTorRedirectsChecks, + setLibrespeedTorRedirectsChecks, + + getLibrespeedTorCustomRedirects, + setLibrespeedTorCustomRedirects, + getLibrespeedNormalCustomRedirects, + setLibrespeedNormalCustomRedirects, + + redirect, + init, +}; diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index a333777d..e58af78b 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -277,7 +277,6 @@ function isNitter(url, type) { ].includes(protocolHost); } -let applyThemeToSites; function initNitterCookies() { if (enableCustomSettings) { let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects] @@ -410,7 +409,6 @@ async function init() { alwaysUsePreferred = r.alwaysUsePreferred ?? false; theme = r.theme ?? 'DEFAULT'; - applyThemeToSites = r.applyThemeToSites ?? false; redirects.nitter = dataJson.nitter; if (r.twitterRedirects) redirects = r.twitterRedirects; -- cgit 1.4.1