diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index afed137..685c709 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -13,12 +13,12 @@ name: "CodeQL" on: push: - branches: [ master ] + branches: [master] pull_request: # The branches below must be a subset of the branches above - branches: [ master ] + branches: [master] schedule: - - cron: '43 18 * * 3' + - cron: "43 18 * * 3" jobs: analyze: @@ -32,39 +32,39 @@ jobs: strategy: fail-fast: false matrix: - language: [ 'javascript' ] + language: ["javascript"] # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] # Learn more about CodeQL language support at https://git.io/codeql-language-support steps: - - name: Checkout repository - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v2 - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 - # âšī¸ Command-line programs to run using the OS shell. - # đ https://git.io/JvXDl + # âšī¸ Command-line programs to run using the OS shell. + # đ https://git.io/JvXDl - # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language + # âī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language - #- run: | - # make bootstrap - # make release + #- run: | + # make bootstrap + # make release - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c63281a..88edbe3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,21 +2,21 @@ name: instances-updater on: schedule: - - cron: '10 22 */3 * *' - + - cron: "10 22 */3 * *" + workflow_dispatch: jobs: build: runs-on: ubuntu-latest - steps: + steps: - name: get repo content uses: actions/checkout@v2 - name: setup python uses: actions/setup-python@v2 with: - python-version: '3.8' # install the python version needed + python-version: "3.8" # install the python version needed - name: install python packages run: | @@ -24,7 +24,7 @@ jobs: pip install requests bs4 colorama - name: run script run: python src/instances/get_instances.py - + - name: commit files run: | git config --local user.email "action@github.com" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 404ac8d..f31a693 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,6 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: - node-version: '16' + node-version: "16" - run: npm install - run: npm test diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..e10fcaa --- /dev/null +++ b/.prettierignore @@ -0,0 +1,11 @@ +web-ext-artifacts/ +.DS_Store +nod +node_modules +package-lock.json +src/instances/data.json +src/instances/blacklist.json +src/pages/options/*.html +src/pages/popup/*.html +src/_locales/ +.vscode diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..d0df3f3 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,23 @@ +{ + "semi": false, + "tabWidth": 2, + "useTabs": true, + "arrowParens": "avoid", + "printWidth": 200, + "overrides": [ + { + "files": ["*.js", "*.json"], + "options": { + "tabWidth": 2, + "singleQuote": false + } + }, + { + "files": ["*.html", "*.py"], + "options": { + "tabWidth": 4, + "singleQuote": true + } + } + ] +} diff --git a/Privacy-Policy.md b/Privacy-Policy.md index fe35754..5445fcc 100644 --- a/Privacy-Policy.md +++ b/Privacy-Policy.md @@ -1,11 +1,13 @@ ## Data collected -* LibRedirect does not collect any Personal Information of any kind. -* LibRedirect doesn't embed any kind of analytics in its code. -* All aspects of the extension work locally in your browser, with the exception of -OpenStreetMap (OSM) reverse geocoding, done via the [OSM Nomantim API](https://nominatim.org/release-docs/develop/api/Overview/), -used as part of OSM redirects, which can be disabled by toggling the OSM redirects. -* It also connects to [this url](https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json) to update the Instances List. Though this only gets triggered when the user presses the `Update Instances` button. -* For bibliogram instances. To set a cookie you should send an http request to the server as the server stores settings values itself and gives you a token to access them. + +- LibRedirect does not collect any Personal Information of any kind. +- LibRedirect doesn't embed any kind of analytics in its code. +- All aspects of the extension work locally in your browser, with the exception of + OpenStreetMap (OSM) reverse geocoding, done via the [OSM Nomantim API](https://nominatim.org/release-docs/develop/api/Overview/), + used as part of OSM redirects, which can be disabled by toggling the OSM redirects. +- It also connects to [this url](https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json) to update the Instances List. Though this only gets triggered when the user presses the `Update Instances` button. +- For bibliogram instances. To set a cookie you should send an http request to the server as the server stores settings values itself and gives you a token to access them. ## Future Changes + If we decide to change our privacy policy, we will post those changes on this page. diff --git a/README.md b/README.md index bf3be98..de3788b 100644 --- a/README.md +++ b/README.md @@ -8,10 +8,10 @@ A web extension that redirects YouTube, Twitter, Instagram... requests to altern [![Firefox Add-on](./img/badge-amo.png)](https://addons.mozilla.org/firefox/addon/libredirect/) - + - + @@ -42,6 +42,7 @@ Send Files => [Send](https://gitlab.com/timvisee/send) [FAQ](https://libredirect.github.io/faq.html) ## Donate + [![Liberapay](./img/liberapay.svg)](https://liberapay.com/LibRedirect) [![Patreon](./img/patreon.svg)](https://patreon.com/LibRedirect) [![Buy me a coffee](./img/bmc.svg)](https://www.buymeacoffee.com/libredirect) @@ -52,47 +53,59 @@ ETH: 0x896E5796Da76E49A400A9186E1c459CD2C64b4E8\ XMR: 4AM5CVfaGsnEXQQjZSzJvaWufe7pT86ubcZPr83fCjb2Hn3iwcForTWFy2Z3ugXcufUwHaGcucfPMFgPXBFSYGFvNrmV5XR ## Mirror Repos + [![GitHub](https://raw.githubusercontent.com/ManeraKai/manerakai/main/icons/github.svg)](https://github.com/libredirect/libredirect/) [![Codeberg](https://raw.githubusercontent.com/ManeraKai/manerakai/main/icons/codeberg.svg)](https://codeberg.org/LibRedirect/libredirect) ## Translate + [![Weblate](./img/weblate.svg)](https://hosted.weblate.org/projects/libredirect/extension) ## Development + ### Install Dependencies + [Node.js](https://nodejs.org/) latest LTS is recommended + ``` npm update npm install ``` If you are modifying any files ending with .pug, the pug cli needs to be installed with the following command (with root privileges): + ``` npm install -g pug-cli ``` -and then run `./script.sh` to generate pages in the background. + +and then run `npm run pug` to generate pages in the background. ### Build + ``` npm run build ``` ### Test + ``` npm run test ``` ### Test in Firefox + ``` npm run start ``` ### Install temporarily + open `about:addons`\ click on the settings button below the addon search bar and select `debug add-on`\ press `load temporarily addon` ### Install in Firefox ESR, Developer Edition, Nightly + open `about:config`\ set `xpinstall.signatures.required` to `false`\ open `about:addons`\ @@ -100,6 +113,7 @@ click on the gear shaped `settings` button and select `Install Add-on From File. select `libredirect-VERSION.zip` from `web-ext-artifacts` folder ### Install in Chromium browsers + open `chrome://extensions`\ enable `dev mode`\ select `load unpacked extension`\ diff --git a/chromium.md b/chromium.md index 1825d78..9b7842f 100644 --- a/chromium.md +++ b/chromium.md @@ -1,4 +1,5 @@ ## Linux + - Download the latest `.crx` file: [libredirect-2.2.1.crx](https://github.com/libredirect/libredirect/releases/download/v2.2.1/libredirect-2.2.1.crx) - Open `chrome://extensions` - Enable `dev mode` @@ -8,6 +9,7 @@ Updates are automatic ## Windows, MacOS + - Download the latest release [libredirect-2.2.1.zip](https://github.com/libredirect/libredirect/releases/download/v2.2.1/libredirect-2.2.1.zip) - Unzip it with `Auto detect subfolder` - Open `chrome://extensions` diff --git a/package.json b/package.json index 2f8f9ab..e6214c8 100644 --- a/package.json +++ b/package.json @@ -1,29 +1,33 @@ { - "name": "libredirect", - "description": "Redirects YouTube, Twitter, Instagram and more to privacy friendly frontends.", - "engines": { - "node": ">=16.13.1", - "npm": ">=8.1.2" - }, - "scripts": { - "start": "web-ext run --browser-console --source-dir ./src/", - "build": "web-ext build --overwrite-dest --source-dir ./src/", - "test": "web-ext lint --source-dir ./src/ || true" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/LibRedirect/LibRedirect.git" - }, - "author": "LibRedirect", - "license": "GPL-3.0-only", - "bugs": { - "url": "https://github.com/LibRedirect/LibRedirect/issues" - }, - "homepage": "https://github.com/LibRedirect/LibRedirect", - "devDependencies": { - "web-ext": "^6.7.0" - }, - "dependencies": { - "buffer": "^6.0.3" - } + "name": "libredirect", + "description": "Redirects YouTube, Twitter, Instagram and more to privacy friendly frontends.", + "engines": { + "node": ">=16.13.1", + "npm": ">=8.1.2" + }, + "scripts": { + "start": "web-ext run --browser-console --source-dir ./src/", + "build": "web-ext build --overwrite-dest --source-dir ./src/", + "test": "web-ext lint --source-dir ./src/ || true", + "pug": "pug ./src/pages/options/*.pug ./src/pages/popup/ -P -w", + "prettier": "npx prettier --write .", + "instances": "python3 src/instances/get_instances.py; git update-index --assume-unchanged src/instances/blacklist.json src/instances/data.json" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/LibRedirect/LibRedirect.git" + }, + "author": "LibRedirect", + "license": "GPL-3.0-only", + "bugs": { + "url": "https://github.com/LibRedirect/LibRedirect/issues" + }, + "homepage": "https://github.com/LibRedirect/LibRedirect", + "devDependencies": { + "prettier": "2.7.1", + "web-ext": "^6.7.0" + }, + "dependencies": { + "buffer": "^6.0.3" + } } diff --git a/script.sh b/script.sh deleted file mode 100755 index 00914fd..0000000 --- a/script.sh +++ /dev/null @@ -1 +0,0 @@ -pug ./src/pages/options/*.pug ./src/pages/popup/ -P -w \ No newline at end of file diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js index 1c27a55..0b34c14 100644 --- a/src/assets/javascripts/general.js +++ b/src/assets/javascripts/general.js @@ -1,78 +1,66 @@ -"use strict"; -window.browser = window.browser || window.chrome; +"use strict" +window.browser = window.browser || window.chrome function isException(url) { - for (const item of exceptions.url) - if (item == `${url.protocol}//${url.host}`) return true; - for (const item of exceptions.regex) - if (new RegExp(item).test(url.href)) return true; - return false; + for (const item of exceptions.url) if (item == `${url.protocol}//${url.host}`) return true + for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true + return false } -let exceptions; +let exceptions function init() { - browser.storage.local.get( - 'exceptions', - r => { - exceptions = r.exceptions; - } - ) + browser.storage.local.get("exceptions", r => { + exceptions = r.exceptions + }) } -init(); +init() browser.storage.onChanged.addListener(init) async function initDefaults() { - return new Promise(resolve => - browser.storage.local.set({ - exceptions: { - "url": [], - "regex": [], - }, - theme: "DEFAULT", - popupFrontends: [ - "youtube", - "twitter", - "instagram", - "tiktok", - "imgur", - "reddit", - "quora", - "translate", - "maps", - ], - autoRedirect: false, - firstPartyIsolate: false, - protocol: "normal", - protocolFallback: true - }, () => resolve()) - ) + return new Promise(resolve => + browser.storage.local.set( + { + exceptions: { + url: [], + regex: [], + }, + theme: "DEFAULT", + popupFrontends: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"], + autoRedirect: false, + firstPartyIsolate: false, + protocol: "normal", + protocolFallback: true, + }, + () => resolve() + ) + ) } const allPopupFrontends = [ - "youtube", - "youtubeMusic", - "twitter", - "instagram", - "tiktok", - "imgur", - "reddit", - "search", - "translate", - "maps", - "wikipedia", - "medium", - "quora", - "imdb", - "reuters", - "peertube", - "lbry", - "sendTargets" -]; + "youtube", + "youtubeMusic", + "twitter", + "instagram", + "tiktok", + "imgur", + "reddit", + "search", + "translate", + "maps", + "wikipedia", + "medium", + "quora", + "imdb", + "reuters", + "peertube", + "lbry", + "sendTargets", +] export default { - isException, - initDefaults, - allPopupFrontends, + isException, + initDefaults, + allPopupFrontends, } diff --git a/src/assets/javascripts/imdb.js b/src/assets/javascripts/imdb.js index 2a8ac2f..9981f1b 100644 --- a/src/assets/javascripts/imdb.js +++ b/src/assets/javascripts/imdb.js @@ -1,10 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(?:www\.|)imdb\.com.*/ -]; +const targets = [/^https?:\/{2}(?:www\.|)imdb\.com.*/] const frontends = new Array("libremdb") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -12,182 +10,197 @@ 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]] = [] - } + 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; - libremdbNormalRedirectsChecks = [...redirects.libremdb.normal]; - for (const instance of r.cloudflareBlackList) { - const a = libremdbNormalRedirectsChecks.indexOf(instance); - if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - imdbRedirects: redirects, - libremdbNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.libremdb = val + libremdbNormalRedirectsChecks = [...redirects.libremdb.normal] + for (const instance of r.cloudflareBlackList) { + const a = libremdbNormalRedirectsChecks.indexOf(instance) + if (a > -1) libremdbNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + imdbRedirects: redirects, + libremdbNormalRedirectsChecks, + }) + }) } -let - disableImdb, - protocol, - protocolFallback, - imdbRedirects, - libremdbNormalRedirectsChecks, - libremdbNormalCustomRedirects, - libremdbTorRedirectsChecks, - libremdbTorCustomRedirects, - libremdbI2pCustomRedirects, - libremdbLokiCustomRedirects; +let disableImdb, + protocol, + protocolFallback, + imdbRedirects, + libremdbNormalRedirectsChecks, + libremdbNormalCustomRedirects, + libremdbTorRedirectsChecks, + libremdbTorCustomRedirects, + libremdbI2pCustomRedirects, + libremdbLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableImdb", - "protocol", - "protocolFallback", - "imdbRedirects", - "libremdbNormalRedirectsChecks", - "libremdbNormalCustomRedirects", - "libremdbTorRedirectsChecks", - "libremdbTorCustomRedirects", - "libremdbI2pCustomRedirects", - "libremdbLokiCustomRedirects" - ], - r => { - disableImdb = r.disableImdb; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - imdbRedirects = r.imdbRedirects; - libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks; - libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects; - libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks; - libremdbTorCustomRedirects = r.libremdbTorCustomRedirects; - libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects; - libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableImdb", + "protocol", + "protocolFallback", + "imdbRedirects", + "libremdbNormalRedirectsChecks", + "libremdbNormalCustomRedirects", + "libremdbTorRedirectsChecks", + "libremdbTorCustomRedirects", + "libremdbI2pCustomRedirects", + "libremdbLokiCustomRedirects", + ], + r => { + disableImdb = r.disableImdb + protocol = r.protocol + protocolFallback = r.protocolFallback + imdbRedirects = r.imdbRedirects + libremdbNormalRedirectsChecks = r.libremdbNormalRedirectsChecks + libremdbNormalCustomRedirects = r.libremdbNormalCustomRedirects + libremdbTorRedirectsChecks = r.libremdbTorRedirectsChecks + libremdbTorCustomRedirects = r.libremdbTorCustomRedirects + libremdbI2pCustomRedirects = r.libremdbI2pCustomRedirects + libremdbLokiCustomRedirects = r.libremdbLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableImdb && !disableOverride) return; - if (url.pathname == "/") return; - if (type != "main_frame") return; - const all = [ - ...imdbRedirects.libremdb.normal, - ...libremdbNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (disableImdb && !disableOverride) return + if (url.pathname == "/") return + if (type != "main_frame") return + const all = [...imdbRedirects.libremdb.normal, ...libremdbNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects] + else 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}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(url); - const all = [ - ...imdbRedirects.libremdb.normal, - ...imdbRedirects.libremdb.tor, - ...libremdbNormalCustomRedirects, - ...libremdbTorCustomRedirects, - ...libremdbI2pCustomRedirects, - ...libremdbLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(url) + const all = [ + ...imdbRedirects.libremdb.normal, + ...imdbRedirects.libremdb.tor, + ...libremdbNormalCustomRedirects, + ...libremdbTorCustomRedirects, + ...libremdbI2pCustomRedirects, + ...libremdbLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } - resolve(`https://imdb.com${url.pathname}${url.search}`); - }) + resolve(`https://imdb.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableImdb && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...imdbRedirects.libremdb.tor, - ...imdbRedirects.libremdb.normal, + return new Promise(async resolve => { + await init() + if (disableImdb && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [ + ...imdbRedirects.libremdb.tor, + ...imdbRedirects.libremdb.normal, - ...libremdbNormalCustomRedirects, - ...libremdbTorCustomRedirects, - ...libremdbI2pCustomRedirects, - ...libremdbLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + ...libremdbNormalCustomRedirects, + ...libremdbTorCustomRedirects, + ...libremdbI2pCustomRedirects, + ...libremdbLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...libremdbLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...libremdbI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...libremdbTorRedirectsChecks, ...libremdbTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...libremdbNormalRedirectsChecks, ...libremdbNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...libremdbLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...libremdbI2pCustomRedirects] + else 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); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.set({ - disableImdb: true, - imdbRedirects: redirects, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableImdb: true, + imdbRedirects: redirects, - libremdbNormalRedirectsChecks: [...redirects.libremdb.normal], - libremdbNormalCustomRedirects: [], + libremdbNormalRedirectsChecks: [...redirects.libremdb.normal], + libremdbNormalCustomRedirects: [], - libremdbTorRedirectsChecks: [...redirects.libremdb.tor], - libremdbTorCustomRedirects: [], + libremdbTorRedirectsChecks: [...redirects.libremdb.tor], + libremdbTorCustomRedirects: [], - libremdbI2pRedirectsChecks: [], - libremdbI2pCustomRedirects: [], + libremdbI2pRedirectsChecks: [], + libremdbI2pCustomRedirects: [], - libremdbLokiRedirectsChecks: [], - libremdbLokiCustomRedirects: [] - }, () => resolve()); - }); - }) + libremdbLokiRedirectsChecks: [], + libremdbLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, + setRedirects, - redirect, - reverse, - switchInstance, + redirect, + reverse, + switchInstance, - initDefaults -}; + initDefaults, +} diff --git a/src/assets/javascripts/imgur.js b/src/assets/javascripts/imgur.js index f373276..9ccd24a 100644 --- a/src/assets/javascripts/imgur.js +++ b/src/assets/javascripts/imgur.js @@ -1,6 +1,6 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" const targets = /^https?:\/{2}([im]\.)?imgur\.(com|io)(\/|$)/ @@ -10,91 +10,95 @@ 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]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } function setRedirects() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.rimgo = dataJson.rimgo; + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + redirects.rimgo = dataJson.rimgo - rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]; - rimgoTorRedirectsChecks = [...redirects.rimgo.tor]; - rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p]; + rimgoNormalRedirectsChecks = [...redirects.rimgo.normal] + rimgoTorRedirectsChecks = [...redirects.rimgo.tor] + rimgoI2pRedirectsChecks = [...redirects.rimgo.i2p] - for (const instance of r.cloudflareBlackList) { - const a = rimgoNormalRedirectsChecks.indexOf(instance); - if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1); + for (const instance of r.cloudflareBlackList) { + const a = rimgoNormalRedirectsChecks.indexOf(instance) + if (a > -1) rimgoNormalRedirectsChecks.splice(a, 1) - const b = rimgoTorRedirectsChecks.indexOf(instance); - if (b > -1) rimgoTorRedirectsChecks.splice(b, 1); + const b = rimgoTorRedirectsChecks.indexOf(instance) + if (b > -1) rimgoTorRedirectsChecks.splice(b, 1) - const c = rimgoI2pRedirectsChecks.indexOf(instance); - if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1); - } + const c = rimgoI2pRedirectsChecks.indexOf(instance) + if (c > -1) rimgoI2pRedirectsChecks.splice(c, 1) + } - browser.storage.local.set({ - imgurRedirects: redirects, - rimgoNormalRedirectsChecks, - rimgoTorRedirectsChecks, - rimgoI2pRedirectsChecks, - }, () => resolve()); - }) - }) + browser.storage.local.set( + { + imgurRedirects: redirects, + rimgoNormalRedirectsChecks, + rimgoTorRedirectsChecks, + rimgoI2pRedirectsChecks, + }, + () => resolve() + ) + }) + }) } -let - disableImgur, - imgurRedirects, - protocol, - protocolFallback, - rimgoNormalRedirectsChecks, - rimgoNormalCustomRedirects, - rimgoTorRedirectsChecks, - rimgoTorCustomRedirects, - rimgoI2pRedirectsChecks, - rimgoI2pCustomRedirects, - rimgoLokiCustomRedirects; +let disableImgur, + imgurRedirects, + protocol, + protocolFallback, + rimgoNormalRedirectsChecks, + rimgoNormalCustomRedirects, + rimgoTorRedirectsChecks, + rimgoTorCustomRedirects, + rimgoI2pRedirectsChecks, + rimgoI2pCustomRedirects, + rimgoLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableImgur", - "imgurRedirects", - "protocol", - "protocolFallback", - "rimgoNormalRedirectsChecks", - "rimgoNormalCustomRedirects", - "rimgoTorRedirectsChecks", - "rimgoTorCustomRedirects", - "rimgoI2pRedirectsChecks", - "rimgoI2pCustomRedirects", - "rimgoLokiCustomRedirects" - ], - r => { - disableImgur = r.disableImgur; - imgurRedirects = r.imgurRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks; - rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects; - rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks; - rimgoTorCustomRedirects = r.rimgoTorCustomRedirects; - rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks; - rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects; - rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableImgur", + "imgurRedirects", + "protocol", + "protocolFallback", + "rimgoNormalRedirectsChecks", + "rimgoNormalCustomRedirects", + "rimgoTorRedirectsChecks", + "rimgoTorCustomRedirects", + "rimgoI2pRedirectsChecks", + "rimgoI2pCustomRedirects", + "rimgoLokiCustomRedirects", + ], + r => { + disableImgur = r.disableImgur + imgurRedirects = r.imgurRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks + rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects + rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks + rimgoTorCustomRedirects = r.rimgoTorCustomRedirects + rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks + rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects + rimgoLokiCustomRedirects = r.rimgoLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) // https://imgur.com/gallery/s4WXQmn @@ -104,108 +108,127 @@ browser.storage.onChanged.addListener(init) // https://i.imgur.com/CFSQArP.jpeg function all() { - return [ - ...imgurRedirects.rimgo.normal, - ...imgurRedirects.rimgo.tor, - ...imgurRedirects.rimgo.i2p, - ...rimgoNormalCustomRedirects, - ...rimgoTorCustomRedirects, - ...rimgoI2pCustomRedirects, - ...rimgoLokiCustomRedirects - ]; + return [ + ...imgurRedirects.rimgo.normal, + ...imgurRedirects.rimgo.tor, + ...imgurRedirects.rimgo.i2p, + ...rimgoNormalCustomRedirects, + ...rimgoTorCustomRedirects, + ...rimgoI2pCustomRedirects, + ...rimgoLokiCustomRedirects, + ] } function redirect(url, type, initiator, disableOverride) { - if (disableImgur && !disableOverride) return; - if (url.pathname == "/" && !disableOverride) return; - if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media",].includes(type)) return; - if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return; - if (!targets.test(url.href)) return; - if (url.pathname.includes("delete/")) return; + if (disableImgur && !disableOverride) return + if (url.pathname == "/" && !disableOverride) return + if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return + if (initiator && (all().includes(initiator.origin) || targets.test(initiator.host))) return + if (!targets.test(url.href)) return + if (url.pathname.includes("delete/")) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - const randomInstance = utils.getRandomInstance(instancesList); - return `${randomInstance}${url.pathname}${url.search}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}${url.search}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - resolve(`https://imgur.com${url.pathname}${url.search}`); - }) + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + resolve(`https://imgur.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableImgur && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList = []; - if (protocol == 'loki') instancesList = [...rimgoLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; - } + return new Promise(async resolve => { + await init() + if (disableImgur && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + let instancesList = [] + if (protocol == "loki") instancesList = [...rimgoLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...rimgoI2pCustomRedirects, ...rimgoI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', async r => { - rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]; - for (const instance of r.cloudflareBlackList) { - const i = rimgoNormalRedirectsChecks.indexOf(instance); - if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableImgur: false, - imgurRedirects: redirects, + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + rimgoNormalRedirectsChecks = [...redirects.rimgo.normal] + for (const instance of r.cloudflareBlackList) { + const i = rimgoNormalRedirectsChecks.indexOf(instance) + if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableImgur: false, + imgurRedirects: redirects, - rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks, - rimgoNormalCustomRedirects: [], + rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks, + rimgoNormalCustomRedirects: [], - rimgoTorRedirectsChecks: [...redirects.rimgo.tor], - rimgoTorCustomRedirects: [], + rimgoTorRedirectsChecks: [...redirects.rimgo.tor], + rimgoTorCustomRedirects: [], - rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], - rimgoI2pCustomRedirects: [], + rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], + rimgoI2pCustomRedirects: [], - rimgoLokiRedirectsChecks: [...redirects.rimgo.loki], - rimgoLokiCustomRedirects: [] - }, () => resolve()); - }); - }); - }); + rimgoLokiRedirectsChecks: [...redirects.rimgo.loki], + rimgoLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - redirect, - reverse, - initDefaults, - switchInstance, -}; + setRedirects, + redirect, + reverse, + initDefaults, + switchInstance, +} diff --git a/src/assets/javascripts/instagram.js b/src/assets/javascripts/instagram.js index 182ff4d..2e4503e 100644 --- a/src/assets/javascripts/instagram.js +++ b/src/assets/javascripts/instagram.js @@ -1,200 +1,208 @@ -window.browser = window.browser || window.chrome; -import utils from './utils.js' +window.browser = window.browser || window.chrome +import utils from "./utils.js" -const targets = [ - "instagram.com", - "www.instagram.com", -]; +const targets = ["instagram.com", "www.instagram.com"] const frontends = new Array("bibliogram") const protocols = new Array("normal", "tor", "i2p", "loki") -let redirects = {}; +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]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } function setRedirects(val) { - browser.storage.local.get('cloudflareBlackList', async r => { - redirects.bibliogram = val; - bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]; - for (const instance of r.cloudflareBlackList) { - const a = bibliogramNormalRedirectsChecks.indexOf(instance); - if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - instagramRedirects: redirects, - bibliogramNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", async r => { + redirects.bibliogram = val + bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal] + for (const instance of r.cloudflareBlackList) { + const a = bibliogramNormalRedirectsChecks.indexOf(instance) + if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + instagramRedirects: redirects, + bibliogramNormalRedirectsChecks, + }) + }) } -let - disableInstagram, - protocol, - protocolFallback, - instagramRedirects, - bibliogramNormalRedirectsChecks, - bibliogramTorRedirectsChecks, - bibliogramNormalCustomRedirects, - bibliogramTorCustomRedirects, - bibliogramI2pCustomRedirects, - bibliogramLokiCustomRedirects; +let disableInstagram, + protocol, + protocolFallback, + instagramRedirects, + bibliogramNormalRedirectsChecks, + bibliogramTorRedirectsChecks, + bibliogramNormalCustomRedirects, + bibliogramTorCustomRedirects, + bibliogramI2pCustomRedirects, + bibliogramLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableInstagram", - "protocol", - "protocolFallback", - "instagramRedirects", - "bibliogramNormalRedirectsChecks", - "bibliogramTorRedirectsChecks", - "bibliogramNormalCustomRedirects", - "bibliogramTorCustomRedirects", - "bibliogramI2pCustomRedirects", - "bibliogramLokiCustomRedirects" - ], - r => { - disableInstagram = r.disableInstagram; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - instagramRedirects = r.instagramRedirects; - bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks; - bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks; - bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects; - bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects; - bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects; - bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableInstagram", + "protocol", + "protocolFallback", + "instagramRedirects", + "bibliogramNormalRedirectsChecks", + "bibliogramTorRedirectsChecks", + "bibliogramNormalCustomRedirects", + "bibliogramTorCustomRedirects", + "bibliogramI2pCustomRedirects", + "bibliogramLokiCustomRedirects", + ], + r => { + disableInstagram = r.disableInstagram + protocol = r.protocol + protocolFallback = r.protocolFallback + instagramRedirects = r.instagramRedirects + bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks + bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks + bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects + bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects + bibliogramI2pCustomRedirects = r.bibliogramI2pCustomRedirects + bibliogramLokiCustomRedirects = r.bibliogramLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function all() { - return [ - ...instagramRedirects.bibliogram.normal, - ...instagramRedirects.bibliogram.tor, - ...bibliogramNormalCustomRedirects, - ...bibliogramTorCustomRedirects, - ...bibliogramI2pCustomRedirects, - ...bibliogramLokiCustomRedirects - ] + return [ + ...instagramRedirects.bibliogram.normal, + ...instagramRedirects.bibliogram.tor, + ...bibliogramNormalCustomRedirects, + ...bibliogramTorCustomRedirects, + ...bibliogramI2pCustomRedirects, + ...bibliogramLokiCustomRedirects, + ] } function redirect(url, type, initiator, disableOverride) { - if (disableInstagram && !disableOverride) return; - if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB'; - if (!targets.includes(url.host)) return; - if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return; + if (disableInstagram && !disableOverride) return + if (initiator && all().includes(initiator.origin)) return "BYPASSTAB" + if (!targets.includes(url.host)) return + if (!["main_frame", "sub_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return - const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/]; - if (bypassPaths.some(rx => rx.test(url.pathname))) return; + const bypassPaths = [/about/, /explore/, /support/, /press/, /api/, /privacy/, /safety/, /admin/, /\/(accounts\/|embeds?.js)/] + if (bypassPaths.some(rx => rx.test(url.pathname))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } - let randomInstance = utils.getRandomInstance(instancesList) + let instancesList = [] + if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } + let randomInstance = utils.getRandomInstance(instancesList) - const reservedPaths = ["u", "p", "privacy",]; - if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1])) - return `${randomInstance}${url.pathname}${url.search}`; - if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv")) - return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, '')}${url.search}`; - else - return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...' + const reservedPaths = ["u", "p", "privacy"] + if (url.pathname === "/" || reservedPaths.includes(url.pathname.split("/")[1])) return `${randomInstance}${url.pathname}${url.search}` + if (url.pathname.startsWith("/reel") || url.pathname.startsWith("/tv")) return `${randomInstance}/p${url.pathname.replace(/\/reel|\/tv/i, "")}${url.search}` + else return `${randomInstance}/u${url.pathname}${url.search}` // Likely a user profile, redirect to '/u/...' } function reverse(url) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } - if (url.pathname.startsWith('/p')) resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`); - if (url.pathname.startsWith('/u')) resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`); - resolve(`https://instagram.com${url.pathname}${url.search}`); - }) + if (url.pathname.startsWith("/p")) resolve(`https://instagram.com${url.pathname.replace("/p", "")}${url.search}`) + if (url.pathname.startsWith("/u")) resolve(`https://instagram.com${url.pathname.replace("/u", "")}${url.search}`) + resolve(`https://instagram.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableInstagram && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + if (disableInstagram && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...bibliogramLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...bibliogramI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...bibliogramLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...bibliogramI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...bibliogramTorRedirectsChecks, ...bibliogramTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', r => { - bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]; - for (const instance of r.cloudflareBlackList) { - const i = bibliogramNormalRedirectsChecks.indexOf(instance); - if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableInstagram: false, - instagramRedirects: redirects, + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", r => { + bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal] + for (const instance of r.cloudflareBlackList) { + const i = bibliogramNormalRedirectsChecks.indexOf(instance) + if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set({ + disableInstagram: false, + instagramRedirects: redirects, - bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks, - bibliogramNormalCustomRedirects: [], + bibliogramNormalRedirectsChecks: bibliogramNormalRedirectsChecks, + bibliogramNormalCustomRedirects: [], - bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor], - bibliogramTorCustomRedirects: [], + bibliogramTorRedirectsChecks: [...redirects.bibliogram.tor], + bibliogramTorCustomRedirects: [], - bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p], - bibliogramI2pCustomRedirects: [], + bibliogramI2pRedirectsChecks: [...redirects.bibliogram.i2p], + bibliogramI2pCustomRedirects: [], - bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki], - bibliogramLokiCustomRedirects: [] - }) - resolve(); - } - ) - }) - }) + bibliogramLokiRedirectsChecks: [...redirects.bibliogram.loki], + bibliogramLokiCustomRedirects: [], + }) + resolve() + }) + }) + }) } export default { - setRedirects, - reverse, - redirect, - initDefaults, - switchInstance, -}; + setRedirects, + reverse, + redirect, + initDefaults, + switchInstance, +} diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js index cfdf1bb..7f39b73 100644 --- a/src/assets/javascripts/lbry.js +++ b/src/assets/javascripts/lbry.js @@ -1,8 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -let targets = ["odysee.com"]; +let targets = ["odysee.com"] const frontends = new Array("librarian") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -10,160 +10,166 @@ 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]] = [] - } + 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.librarian = val; - librarianNormalRedirectsChecks = [...redirects.librarian.normal]; - for (const instance of r.cloudflareBlackList) { - const a = librarianNormalRedirectsChecks.indexOf(instance); - if (a > -1) librarianNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - lbryTargetsRedirects: redirects, - librarianNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.librarian = val + librarianNormalRedirectsChecks = [...redirects.librarian.normal] + for (const instance of r.cloudflareBlackList) { + const a = librarianNormalRedirectsChecks.indexOf(instance) + if (a > -1) librarianNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + lbryTargetsRedirects: redirects, + librarianNormalRedirectsChecks, + }) + }) } -let - disableLbryTargets, - protocol, - protocolFallback, - lbryTargetsRedirects, - librarianNormalRedirectsChecks, - librarianNormalCustomRedirects, - librarianTorRedirectsChecks, - librarianTorCustomRedirects, - librarianI2pRedirectsChecks, - librarianI2pCustomRedirects, - librarianLokiCustomRedirects; +let disableLbryTargets, + protocol, + protocolFallback, + lbryTargetsRedirects, + librarianNormalRedirectsChecks, + librarianNormalCustomRedirects, + librarianTorRedirectsChecks, + librarianTorCustomRedirects, + librarianI2pRedirectsChecks, + librarianI2pCustomRedirects, + librarianLokiCustomRedirects function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableLbryTargets", - "protocol", - "protocolFallback", - "lbryTargetsRedirects", - "librarianNormalRedirectsChecks", - "librarianNormalCustomRedirects", - "librarianTorRedirectsChecks", - "librarianTorCustomRedirects", - "librarianI2pRedirectsChecks", - "librarianI2pCustomRedirects", - "librarianLokiCustomRedirects" - ], - r => { - disableLbryTargets = r.disableLbryTargets; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - lbryTargetsRedirects = r.lbryTargetsRedirects; - librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks; - librarianNormalCustomRedirects = r.librarianNormalCustomRedirects; - librarianTorRedirectsChecks = r.librarianTorRedirectsChecks; - librarianTorCustomRedirects = r.librarianTorCustomRedirects; - librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks; - librarianI2pCustomRedirects = r.librarianI2pCustomRedirects; - librarianLokiCustomRedirects = r.librarianLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableLbryTargets", + "protocol", + "protocolFallback", + "lbryTargetsRedirects", + "librarianNormalRedirectsChecks", + "librarianNormalCustomRedirects", + "librarianTorRedirectsChecks", + "librarianTorCustomRedirects", + "librarianI2pRedirectsChecks", + "librarianI2pCustomRedirects", + "librarianLokiCustomRedirects", + ], + r => { + disableLbryTargets = r.disableLbryTargets + protocol = r.protocol + protocolFallback = r.protocolFallback + lbryTargetsRedirects = r.lbryTargetsRedirects + librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks + librarianNormalCustomRedirects = r.librarianNormalCustomRedirects + librarianTorRedirectsChecks = r.librarianTorRedirectsChecks + librarianTorCustomRedirects = r.librarianTorCustomRedirects + librarianI2pRedirectsChecks = r.librarianI2pRedirectsChecks + librarianI2pCustomRedirects = r.librarianI2pCustomRedirects + librarianLokiCustomRedirects = r.librarianLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function all() { - return [ - ...redirects.librarian.normal, - ...redirects.librarian.tor, - ...librarianNormalCustomRedirects, - ...librarianTorCustomRedirects, - ...librarianI2pCustomRedirects, - ...librarianLokiCustomRedirects - ]; + return [...redirects.librarian.normal, ...redirects.librarian.tor, ...librarianNormalCustomRedirects, ...librarianTorCustomRedirects, ...librarianI2pCustomRedirects, ...librarianLokiCustomRedirects] } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableLbryTargets && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + if (disableLbryTargets && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function redirect(url, type, initiator, disableOverride) { - if (disableLbryTargets && !disableOverride) return; - if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.includes(url.host)) return; - if (type != "main_frame") return; + if (disableLbryTargets && !disableOverride) return + if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.includes(url.host)) return + if (type != "main_frame") return - let instancesList = []; - if (protocol == 'loki') instancesList = [...librarianLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...librarianI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + let instancesList = [] + if (protocol == "loki") instancesList = [...librarianLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...librarianI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList); - return `${randomInstance}${url.pathname}${url.search}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}${url.search}` } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.set({ - disableLbryTargets: true, - lbryTargetsRedirects: redirects, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableLbryTargets: true, + lbryTargetsRedirects: redirects, - librarianNormalRedirectsChecks: [...redirects.librarian.normal], - librarianNormalCustomRedirects: [], + librarianNormalRedirectsChecks: [...redirects.librarian.normal], + librarianNormalCustomRedirects: [], - librarianTorRedirectsChecks: [...redirects.librarian.tor], - librarianTorCustomRedirects: [], + librarianTorRedirectsChecks: [...redirects.librarian.tor], + librarianTorCustomRedirects: [], - librarianI2pRedirectsChecks: [...redirects.librarian.i2p], - librarianI2pCustomRedirects: [], + librarianI2pRedirectsChecks: [...redirects.librarian.i2p], + librarianI2pCustomRedirects: [], - librarianLokiRedirectsChecks: [...redirects.librarian.loki], - librarianLokiCustomRedirects: [] - }, () => resolve()); - }); - }) + librarianLokiRedirectsChecks: [...redirects.librarian.loki], + librarianLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, - switchInstance, - redirect, - initDefaults, -}; + setRedirects, + switchInstance, + redirect, + initDefaults, +} diff --git a/src/assets/javascripts/localise.js b/src/assets/javascripts/localise.js index a4bbca9..34ccd66 100644 --- a/src/assets/javascripts/localise.js +++ b/src/assets/javascripts/localise.js @@ -1,31 +1,31 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome function localisePage() { - function getMessage(tag) { - return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => { - return v1 ? browser.i18n.getMessage(v1) : null; - }); - } + function getMessage(tag) { + return tag.replace(/__MSG_(\w+)__/g, (_match, v1) => { + return v1 ? browser.i18n.getMessage(v1) : null + }) + } - const elements = document.querySelectorAll("[data-localise]"); - for (let i in elements) - if (elements.hasOwnProperty(i)) { - const obj = elements[i]; - const tag = obj.getAttribute("data-localise").toString(); - const msg = getMessage(tag); - if (msg && msg !== tag) obj.textContent = msg; - } + const elements = document.querySelectorAll("[data-localise]") + for (let i in elements) + if (elements.hasOwnProperty(i)) { + const obj = elements[i] + const tag = obj.getAttribute("data-localise").toString() + const msg = getMessage(tag) + if (msg && msg !== tag) obj.textContent = msg + } - const placeholders = document.querySelectorAll("[data-localise-placeholder]"); - for (let i in placeholders) - if (placeholders.hasOwnProperty(i)) { - const obj = placeholders[i]; - const tag = obj.getAttribute("data-localise-placeholder").toString(); - const msg = getMessage(tag); - if (msg && msg !== tag) obj.placeholder = msg; - } + const placeholders = document.querySelectorAll("[data-localise-placeholder]") + for (let i in placeholders) + if (placeholders.hasOwnProperty(i)) { + const obj = placeholders[i] + const tag = obj.getAttribute("data-localise-placeholder").toString() + const msg = getMessage(tag) + if (msg && msg !== tag) obj.placeholder = msg + } } export default { - localisePage + localisePage, } diff --git a/src/assets/javascripts/maps.js b/src/assets/javascripts/maps.js index fd65b1c..9fb10b9 100644 --- a/src/assets/javascripts/maps.js +++ b/src/assets/javascripts/maps.js @@ -1,247 +1,294 @@ -"use strict"; +"use strict" -window.browser = window.browser || window.chrome; -import utils from './utils.js' +window.browser = window.browser || window.chrome +import utils from "./utils.js" -const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/; +const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/ -let redirects = { - 'osm': { - "normal": [ - "https://www.openstreetmap.org" - ] - }, - 'facil': { - "normal": [ - "https://facilmap.org" - ], - "tor": [], - "i2p": [], - "loki": [] - } -}; +const frontends = new Array("facil") +const protocols = new Array("normal", "tor", "i2p", "loki") +let redirects = {} -let - disableMaps, - mapsFrontend, - protocol, - protocolFallback, - facilNormalRedirectsChecks, - facilNormalCustomRedirects, - facilTorCustomRedirects, - facilI2pCustomRedirects, - facilLokiCustomRedirects; - -function init() { - browser.storage.local.get( - [ - "disableMaps", - "mapsFrontend", - "protocol", - "protocolFallback", - "facilNormalRedirectsChecks", - "facilNormalCustomRedirects", - "facilTorCustomRedirects", - "facilI2pCustomRedirects", - "facilLokiCustomRedirects" - ], - r => { - disableMaps = r.disableMaps; - mapsFrontend = r.mapsFrontend; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - facilNormalRedirectsChecks = r.facilNormalRedirectsChecks; - facilNormalCustomRedirects = r.facilNormalCustomRedirects; - facilTorCustomRedirects = r.facilTorCustomRedirects; - facilI2pCustomRedirects = r.facilI2pCustomRedirects; - facilLokiCustomRedirects = r.facilLokiCustomRedirects; - } - ) +for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } -init(); +redirects.osm = {} +redirects.osm.normal = ["https://www.openstreetmap.org"] + +function setRedirects(val) { + browser.storage.local.get("cloudflareBlackList", r => { + redirects.facil = val + facilNormalRedirectsChecks = [...redirects.facil.normal] + for (const instance of r.cloudflareBlackList) { + const a = facilNormalRedirectsChecks.indexOf(instance) + if (a > -1) facilNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + mapsRedirects: redirects, + facilNormalRedirectsChecks, + }) + }) +} + +let disableMaps, + mapsFrontend, + protocol, + protocolFallback, + facilNormalRedirectsChecks, + facilNormalCustomRedirects, + facilTorRedirectsChecks, + facilTorCustomRedirects, + facilI2pRedirectsChecks, + facilI2pCustomRedirects, + facilLokiRedirectsChecks, + facilLokiCustomRedirects + +function init() { + browser.storage.local.get( + [ + "disableMaps", + "mapsFrontend", + "protocol", + "protocolFallback", + "facilNormalRedirectsChecks", + "facilNormalCustomRedirects", + "facilTorRedirectsChecks", + "facilTorCustomRedirects", + "facilI2pRedirectsChecks", + "facilI2pCustomRedirects", + "facilLokiRedirectsChecks", + "facilLokiCustomRedirects", + ], + r => { + disableMaps = r.disableMaps + mapsFrontend = r.mapsFrontend + protocol = r.protocol + protocolFallback = r.protocolFallback + facilNormalRedirectsChecks = r.facilNormalRedirectsChecks + facilNormalCustomRedirects = r.facilNormalCustomRedirects + facilTorRedirectsChecks = r.facilTorRedirectsChecks + facilTorCustomRedirects = r.facilTorCustomRedirects + facilI2pRedirectsChecks = r.facilI2pRedirectsChecks + facilI2pCustomRedirects = r.facilI2pCustomRedirects + facilLokiRedirectsChecks = r.facilLokiRedirectsChecks + facilLokiCustomRedirects = r.facilLokiCustomRedirects + } + ) +} + +init() browser.storage.onChanged.addListener(init) function redirect(url, initiator) { - if (disableMaps) return; - if (initiator && initiator.host === "earth.google.com") return; - if (!url.href.match(targets)) return; - const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; - const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; - const placeRegex = /\/place\/(.*)\//; - const travelModes = { - driving: "fossgis_osrm_car", - walking: "fossgis_osrm_foot", - bicycling: "fossgis_osrm_bike", - transit: "fossgis_osrm_car", // not implemented on OSM, default to car. - }; - const travelModesFacil = { - driving: "car", - walking: "pedestrian", - bicycling: "bicycle", - transit: "car", // not implemented on Facil, default to car. - }; - const osmLayers = { - none: "S", - transit: "T", - traffic: "S", // not implemented on OSM, default to standard. - bicycling: "C", - }; - function addressToLatLng(address) { - const xmlhttp = new XMLHttpRequest(); - xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false); - xmlhttp.send(); - if (xmlhttp.status === 200) { - const json = JSON.parse(xmlhttp.responseText)[0]; - if (json) { - console.log('json', json) - return [ - `${json.lat},${json.lon}`, - `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, - ]; - } - } - console.info("Error: Status is " + xmlhttp.status); - } + if (disableMaps) return + if (initiator && initiator.host === "earth.google.com") return + if (!url.href.match(targets)) return + const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/ + const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/ + const placeRegex = /\/place\/(.*)\// + const travelModes = { + driving: "fossgis_osrm_car", + walking: "fossgis_osrm_foot", + bicycling: "fossgis_osrm_bike", + transit: "fossgis_osrm_car", // not implemented on OSM, default to car. + } + const travelModesFacil = { + driving: "car", + walking: "pedestrian", + bicycling: "bicycle", + transit: "car", // not implemented on Facil, default to car. + } + const osmLayers = { + none: "S", + transit: "T", + traffic: "S", // not implemented on OSM, default to standard. + bicycling: "C", + } + function addressToLatLng(address) { + const xmlhttp = new XMLHttpRequest() + xmlhttp.open("GET", `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, false) + xmlhttp.send() + if (xmlhttp.status === 200) { + const json = JSON.parse(xmlhttp.responseText)[0] + if (json) { + console.log("json", json) + return [`${json.lat},${json.lon}`, `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`] + } + } + console.info("Error: Status is " + xmlhttp.status) + } - let randomInstance; - if (mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal); + let instancesList + switch (mapsFrontend) { + case "osm": + instancesList = [...redirects.osm.normal] + break + case "facil": + switch (protocol) { + case "loki": + instancesList = [...facilLokiRedirectsChecks, ...facilLokiCustomRedirects] + break + case "i2p": + instancesList = [...facilI2pRedirectsChecks, ...facilI2pCustomRedirects] + break + case "tor": + instancesList = [...facilTorRedirectsChecks, ...facilTorCustomRedirects] + } + if ((instancesList == "" && protocolFallback) || protocol == "normal") { + instancesList = [...facilNormalRedirectsChecks, ...facilNormalCustomRedirects] + } + } + const randomInstance = utils.getRandomInstance(instancesList) - if (mapsFrontend == 'facil') { - if (protocol == 'loki') randomInstance = utils.getRandomInstance(...facilLokiCustomRedirects); - else if (protocol == 'i2p') randomInstance = utils.getRandomInstance(...facilI2pCustomRedirects); - else if (protocol == 'tor') randomInstance = utils.getRandomInstance(...facilTorCustomRedirects); - if ((randomInstance == "" && protocolFallback) || protocol == 'normal') { - randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]); - } - } + let mapCentre = "#" + let prefs = {} - let mapCentre = "#"; - let prefs = {}; + if (url.pathname.match(mapCentreRegex)) { + // Set map centre if present + var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex) + } else if (url.searchParams.has("center")) { + var [lat, lon] = url.searchParams.get("center").split(",") + var zoom = url.searchParams.get("zoom") ?? "17" + } - if (url.pathname.match(mapCentreRegex)) { // Set map centre if present - var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex); - } else if (url.searchParams.has("center")) { - var [lat, lon] = url.searchParams.get("center").split(","); - var zoom = url.searchParams.get("zoom") ?? "17"; - } + if (lat && lon && zoom) { + if (mapsFrontend == "osm") mapCentre = `#map=${zoom}/${lat}/${lon}` + if (mapsFrontend == "facil") mapCentre = `#${zoom}/${lat}/${lon}` + } - if (lat && lon && zoom) { - if (mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`; - if (mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`; - } + if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")] - if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")]; + if (url.pathname.includes("/embed")) { + // Handle Google Maps Embed API + // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France + console.log("embed life") - if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API - // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France - console.log("embed life"); + 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 query = ""; - if (url.searchParams.has("q")) query = url.searchParams.get("q"); - else if (url.searchParams.has("query")) query = url.searchParams.has("query"); + let [coords, boundingbox] = addressToLatLng(query) + prefs.bbox = boundingbox + prefs.marker = coords + prefs.layer = "mapnik" + let prefsEncoded = new URLSearchParams(prefs).toString() + if (mapsFrontend == "osm") return `${randomInstance}/export/embed.html?${prefsEncoded}` + if (mapsFrontend == "facil") return `${randomInstance}/#q=${query}` + } else if (url.pathname.includes("/dir")) { + // Handle Google Maps Directions + // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling - 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 travMod = url.searchParams.get("travelmode") + if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod] - let [coords, boundingbox] = addressToLatLng(query); - prefs.bbox = boundingbox; - prefs.marker = coords; - prefs.layer = "mapnik"; - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (mapsFrontend == 'osm') return `${randomInstance}/export/embed.html?${prefsEncoded}`; - if (mapsFrontend == 'facil') return `${randomInstance}/#q=${query}`; + let orgVal = url.searchParams.get("origin") + let destVal = url.searchParams.get("destination") - } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions - // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling + let org + addressToLatLng(orgVal, a => (org = a)) + let dest + addressToLatLng(destVal, a => (dest = a)) + prefs.route = `${org};${dest}` - let travMod = url.searchParams.get("travelmode"); - if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod]; + let prefsEncoded = new URLSearchParams(prefs).toString() + if (mapsFrontend == "osm") return `${randomInstance}/directions?${prefsEncoded}${mapCentre}` + if (mapsFrontend == "facil") return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}` + } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { + // Get marker from data attribute + // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948 + console.log("data life") - let orgVal = url.searchParams.get("origin"); - let destVal = url.searchParams.get("destination"); + let [, mlat, mlon] = url.pathname.match(dataLatLngRegex) - let org; addressToLatLng(orgVal, a => org = a); - let dest; addressToLatLng(destVal, a => dest = a); - prefs.route = `${org};${dest}`; + if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}` + if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}` + } else if (url.searchParams.has("ll")) { + // Get marker from ll param + // https://maps.google.com/?ll=38.882147,-76.99017 + console.log("ll life") - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (mapsFrontend == 'osm') return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`; - if (mapsFrontend == 'facil') return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`; + const [mlat, mlon] = url.searchParams.get("ll").split(",") - } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute - // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948 - console.log("data life"); + if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}` + if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}` + } else if (url.searchParams.has("viewpoint")) { + // Get marker from viewpoint param. + // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80 + console.log("viewpoint life") - let [, mlat, mlon] = url.pathname.match(dataLatLngRegex); + const [mlat, mlon] = url.searchParams.get("viewpoint").split(",") - if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`; + if (mapsFrontend == "osm") return `${randomInstance}/search?query=${mlat}%2C${mlon}` + if (mapsFrontend == "facil") return `${randomInstance}/#q=${mlat}%2C${mlon}` + } else { + // Use query as search if present. + console.log("normal life") - } else if (url.searchParams.has("ll")) { // Get marker from ll param - // https://maps.google.com/?ll=38.882147,-76.99017 - console.log("ll life"); + let query + if (url.searchParams.has("q")) query = url.searchParams.get("q") + else if (url.searchParams.has("query")) query = url.searchParams.get("query") + else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1] - const [mlat, mlon] = url.searchParams.get("ll").split(","); + let prefsEncoded = new URLSearchParams(prefs).toString() + if (query) { + if (mapsFrontend == "osm") return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}` + if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk/${query}` + } + } - if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}` - } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param. - // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80 - console.log("viewpoint life"); - - const [mlat, mlon] = url.searchParams.get("viewpoint").split(","); - - if (mapsFrontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (mapsFrontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`; - } else { // Use query as search if present. - console.log("normal life"); - - let query; - if (url.searchParams.has("q")) query = url.searchParams.get("q"); - else if (url.searchParams.has("query")) query = url.searchParams.get("query"); - else if (url.pathname.match(placeRegex)) query = url.pathname.match(placeRegex)[1]; - - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (query) { - if (mapsFrontend == 'osm') return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`; - if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk/${query}`; - } - } - - let prefsEncoded = new URLSearchParams(prefs).toString(); - console.log("mapCentre", mapCentre); - console.log("prefs", prefs); - console.log("prefsEncoded", prefsEncoded); - if (mapsFrontend == 'osm') return `${randomInstance}/${mapCentre}&${prefsEncoded}`; - if (mapsFrontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk`; + let prefsEncoded = new URLSearchParams(prefs).toString() + console.log("mapCentre", mapCentre) + console.log("prefs", prefs) + console.log("prefsEncoded", prefsEncoded) + if (mapsFrontend == "osm") return `${randomInstance}/${mapCentre}&${prefsEncoded}` + if (mapsFrontend == "facil") return `${randomInstance}/${mapCentre}/Mpnk` } -async function initDefaults() { - return new Promise(resolve => - browser.storage.local.set({ - disableMaps: false, - mapsFrontend: 'osm', - mapsRedirects: redirects, - facilNormalRedirectsChecks: [...redirects.facil.normal], - facilNormalCustomRedirects: [], +function initDefaults() { + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableMaps: false, + mapsFrontend: "osm", + mapsRedirects: redirects, + facilNormalRedirectsChecks: [...redirects.facil.normal], + facilNormalCustomRedirects: [], - facilTorRedirectsChecks: [...redirects.facil.tor], - facilTorCustomRedirects: [], + facilTorRedirectsChecks: [...redirects.facil.tor], + facilTorCustomRedirects: [], - facilI2pRedirectsChecks: [...redirects.facil.i2p], - facilI2pCustomRedirects: [], - - facilLokiRedirectsChecks: [...redirects.facil.loki], - facilLokiCustomRedirects: [] - }, () => resolve()) - ) + facilI2pRedirectsChecks: [...redirects.facil.i2p], + facilI2pCustomRedirects: [], + facilLokiRedirectsChecks: [...redirects.facil.loki], + facilLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - redirect, - initDefaults, -}; + setRedirects, + redirect, + initDefaults, +} diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js index ddd955c..4c03471 100644 --- a/src/assets/javascripts/medium.js +++ b/src/assets/javascripts/medium.js @@ -1,207 +1,219 @@ -window.browser = window.browser || window.chrome; -import utils from './utils.js' +window.browser = window.browser || window.chrome +import utils from "./utils.js" const targets = [ - // /(?:.*\.)*(? { - redirects.scribe = val; - scribeNormalRedirectsChecks = [...redirects.scribe.normal]; - for (const instance of r.cloudflareBlackList) { - const a = scribeNormalRedirectsChecks.indexOf(instance); - if (a > -1) scribeNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - mediumRedirects: redirects, - scribeNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.scribe = val + scribeNormalRedirectsChecks = [...redirects.scribe.normal] + for (const instance of r.cloudflareBlackList) { + const a = scribeNormalRedirectsChecks.indexOf(instance) + if (a > -1) scribeNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + mediumRedirects: redirects, + scribeNormalRedirectsChecks, + }) + }) } -let - disableMedium, - mediumRedirects, - scribeNormalRedirectsChecks, - scribeNormalCustomRedirects, - scribeTorRedirectsChecks, - scribeTorCustomRedirects, - scribeI2pCustomRedirects, - scribeLokiCustomRedirects, - protocol, - protocolFallback; +let disableMedium, + mediumRedirects, + scribeNormalRedirectsChecks, + scribeNormalCustomRedirects, + scribeTorRedirectsChecks, + scribeTorCustomRedirects, + scribeI2pCustomRedirects, + scribeLokiCustomRedirects, + protocol, + protocolFallback function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableMedium", - "mediumRedirects", - "scribeNormalRedirectsChecks", - "scribeNormalCustomRedirects", - "scribeTorRedirectsChecks", - "scribeTorCustomRedirects", - "scribeI2pCustomRedirects", - "scribeLokiCustomRedirects", - "protocol", - "protocolFallback" - ], - r => { - disableMedium = r.disableMedium; - mediumRedirects = r.mediumRedirects; - scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks; - scribeNormalCustomRedirects = r.scribeNormalCustomRedirects; - scribeTorRedirectsChecks = r.scribeTorRedirectsChecks; - scribeTorCustomRedirects = r.scribeTorCustomRedirects; - scribeI2pCustomRedirects = r.scribeI2pCustomRedirects; - scribeLokiCustomRedirects = r.scribeLokiCustomRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableMedium", + "mediumRedirects", + "scribeNormalRedirectsChecks", + "scribeNormalCustomRedirects", + "scribeTorRedirectsChecks", + "scribeTorCustomRedirects", + "scribeI2pCustomRedirects", + "scribeLokiCustomRedirects", + "protocol", + "protocolFallback", + ], + r => { + disableMedium = r.disableMedium + mediumRedirects = r.mediumRedirects + scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks + scribeNormalCustomRedirects = r.scribeNormalCustomRedirects + scribeTorRedirectsChecks = r.scribeTorRedirectsChecks + scribeTorCustomRedirects = r.scribeTorCustomRedirects + scribeI2pCustomRedirects = r.scribeI2pCustomRedirects + scribeLokiCustomRedirects = r.scribeLokiCustomRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableMedium && !disableOverride) return; - if (url.pathname == "/" && !disableOverride) return; - if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return; - if (initiator && ( - [ - ...mediumRedirects.scribe.normal, - ...mediumRedirects.scribe.tor, - ...scribeNormalCustomRedirects, - ...scribeTorCustomRedirects, - ...scribeI2pCustomRedirects, - ...scribeLokiCustomRedirects - ].includes(initiator.origin))) return; + if (disableMedium && !disableOverride) return + if (url.pathname == "/" && !disableOverride) return + if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return + if ( + initiator && + [...mediumRedirects.scribe.normal, ...mediumRedirects.scribe.tor, ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, ...scribeI2pCustomRedirects, ...scribeLokiCustomRedirects].includes( + initiator.origin + ) + ) + return - if (!targets.some(rx => rx.test(url.host))) return; - if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return; + if (!targets.some(rx => rx.test(url.host))) return + if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - const randomInstance = utils.getRandomInstance(instancesList) - return `${randomInstance}${url.pathname}${url.search}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}${url.search}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableMedium && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...mediumRedirects.scribe.tor, - ...mediumRedirects.scribe.normal, + return new Promise(async resolve => { + await init() + if (disableMedium && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [ + ...mediumRedirects.scribe.tor, + ...mediumRedirects.scribe.normal, - ...scribeNormalCustomRedirects, - ...scribeTorCustomRedirects, - ...scribeI2pCustomRedirects, - ...scribeLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + ...scribeNormalCustomRedirects, + ...scribeTorCustomRedirects, + ...scribeI2pCustomRedirects, + ...scribeLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', - async r => { - scribeNormalRedirectsChecks = [...redirects.scribe.normal]; - for (const instance of r.cloudflareBlackList) { - let i = scribeNormalRedirectsChecks.indexOf(instance); - if (i > -1) scribeNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableMedium: false, - mediumRedirects: redirects, + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + scribeNormalRedirectsChecks = [...redirects.scribe.normal] + for (const instance of r.cloudflareBlackList) { + let i = scribeNormalRedirectsChecks.indexOf(instance) + if (i > -1) scribeNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableMedium: false, + mediumRedirects: redirects, - scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, - scribeNormalCustomRedirects: [], + scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, + scribeNormalCustomRedirects: [], - scribeTorRedirectsChecks: [...redirects.scribe.tor], - scribeTorCustomRedirects: [], + scribeTorRedirectsChecks: [...redirects.scribe.tor], + scribeTorCustomRedirects: [], - scribeI2pRedirectsChecks: [...redirects.scribe.i2p], - scribeI2pCustomRedirects: [], + scribeI2pRedirectsChecks: [...redirects.scribe.i2p], + scribeI2pCustomRedirects: [], - scribeLokiRedirectsChecks: [...redirects.scribe.loki], - scribeLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + scribeLokiRedirectsChecks: [...redirects.scribe.loki], + scribeLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - redirect, - switchInstance, - initDefaults, -}; + setRedirects, + redirect, + switchInstance, + initDefaults, +} diff --git a/src/assets/javascripts/peertube.js b/src/assets/javascripts/peertube.js index d05e4b2..de25cfa 100644 --- a/src/assets/javascripts/peertube.js +++ b/src/assets/javascripts/peertube.js @@ -1,180 +1,201 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -let redirects = { - "simpleertube": { - "normal": [ - "https://tube.simple-web.org", - "https://tube.ftild3.org", - "https://stube.alefvanoon.xyz", - "https://st.phreedom.club", - "https://simpleertube.esmailelbob.xyz", - ], - "tor": [], - "i2p": [], - "loki": [] - } +const frontends = new Array("simpleertube") +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) { - redirects.simpleertube = val; - browser.storage.local.set({ peertubeTargetsRedirects: redirects }) - for (const item of simpleertubeNormalRedirectsChecks) - if (!redirects.simpleertube.normal.includes(item)) { - var index = simpleertubeNormalRedirectsChecks.indexOf(item); - if (index !== -1) simpleertubeNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ simpleertubeNormalRedirectsChecks }) - - for (const item of simpleertubeTorRedirectsChecks) - if (!redirects.simpleertube.normal.includes(item)) { - var index = simpleertubeTorRedirectsChecks.indexOf(item); - if (index !== -1) simpleertubeTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ simpleertubeTorRedirectsChecks }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.simpleertube = val + simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal] + for (const instance of r.cloudflareBlackList) { + const a = simpleertubeNormalRedirectsChecks.indexOf(instance) + if (a > -1) simpleertubeNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + peertubeRedirects: redirects, + simpleertubeNormalRedirectsChecks, + }) + }) } -let - disablePeertubeTargets, - peertubeRedirects, - simpleertubeNormalRedirectsChecks, - simpleertubeNormalCustomRedirects, - simpleertubeTorRedirectsChecks, - simpleertubeTorCustomRedirects, - simpleertubeI2pCustomRedirects, - simpleertubeLokiCustomRedirects, - peerTubeTargets, - protocol, - protocolFallback; +let disablePeertubeTargets, + peertubeRedirects, + simpleertubeNormalRedirectsChecks, + simpleertubeNormalCustomRedirects, + simpleertubeTorRedirectsChecks, + simpleertubeTorCustomRedirects, + simpleertubeI2pRedirectsChecks, + simpleertubeI2pCustomRedirects, + simpleertubeLokiRedirectsChecks, + simpleertubeLokiCustomRedirects, + peerTubeTargets, + protocol, + protocolFallback function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disablePeertubeTargets", - "peertubeRedirects", - "simpleertubeNormalRedirectsChecks", - "simpleertubeNormalCustomRedirects", - "simpleertubeTorRedirectsChecks", - "simpleertubeTorCustomRedirects", - "simpleertubeI2pCustomRedirects", - "simpleertubeLokiCustomRedirects", - "peerTubeTargets", - "protocol", - "protocolFallback" - ], - r => { - disablePeertubeTargets = r.disablePeertubeTargets; - peertubeRedirects = r.peertubeRedirects; - simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks; - simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects; - simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks; - simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects; - simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects; - simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects; - peerTubeTargets = r.peerTubeTargets; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disablePeertubeTargets", + "peertubeRedirects", + "simpleertubeNormalRedirectsChecks", + "simpleertubeNormalCustomRedirects", + "simpleertubeTorRedirectsChecks", + "simpleertubeTorCustomRedirects", + "simpleertubeI2pRedirectsChecks", + "simpleertubeI2pCustomRedirects", + "simpleertubeLokiRedirectsChecks", + "simpleertubeLokiCustomRedirects", + "peerTubeTargets", + "protocol", + "protocolFallback", + ], + r => { + disablePeertubeTargets = r.disablePeertubeTargets + peertubeRedirects = r.peertubeRedirects + simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks + simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects + simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks + simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects + simpleertubeI2pRedirectsChecks = r.simpleertubeI2pRedirectsChecks + simpleertubeI2pCustomRedirects = r.simpleertubeI2pCustomRedirects + simpleertubeLokiRedirectsChecks = r.simpleertubeLokiRedirectsChecks + simpleertubeLokiCustomRedirects = r.simpleertubeLokiCustomRedirects + peerTubeTargets = r.peerTubeTargets + protocol = r.protocol + protocolFallback = r.protocolFallback + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function all() { - return [ - ...redirects.simpleertube.normal, - ...redirects.simpleertube.tor, - ...simpleertubeNormalCustomRedirects, - ...simpleertubeTorCustomRedirects, - ...simpleertubeI2pCustomRedirects, - ...simpleertubeLokiCustomRedirects - ]; + return [ + ...simpleertubeNormalRedirectsChecks, + ...simpleertubeTorRedirectsChecks, + ...simpleertubeI2pRedirectsChecks, + ...simpleertubeLokiRedirectsChecks, + ...simpleertubeNormalCustomRedirects, + ...simpleertubeTorCustomRedirects, + ...simpleertubeI2pCustomRedirects, + ...simpleertubeLokiCustomRedirects, + ] } function redirect(url, type, initiator, disableOverride) { - if (disablePeertubeTargets && !disableOverride) return; - if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return; - let protocolHost = utils.protocolHost(url); - if (!peerTubeTargets.includes(protocolHost)) return; - if (type != "main_frame") return; + if (disablePeertubeTargets && !disableOverride) return + if (initiator && (all().includes(initiator.origin) || peerTubeTargets.includes(initiator.host))) return + let protocolHost = utils.protocolHost(url) + if (!peerTubeTargets.includes(protocolHost)) return + if (type != "main_frame") return - let instancesList = []; - if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - const randomInstance = utils.getRandomInstance(instancesList); - if (url.host == 'search.joinpeertube.org' || url.host == 'sepiasearch.org') return randomInstance; - return `${randomInstance}/${url.host}${url.pathname}${url.search}`; + const randomInstance = utils.getRandomInstance(instancesList) + if (url.host == "search.joinpeertube.org" || url.host == "sepiasearch.org") return randomInstance + return `${randomInstance}/${url.host}${url.pathname}${url.search}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disablePeertubeTargets && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + if (disablePeertubeTargets && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...simpleertubeLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...simpleertubeI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...simpleertubeLokiRedirectsChecks, ...simpleertubeLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...simpleertubeI2pRedirectsChecks, ...simpleertubeI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - browser.storage.local.get('cloudflareBlackList', async r => { - simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]; - for (const instance of r.cloudflareBlackList) { - let i = simpleertubeNormalRedirectsChecks.indexOf(instance); - if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube], - disablePeertubeTargets: true, - peertubeRedirects: redirects, + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal] + for (const instance of r.cloudflareBlackList) { + let i = simpleertubeNormalRedirectsChecks.indexOf(instance) + if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + peerTubeTargets: ["https://search.joinpeertube.org", ...dataJson.peertube], + disablePeertubeTargets: true, + peertubeRedirects: redirects, - simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks, - simpleertubeNormalCustomRedirects: [], + simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks, + simpleertubeNormalCustomRedirects: [], - simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], - simpleertubeTorCustomRedirects: [], + simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], + simpleertubeTorCustomRedirects: [], - simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p], - simpleertubeI2pCustomRedirects: [], + simpleertubeI2pRedirectsChecks: [...redirects.simpleertube.i2p], + simpleertubeI2pCustomRedirects: [], - simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki], - simpleertubeLokiCustomRedirects: [] - }, () => resolve()); - }) - }) - }) + simpleertubeLokiRedirectsChecks: [...redirects.simpleertube.loki], + simpleertubeLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - switchInstance, - redirect, - initDefaults, -}; + setRedirects, + switchInstance, + redirect, + initDefaults, +} diff --git a/src/assets/javascripts/quora.js b/src/assets/javascripts/quora.js index fed321d..3f9e418 100644 --- a/src/assets/javascripts/quora.js +++ b/src/assets/javascripts/quora.js @@ -1,10 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|)quora\.com.*/ -]; +const targets = [/^https?:\/{2}(www\.|)quora\.com.*/] let redirects = {} @@ -12,183 +10,183 @@ const frontends = new Array("quetre") const protocols = new Array("normal", "tor", "i2p", "loki") for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = {} - for (let x = 0; x < protocols.length; x++) { - redirects[frontends[i]][protocols[x]] = [] - } + 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.quetre = val; - quetreNormalRedirectsChecks = [...redirects.quetre.normal]; - for (const instance of r.cloudflareBlackList) { - const a = quetreNormalRedirectsChecks.indexOf(instance); - if (a > -1) quetreNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - quoraRedirects: redirects, - quetreNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.quetre = val + quetreNormalRedirectsChecks = [...redirects.quetre.normal] + for (const instance of r.cloudflareBlackList) { + const a = quetreNormalRedirectsChecks.indexOf(instance) + if (a > -1) quetreNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + quoraRedirects: redirects, + quetreNormalRedirectsChecks, + }) + }) } -let - disableQuora, - protocol, - protocolFallback, - quoraRedirects, - quetreNormalRedirectsChecks, - quetreNormalCustomRedirects, - quetreTorRedirectsChecks, - quetreTorCustomRedirects, - quetreI2pCustomRedirects, - quetreLokiCustomRedirects; +let disableQuora, + protocol, + protocolFallback, + quoraRedirects, + quetreNormalRedirectsChecks, + quetreNormalCustomRedirects, + quetreTorRedirectsChecks, + quetreTorCustomRedirects, + quetreI2pCustomRedirects, + quetreLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableQuora", - "protocol", - "protocolFallback", - "quoraRedirects", - "quetreNormalRedirectsChecks", - "quetreNormalCustomRedirects", - "quetreTorRedirectsChecks", - "quetreTorCustomRedirects", - "quetreI2pCustomRedirects", - "quetreLokiCustomRedirects" - ], - r => { - disableQuora = r.disableQuora; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - quoraRedirects = r.quoraRedirects; - quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks; - quetreNormalCustomRedirects = r.quetreNormalCustomRedirects; - quetreTorRedirectsChecks = r.quetreTorRedirectsChecks; - quetreTorCustomRedirects = r.quetreTorCustomRedirects; - quetreI2pCustomRedirects = r.quetreI2pCustomRedirects; - quetreLokiCustomRedirects = r.quetreLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableQuora", + "protocol", + "protocolFallback", + "quoraRedirects", + "quetreNormalRedirectsChecks", + "quetreNormalCustomRedirects", + "quetreTorRedirectsChecks", + "quetreTorCustomRedirects", + "quetreI2pCustomRedirects", + "quetreLokiCustomRedirects", + ], + r => { + disableQuora = r.disableQuora + protocol = r.protocol + protocolFallback = r.protocolFallback + quoraRedirects = r.quoraRedirects + quetreNormalRedirectsChecks = r.quetreNormalRedirectsChecks + quetreNormalCustomRedirects = r.quetreNormalCustomRedirects + quetreTorRedirectsChecks = r.quetreTorRedirectsChecks + quetreTorCustomRedirects = r.quetreTorCustomRedirects + quetreI2pCustomRedirects = r.quetreI2pCustomRedirects + quetreLokiCustomRedirects = r.quetreLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableQuora && !disableOverride) return; - if (url.pathname == "/" && !disableOverride) return; - if (type != "main_frame") return; - const all = [ - ...quoraRedirects.quetre.normal, - ...quetreNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (disableQuora && !disableOverride) return + if (url.pathname == "/" && !disableOverride) return + if (type != "main_frame") return + const all = [...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - const randomInstance = utils.getRandomInstance(instancesList); - return `${randomInstance}${url.pathname}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(url); - const all = [ - ...quoraRedirects.quetre.normal, - ...quoraRedirects.quetre.tor, - ...quetreNormalCustomRedirects, - ...quetreTorCustomRedirects, - ...quetreI2pCustomRedirects, - ...quetreLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(url) + const all = [...quoraRedirects.quetre.normal, ...quoraRedirects.quetre.tor, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects] + if (!all.includes(protocolHost)) { + resolve() + return + } - resolve(`https://quora.com${url.pathname}${url.search}`); - }) + resolve(`https://quora.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableQuora && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...quoraRedirects.quetre.tor, - ...quoraRedirects.quetre.normal, + return new Promise(async resolve => { + await init() + if (disableQuora && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [...quoraRedirects.quetre.tor, ...quoraRedirects.quetre.normal, ...quetreNormalCustomRedirects, ...quetreTorCustomRedirects, ...quetreI2pCustomRedirects, ...quetreLokiCustomRedirects] + if (!all.includes(protocolHost)) { + resolve() + return + } - ...quetreNormalCustomRedirects, - ...quetreTorCustomRedirects, - ...quetreI2pCustomRedirects, - ...quetreLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + let instancesList = [] + if (protocol == "loki") instancesList = [...quetreLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...quetreI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects] + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...quetreLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...quetreI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...quetreTorRedirectsChecks, ...quetreTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...quetreNormalRedirectsChecks, ...quetreNormalCustomRedirects]; - } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } - - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.set({ - disableQuora: false, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableQuora: false, - quoraRedirects: redirects, + quoraRedirects: redirects, - quetreNormalRedirectsChecks: [...redirects.quetre.normal], - quetreNormalCustomRedirects: [], + quetreNormalRedirectsChecks: [...redirects.quetre.normal], + quetreNormalCustomRedirects: [], - quetreTorRedirectsChecks: [...redirects.quetre.tor], - quetreTorCustomRedirects: [], + quetreTorRedirectsChecks: [...redirects.quetre.tor], + quetreTorCustomRedirects: [], - quetreI2pRedirectsChecks: [...redirects.quetre.i2p], - quetreI2pCustomRedirects: [], + quetreI2pRedirectsChecks: [...redirects.quetre.i2p], + quetreI2pCustomRedirects: [], - quetreLokiRedirectsChecks: [...redirects.quetre.loki], - quetreLokiCustomRedirects: [] - }, () => resolve()); - }); - }) + quetreLokiRedirectsChecks: [...redirects.quetre.loki], + quetreLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, + setRedirects, - redirect, - reverse, - switchInstance, + redirect, + reverse, + switchInstance, - initDefaults -}; + initDefaults, +} diff --git a/src/assets/javascripts/reddit.js b/src/assets/javascripts/reddit.js index bc7b687..699dcf1 100644 --- a/src/assets/javascripts/reddit.js +++ b/src/assets/javascripts/reddit.js @@ -1,264 +1,261 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, - /^https?:\/{2}(i\.|preview\.)redd\.it/, -]; -let redirects = {}; +const targets = [/^https?:\/{2}(www\.|old\.|np\.|new\.|amp\.|)reddit\.com/, /^https?:\/{2}(i\.|preview\.)redd\.it/] +let redirects = {} const frontends = new Array("libreddit", "teddit") const protocols = new Array("normal", "tor", "i2p", "loki") for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = {} - for (let x = 0; x < protocols.length; x++) { - redirects[frontends[i]][protocols[x]] = [] - } + 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 = val; - libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of r.cloudflareBlackList) { - const a = libredditNormalRedirectsChecks.indexOf(instance); - if (a > -1) libredditNormalRedirectsChecks.splice(a, 1); + browser.storage.local.get("cloudflareBlackList", r => { + redirects = val + libredditNormalRedirectsChecks = [...redirects.libreddit.normal] + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareBlackList) { + const a = libredditNormalRedirectsChecks.indexOf(instance) + if (a > -1) libredditNormalRedirectsChecks.splice(a, 1) - const b = tedditNormalRedirectsChecks.indexOf(instance); - if (b > -1) tedditNormalRedirectsChecks.splice(b, 1); - } - browser.storage.local.set({ - redditRedirects: redirects, - libredditNormalRedirectsChecks, - tedditNormalRedirectsChecks - }) - }) + const b = tedditNormalRedirectsChecks.indexOf(instance) + if (b > -1) tedditNormalRedirectsChecks.splice(b, 1) + } + browser.storage.local.set({ + redditRedirects: redirects, + libredditNormalRedirectsChecks, + tedditNormalRedirectsChecks, + }) + }) } -let - disableReddit, - redditFrontend, - redditRedirects, - protocol, - protocolFallback, - - libredditNormalRedirectsChecks, - libredditNormalCustomRedirects, - - libredditTorRedirectsChecks, - libredditTorCustomRedirects, - - libredditI2pCustomRedirects, - - libredditLokiCustomRedirects, - - tedditNormalRedirectsChecks, - tedditNormalCustomRedirects, - - tedditTorRedirectsChecks, - tedditTorCustomRedirects, - - tedditI2pCustomRedirects, - tedditLokiCustomRedirects; +let disableReddit, + redditFrontend, + redditRedirects, + protocol, + protocolFallback, + libredditNormalRedirectsChecks, + libredditNormalCustomRedirects, + libredditTorRedirectsChecks, + libredditTorCustomRedirects, + libredditI2pCustomRedirects, + libredditLokiCustomRedirects, + tedditNormalRedirectsChecks, + tedditNormalCustomRedirects, + tedditTorRedirectsChecks, + tedditTorCustomRedirects, + tedditI2pCustomRedirects, + tedditLokiCustomRedirects function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableReddit", - "redditFrontend", - "redditRedirects", - "protocol", - "protocolFallback", - "libredditNormalRedirectsChecks", - "libredditNormalCustomRedirects", - "libredditTorRedirectsChecks", - "libredditTorCustomRedirects", - "libredditI2pCustomRedirects", - "libredditLokiCustomRedirects", - "tedditNormalRedirectsChecks", - "tedditNormalCustomRedirects", - "tedditTorRedirectsChecks", - "tedditTorCustomRedirects", - "tedditI2pCustomRedirects", - "tedditLokiCustomRedirects" - ], - r => { - disableReddit = r.disableReddit; - redditFrontend = r.redditFrontend; - redditRedirects = r.redditRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks; - libredditNormalCustomRedirects = r.libredditNormalCustomRedirects; - libredditTorRedirectsChecks = r.libredditTorRedirectsChecks; - libredditTorCustomRedirects = r.libredditTorCustomRedirects; - libredditI2pCustomRedirects = r.libredditI2pCustomRedirects; - libredditLokiCustomRedirects = r.libredditLokiCustomRedirects; - tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks; - tedditNormalCustomRedirects = r.tedditNormalCustomRedirects; - tedditTorRedirectsChecks = r.tedditTorRedirectsChecks; - tedditTorCustomRedirects = r.tedditTorCustomRedirects; - tedditI2pCustomRedirects = r.tedditI2pCustomRedirects; - tedditLokiCustomRedirects = r.tedditLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableReddit", + "redditFrontend", + "redditRedirects", + "protocol", + "protocolFallback", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + "libredditI2pCustomRedirects", + "libredditLokiCustomRedirects", + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + "tedditI2pCustomRedirects", + "tedditLokiCustomRedirects", + ], + r => { + disableReddit = r.disableReddit + redditFrontend = r.redditFrontend + redditRedirects = r.redditRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks + libredditNormalCustomRedirects = r.libredditNormalCustomRedirects + libredditTorRedirectsChecks = r.libredditTorRedirectsChecks + libredditTorCustomRedirects = r.libredditTorCustomRedirects + libredditI2pCustomRedirects = r.libredditI2pCustomRedirects + libredditLokiCustomRedirects = r.libredditLokiCustomRedirects + tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks + tedditNormalCustomRedirects = r.tedditNormalCustomRedirects + tedditTorRedirectsChecks = r.tedditTorRedirectsChecks + tedditTorCustomRedirects = r.tedditTorCustomRedirects + tedditI2pCustomRedirects = r.tedditI2pCustomRedirects + tedditLokiCustomRedirects = r.tedditLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function initLibredditCookies(test, from) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(from); - if (![ - ...libredditNormalRedirectsChecks, - ...libredditTorRedirectsChecks, - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, - ...libredditI2pCustomRedirects, - ...libredditLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + if ( + ![ + ...libredditNormalRedirectsChecks, + ...libredditTorRedirectsChecks, + ...libredditNormalCustomRedirects, + ...libredditTorCustomRedirects, + ...libredditI2pCustomRedirects, + ...libredditLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - } - await utils.copyCookie('libreddit', from, checkedInstances, "theme"); - await utils.copyCookie('libreddit', from, checkedInstances, "front_page"); - await utils.copyCookie('libreddit', from, checkedInstances, "layout"); - await utils.copyCookie('libreddit', from, checkedInstances, "wide"); - await utils.copyCookie('libreddit', from, checkedInstances, "post_sort"); - await utils.copyCookie('libreddit', from, checkedInstances, "comment_sort"); - await utils.copyCookie('libreddit', from, checkedInstances, "show_nsfw"); - await utils.copyCookie('libreddit', from, checkedInstances, "autoplay_videos"); - await utils.copyCookie('libreddit', from, checkedInstances, "use_hls"); - await utils.copyCookie('libreddit', from, checkedInstances, "hide_hls_notification"); - await utils.copyCookie('libreddit', from, checkedInstances, "subscriptions"); - await utils.copyCookie('libreddit', from, checkedInstances, "filters"); - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + } + await utils.copyCookie("libreddit", from, checkedInstances, "theme") + await utils.copyCookie("libreddit", from, checkedInstances, "front_page") + await utils.copyCookie("libreddit", from, checkedInstances, "layout") + await utils.copyCookie("libreddit", from, checkedInstances, "wide") + await utils.copyCookie("libreddit", from, checkedInstances, "post_sort") + await utils.copyCookie("libreddit", from, checkedInstances, "comment_sort") + await utils.copyCookie("libreddit", from, checkedInstances, "show_nsfw") + await utils.copyCookie("libreddit", from, checkedInstances, "autoplay_videos") + await utils.copyCookie("libreddit", from, checkedInstances, "use_hls") + await utils.copyCookie("libreddit", from, checkedInstances, "hide_hls_notification") + await utils.copyCookie("libreddit", from, checkedInstances, "subscriptions") + await utils.copyCookie("libreddit", from, checkedInstances, "filters") + } + resolve(true) + }) } function pasteLibredditCookies() { - return new Promise(async resolve => { - await init(); - if (disableReddit || redditFrontend != 'libreddit' || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...libredditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - } - utils.getCookiesFromStorage('libreddit', checkedInstances, "theme"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "front_page"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "layout"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "wide"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "post_sort"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "comment_sort"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "show_nsfw"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "autoplay_videos"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "use_hls"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "hide_hls_notification"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "subscriptions"); - utils.getCookiesFromStorage('libreddit', checkedInstances, "filters"); - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableReddit || redditFrontend != "libreddit" || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...libredditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + } + utils.getCookiesFromStorage("libreddit", checkedInstances, "theme") + utils.getCookiesFromStorage("libreddit", checkedInstances, "front_page") + utils.getCookiesFromStorage("libreddit", checkedInstances, "layout") + utils.getCookiesFromStorage("libreddit", checkedInstances, "wide") + utils.getCookiesFromStorage("libreddit", checkedInstances, "post_sort") + utils.getCookiesFromStorage("libreddit", checkedInstances, "comment_sort") + utils.getCookiesFromStorage("libreddit", checkedInstances, "show_nsfw") + utils.getCookiesFromStorage("libreddit", checkedInstances, "autoplay_videos") + utils.getCookiesFromStorage("libreddit", checkedInstances, "use_hls") + utils.getCookiesFromStorage("libreddit", checkedInstances, "hide_hls_notification") + utils.getCookiesFromStorage("libreddit", checkedInstances, "subscriptions") + utils.getCookiesFromStorage("libreddit", checkedInstances, "filters") + resolve() + }) } function initTedditCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...tedditNormalRedirectsChecks, - ...tedditTorRedirectsChecks, - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ...tedditI2pCustomRedirects, - ...tedditI2pCustomRedirects + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![...tedditNormalRedirectsChecks, ...tedditTorRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects, ...tedditI2pCustomRedirects, ...tedditI2pCustomRedirects].includes( + protocolHost + ) + ) + resolve() - ].includes(protocolHost)) resolve(); - - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - await utils.copyCookie('teddit', from, checkedInstances, 'collapse_child_comments') - await utils.copyCookie('teddit', from, checkedInstances, 'domain_instagram') - await utils.copyCookie('teddit', from, checkedInstances, 'domain_twitter') - await utils.copyCookie('teddit', from, checkedInstances, 'domain_youtube') - await utils.copyCookie('teddit', from, checkedInstances, 'flairs') - await utils.copyCookie('teddit', from, checkedInstances, 'highlight_controversial') - await utils.copyCookie('teddit', from, checkedInstances, 'nsfw_enabled') - await utils.copyCookie('teddit', from, checkedInstances, 'post_media_max_height') - await utils.copyCookie('teddit', from, checkedInstances, 'show_upvoted_percentage') - await utils.copyCookie('teddit', from, checkedInstances, 'show_upvotes') - await utils.copyCookie('teddit', from, checkedInstances, 'theme') - await utils.copyCookie('teddit', from, checkedInstances, 'videos_muted') - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + await utils.copyCookie("teddit", from, checkedInstances, "collapse_child_comments") + await utils.copyCookie("teddit", from, checkedInstances, "domain_instagram") + await utils.copyCookie("teddit", from, checkedInstances, "domain_twitter") + await utils.copyCookie("teddit", from, checkedInstances, "domain_youtube") + await utils.copyCookie("teddit", from, checkedInstances, "flairs") + await utils.copyCookie("teddit", from, checkedInstances, "highlight_controversial") + await utils.copyCookie("teddit", from, checkedInstances, "nsfw_enabled") + await utils.copyCookie("teddit", from, checkedInstances, "post_media_max_height") + await utils.copyCookie("teddit", from, checkedInstances, "show_upvoted_percentage") + await utils.copyCookie("teddit", from, checkedInstances, "show_upvotes") + await utils.copyCookie("teddit", from, checkedInstances, "theme") + await utils.copyCookie("teddit", from, checkedInstances, "videos_muted") + } + resolve(true) + }) } function pasteTedditCookies() { - return new Promise(async resolve => { - await init(); - if (disableReddit || redditFrontend != 'teddit' || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - utils.getCookiesFromStorage('teddit', checkedInstances, 'collapse_child_comments') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_instagram') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_twitter') - utils.getCookiesFromStorage('teddit', checkedInstances, 'domain_youtube') - utils.getCookiesFromStorage('teddit', checkedInstances, 'flairs') - utils.getCookiesFromStorage('teddit', checkedInstances, 'highlight_controversial') - utils.getCookiesFromStorage('teddit', checkedInstances, 'nsfw_enabled') - utils.getCookiesFromStorage('teddit', checkedInstances, 'post_media_max_height') - utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvoted_percentage') - utils.getCookiesFromStorage('teddit', checkedInstances, 'show_upvotes') - utils.getCookiesFromStorage('teddit', checkedInstances, 'theme') - utils.getCookiesFromStorage('teddit', checkedInstances, 'videos_muted') - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableReddit || redditFrontend != "teddit" || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...tedditI2pCustomRedirects] + else if (protocol == "tor") checkedInstances = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + utils.getCookiesFromStorage("teddit", checkedInstances, "collapse_child_comments") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_instagram") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_twitter") + utils.getCookiesFromStorage("teddit", checkedInstances, "domain_youtube") + utils.getCookiesFromStorage("teddit", checkedInstances, "flairs") + utils.getCookiesFromStorage("teddit", checkedInstances, "highlight_controversial") + utils.getCookiesFromStorage("teddit", checkedInstances, "nsfw_enabled") + utils.getCookiesFromStorage("teddit", checkedInstances, "post_media_max_height") + utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvoted_percentage") + utils.getCookiesFromStorage("teddit", checkedInstances, "show_upvotes") + utils.getCookiesFromStorage("teddit", checkedInstances, "theme") + utils.getCookiesFromStorage("teddit", checkedInstances, "videos_muted") + resolve() + }) } function all() { - return [ - ...redditRedirects.libreddit.normal, - ...redditRedirects.libreddit.tor, - ...redditRedirects.teddit.normal, - ...redditRedirects.teddit.tor, - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, - ...libredditI2pCustomRedirects, - ...libredditLokiCustomRedirects, - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ...tedditI2pCustomRedirects, - ...tedditLokiCustomRedirects - ]; + return [ + ...redditRedirects.libreddit.normal, + ...redditRedirects.libreddit.tor, + ...redditRedirects.teddit.normal, + ...redditRedirects.teddit.tor, + ...libredditNormalCustomRedirects, + ...libredditTorCustomRedirects, + ...libredditI2pCustomRedirects, + ...libredditLokiCustomRedirects, + ...tedditNormalCustomRedirects, + ...tedditTorCustomRedirects, + ...tedditI2pCustomRedirects, + ...tedditLokiCustomRedirects, + ] } // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4 @@ -267,188 +264,189 @@ function all() { // https://teddit.net/vids/1mq8d0ma3yk81.mp4 // https://teddit.net/pics/w:null_4v3t1vgvrzk81.png - // redd.it/t5379n // https://v.redd.it/z08avb339n801/DASH_1_2_M // https://i.redd.it/bfkhs659tzk81.jpg function redirect(url, type, initiator, disableOverride) { - if (disableReddit && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; - if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB'; - if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return; - const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; - if (url.pathname.match(bypassPaths)) return; + if (disableReddit && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return + if (initiator && all().includes(initiator.origin)) return "BYPASSTAB" + if (!["main_frame", "xmlhttprequest", "other", "image", "media"].includes(type)) return + const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/ + if (url.pathname.match(bypassPaths)) return - let libredditInstancesList = []; - let tedditInstancesList = []; + let libredditInstancesList = [] + let tedditInstancesList = [] - if (protocol == 'loki') { - libredditInstancesList = [...libredditLokiCustomRedirects]; - tedditInstancesList = [...tedditLokiCustomRedirects]; - } - else if (protocol == 'i2p') { - libredditInstancesList = [...libredditI2pCustomRedirects]; - tedditInstancesList = [...tedditI2pCustomRedirects]; - } - else if (protocol == 'tor') { - libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - } - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } + if (protocol == "loki") { + libredditInstancesList = [...libredditLokiCustomRedirects] + tedditInstancesList = [...tedditLokiCustomRedirects] + } else if (protocol == "i2p") { + libredditInstancesList = [...libredditI2pCustomRedirects] + tedditInstancesList = [...tedditI2pCustomRedirects] + } else if (protocol == "tor") { + libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + } + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } - if (url.host === "i.redd.it") { - if (redditFrontend == 'teddit') { - if (tedditInstancesList.length === 0) return; - let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList); - return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}`; - } - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - return `${libredditRandomInstance}/img${url.pathname}${url.search}` - } - } - else if (url.host === "redd.it") { - if (redditFrontend == 'libreddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { - if (libredditInstancesList.length === 0) return; - let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - // https://redd.it/foo => https://libredd.it/comments/foo - return `${libredditRandomInstance}/comments${url.pathname}${url.search}`; - } - if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { - if (tedditInstancesList.length === 0) return; - let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList); - // https://redd.it/foo => https://teddit.net/comments/foo - return `${tedditRandomInstance}/comments${url.pathname}${url.search}` - } - } - else if (url.host === 'preview.redd.it') { - if (redditFrontend == 'teddit') return; - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList); - return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}`; - } - } + if (url.host === "i.redd.it") { + if (redditFrontend == "teddit") { + if (tedditInstancesList.length === 0) return + let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList) + return `${tedditRandomInstance}/pics/w:null_${url.pathname.substring(1)}${url.search}` + } + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + return `${libredditRandomInstance}/img${url.pathname}${url.search}` + } + } else if (url.host === "redd.it") { + if (redditFrontend == "libreddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { + if (libredditInstancesList.length === 0) return + let libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + // https://redd.it/foo => https://libredd.it/comments/foo + return `${libredditRandomInstance}/comments${url.pathname}${url.search}` + } + if (redditFrontend == "teddit" && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) { + if (tedditInstancesList.length === 0) return + let tedditRandomInstance = utils.getRandomInstance(tedditInstancesList) + // https://redd.it/foo => https://teddit.net/comments/foo + return `${tedditRandomInstance}/comments${url.pathname}${url.search}` + } + } else if (url.host === "preview.redd.it") { + if (redditFrontend == "teddit") return + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + const libredditRandomInstance = utils.getRandomInstance(libredditInstancesList) + return `${libredditRandomInstance}/preview/pre${url.pathname}${url.search}` + } + } - let randomInstance; - if (redditFrontend == 'libreddit') { - if (libredditInstancesList.length === 0) return; - randomInstance = utils.getRandomInstance(libredditInstancesList); - } - if (redditFrontend == 'teddit') { - if (tedditInstancesList.length === 0) return; - randomInstance = utils.getRandomInstance(tedditInstancesList); - } - return `${randomInstance}${url.pathname}${url.search}`; + let randomInstance + if (redditFrontend == "libreddit") { + if (libredditInstancesList.length === 0) return + randomInstance = utils.getRandomInstance(libredditInstancesList) + } + if (redditFrontend == "teddit") { + if (tedditInstancesList.length === 0) return + randomInstance = utils.getRandomInstance(tedditInstancesList) + } + return `${randomInstance}${url.pathname}${url.search}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableReddit && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList = []; - if (redditFrontend == 'libreddit') { - if (protocol == 'loki') instancesList = [...libredditLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...libredditI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - } - if ([ - ...redditRedirects.teddit.normal, - ...redditRedirects.teddit.tor - ].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/"); - } - else if (redditFrontend == 'teddit') { - if (protocol == 'loki') instancesList = [...tedditLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...tedditI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - } - if ([ - ...redditRedirects.libreddit.normal, - ...redditRedirects.libreddit.tor - ].includes(protocolHost) - ) url.pathname = url.pathname.replace("/img/", "/pics/w:null_"); - } + return new Promise(async resolve => { + await init() + if (disableReddit && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + let instancesList = [] + if (redditFrontend == "libreddit") { + if (protocol == "loki") instancesList = [...libredditLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...libredditI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + } + if ([...redditRedirects.teddit.normal, ...redditRedirects.teddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/pics/w:null_", "/img/") + } else if (redditFrontend == "teddit") { + if (protocol == "loki") instancesList = [...tedditLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...tedditI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + } + if ([...redditRedirects.libreddit.normal, ...redditRedirects.libreddit.tor].includes(protocolHost)) url.pathname = url.pathname.replace("/img/", "/pics/w:null_") + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', async r => { - libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of r.cloudflareBlackList) { - let i; + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + libredditNormalRedirectsChecks = [...redirects.libreddit.normal] + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareBlackList) { + let i - i = libredditNormalRedirectsChecks.indexOf(instance); - if (i > -1) libredditNormalRedirectsChecks.splice(i, 1); + i = libredditNormalRedirectsChecks.indexOf(instance) + if (i > -1) libredditNormalRedirectsChecks.splice(i, 1) - i = tedditNormalRedirectsChecks.indexOf(instance); - if (i > -1) tedditNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableReddit: false, - redditFrontend: 'libreddit', - redditRedirects: redirects, + i = tedditNormalRedirectsChecks.indexOf(instance) + if (i > -1) tedditNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableReddit: false, + redditFrontend: "libreddit", + redditRedirects: redirects, - libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, - libredditNormalCustomRedirects: [], + libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, + libredditNormalCustomRedirects: [], - libredditTorRedirectsChecks: [...redirects.libreddit.tor], - libredditTorCustomRedirects: [], + libredditTorRedirectsChecks: [...redirects.libreddit.tor], + libredditTorCustomRedirects: [], - libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], - libredditI2pCustomRedirects: [], + libredditI2pRedirectsChecks: [...redirects.libreddit.i2p], + libredditI2pCustomRedirects: [], - libredditLokiRedirectsChecks: [...redirects.libreddit.loki], - libredditLokiCustomRedirects: [], + libredditLokiRedirectsChecks: [...redirects.libreddit.loki], + libredditLokiCustomRedirects: [], - tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, - tedditNormalCustomRedirects: [], + tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, + tedditNormalCustomRedirects: [], - tedditTorRedirectsChecks: [...redirects.teddit.tor], - tedditTorCustomRedirects: [], + tedditTorRedirectsChecks: [...redirects.teddit.tor], + tedditTorCustomRedirects: [], - tedditI2pRedirectsChecks: [...redirects.teddit.i2p], - tedditI2pCustomRedirects: [], + tedditI2pRedirectsChecks: [...redirects.teddit.i2p], + tedditI2pCustomRedirects: [], - tedditLokiRedirectsChecks: [...redirects.teddit.loki], - tedditLokiCustomRedirects: [] - }, () => resolve()); - }); - }); - }); + tedditLokiRedirectsChecks: [...redirects.teddit.loki], + tedditLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - initLibredditCookies, - pasteLibredditCookies, - initTedditCookies, - pasteTedditCookies, + setRedirects, + initLibredditCookies, + pasteLibredditCookies, + initTedditCookies, + pasteTedditCookies, - redirect, - initDefaults, - switchInstance, -}; + redirect, + initDefaults, + switchInstance, +} diff --git a/src/assets/javascripts/reuters.js b/src/assets/javascripts/reuters.js index e1d18a4..e4afa19 100644 --- a/src/assets/javascripts/reuters.js +++ b/src/assets/javascripts/reuters.js @@ -1,152 +1,140 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|)reuters\.com.*/ -]; +const targets = [/^https?:\/{2}(www\.|)reuters\.com.*/] -let redirects = { - "neuters": { - "normal": [ - "https://neuters.de" - ], - "tor": [], - "i2p": [], - "loki": [] - } +const frontends = new Array("neuters") +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]] = [] + } } -// const frontends = new Array("neuters") -// const protocols = new Array("normal", "tor", "i2p", "loki") - -// 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.neuters = val; - neutersNormalRedirectsChecks = [...redirects.neuters.normal]; - for (const instance of r.cloudflareBlackList) { - const a = neutersNormalRedirectsChecks.indexOf(instance); - if (a > -1) neutersNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - neutersRedirects: redirects, - neutersNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.neuters = val + neutersNormalRedirectsChecks = [...redirects.neuters.normal] + for (const instance of r.cloudflareBlackList) { + const a = neutersNormalRedirectsChecks.indexOf(instance) + if (a > -1) neutersNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + neutersRedirects: redirects, + neutersNormalRedirectsChecks, + }) + }) } -let - disableReuters, - protocol, - protocolFallback, - reutersRedirects, - neutersNormalRedirectsChecks, - neutersNormalCustomRedirects, - neutersTorRedirectsChecks, - neutersTorCustomRedirects, - neutersI2pCustomRedirects, - neutersLokiCustomRedirects; +let disableReuters, + protocol, + protocolFallback, + reutersRedirects, + neutersNormalRedirectsChecks, + neutersNormalCustomRedirects, + neutersTorRedirectsChecks, + neutersTorCustomRedirects, + neutersI2pCustomRedirects, + neutersLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableReuters", - "protocol", - "protocolFallback", - "reutersRedirects", - "neutersNormalRedirectsChecks", - "neutersNormalCustomRedirects", - "neutersTorRedirectsChecks", - "neutersTorCustomRedirects", - "neutersI2pCustomRedirects", - "neutersLokiCustomRedirects" - ], - r => { - disableReuters = r.disableReuters; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - reutersRedirects = r.reutersRedirects; - neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks; - neutersNormalCustomRedirects = r.neutersNormalCustomRedirects; - neutersTorRedirectsChecks = r.neutersTorRedirectsChecks; - neutersTorCustomRedirects = r.neutersTorCustomRedirects; - neutersI2pCustomRedirects = r.neutersI2pCustomRedirects; - neutersLokiCustomRedirects = r.neutersLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableReuters", + "protocol", + "protocolFallback", + "reutersRedirects", + "neutersNormalRedirectsChecks", + "neutersNormalCustomRedirects", + "neutersTorRedirectsChecks", + "neutersTorCustomRedirects", + "neutersI2pCustomRedirects", + "neutersLokiCustomRedirects", + ], + r => { + disableReuters = r.disableReuters + protocol = r.protocol + protocolFallback = r.protocolFallback + reutersRedirects = r.reutersRedirects + neutersNormalRedirectsChecks = r.neutersNormalRedirectsChecks + neutersNormalCustomRedirects = r.neutersNormalCustomRedirects + neutersTorRedirectsChecks = r.neutersTorRedirectsChecks + neutersTorCustomRedirects = r.neutersTorCustomRedirects + neutersI2pCustomRedirects = r.neutersI2pCustomRedirects + neutersLokiCustomRedirects = r.neutersLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function redirect(url, type, initiator, disableOverride) { - if (disableReuters && !disableOverride) return; - if (type != "main_frame") return; - const all = [ - ...reutersRedirects.neuters.normal, - ...neutersNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (disableReuters && !disableOverride) return + if (type != "main_frame") return + const all = [...reutersRedirects.neuters.normal, ...neutersNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...neutersLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...neutersI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + let instancesList = [] + if (protocol == "loki") instancesList = [...neutersLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...neutersI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...neutersTorRedirectsChecks, ...neutersTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...neutersNormalRedirectsChecks, ...neutersNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList); - // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/ - if ( - url.pathname.startsWith('/article/') || - url.pathname.startsWith('/pf/') || - url.pathname.startsWith('/arc/') || - url.pathname.startsWith('/resizer/') - ) - return null; - else if (url.pathname.endsWith('/')) - return `${randomInstance}${url.pathname}`; - else - return `${randomInstance}${url.pathname}/`; + const randomInstance = utils.getRandomInstance(instancesList) + // stolen from https://addons.mozilla.org/en-US/firefox/addon/reuters-redirect/ + if (url.pathname.startsWith("/article/") || url.pathname.startsWith("/pf/") || url.pathname.startsWith("/arc/") || url.pathname.startsWith("/resizer/")) return null + else if (url.pathname.endsWith("/")) return `${randomInstance}${url.pathname}` + else return `${randomInstance}${url.pathname}/` } function initDefaults() { - return new Promise(resolve => { - browser.storage.local.set({ - disableReuters: true, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableReuters: true, - reutersRedirects: redirects, + reutersRedirects: redirects, - neutersNormalRedirectsChecks: [...redirects.neuters.normal], - neutersNormalCustomRedirects: [], + neutersNormalRedirectsChecks: [...redirects.neuters.normal], + neutersNormalCustomRedirects: [], - neutersTorRedirectsChecks: [...redirects.neuters.tor], - neutersTorCustomRedirects: [], + neutersTorRedirectsChecks: [...redirects.neuters.tor], + neutersTorCustomRedirects: [], - neutersI2pRedirectsChecks: [...redirects.neuters.i2p], - neutersI2pCustomRedirects: [], + neutersI2pRedirectsChecks: [...redirects.neuters.i2p], + neutersI2pCustomRedirects: [], - neutersLokiRedirectsChecks: [...redirects.neuters.loki], - neutersLokiCustomRedirects: [] - }, () => resolve()); - }); + neutersLokiRedirectsChecks: [...redirects.neuters.loki], + neutersLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, - redirect, - initDefaults -}; + setRedirects, + redirect, + initDefaults, +} diff --git a/src/assets/javascripts/search.js b/src/assets/javascripts/search.js index 15272aa..b076f5d 100644 --- a/src/assets/javascripts/search.js +++ b/src/assets/javascripts/search.js @@ -1,16 +1,14 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}search\.libredirect\.invalid/, -]; +const targets = [/^https?:\/{2}search\.libredirect\.invalid/] // Ill optimise all of assets/javascripts at a later date. For now, I'll just add librex and optimse options javascript const frontends = new Array("searx", "searxng", "whoogle", "librex") const protocols = new Array("normal", "tor", "i2p", "loki") const redirects = {} - /* +/* "searx": { "normal": [], "tor": [], @@ -32,640 +30,673 @@ const redirects = {} //let tmp = "{" for (let i = 0; i < frontends.length; i++) { - //redirects.frontends[i] = {} - //redirects.push(frontends[i]) - //tmp = frontends[i] - //tmp = tmp + '\n"' + frontends[i] + '": {' - redirects[frontends[i]] = {} - for (let x = 0; x < protocols.length; x++) { - //redirects.frontends[i].protocols = [] - //tmp = tmp + '\n"' + protocols[x] + '": [],' - redirects[frontends[i]][protocols[x]] = [] - } - //tmp = tmp + "\n}," + //redirects.frontends[i] = {} + //redirects.push(frontends[i]) + //tmp = frontends[i] + //tmp = tmp + '\n"' + frontends[i] + '": {' + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + //redirects.frontends[i].protocols = [] + //tmp = tmp + '\n"' + protocols[x] + '": [],' + redirects[frontends[i]][protocols[x]] = [] + } + //tmp = tmp + "\n}," } //tmp = tmp + "\n}" //const redirects = JSON.parse(tmp) function setRedirects(val) { - browser.storage.local.get('cloudflareBlackList', r => { - redirects = val; - searxNormalRedirectsChecks = [...redirects.searx.normal]; - searxngNormalRedirectsChecks = [...redirects.searxng.normal]; - whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; - librexNormalRedirectsChecks = [...redirects.librex.normal]; - for (const instance of r.cloudflareBlackList) { - const a = searxNormalRedirectsChecks.indexOf(instance); - if (a > -1) searxNormalRedirectsChecks.splice(a, 1); + browser.storage.local.get("cloudflareBlackList", r => { + redirects = val + searxNormalRedirectsChecks = [...redirects.searx.normal] + searxngNormalRedirectsChecks = [...redirects.searxng.normal] + whoogleNormalRedirectsChecks = [...redirects.whoogle.normal] + librexNormalRedirectsChecks = [...redirects.librex.normal] + for (const instance of r.cloudflareBlackList) { + const a = searxNormalRedirectsChecks.indexOf(instance) + if (a > -1) searxNormalRedirectsChecks.splice(a, 1) - const b = searxngNormalRedirectsChecks.indexOf(instance); - if (b > -1) searxngNormalRedirectsChecks.splice(b, 1); + const b = searxngNormalRedirectsChecks.indexOf(instance) + if (b > -1) searxngNormalRedirectsChecks.splice(b, 1) - const c = whoogleNormalRedirectsChecks.indexOf(instance); - if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); + const c = whoogleNormalRedirectsChecks.indexOf(instance) + if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1) - const d = librexNormalRedirectsChecks.indexOf(instance); - if (d > -1) librexNormalRedirectsChecks.splice(d, 1); - } - browser.storage.local.set({ - searchRedirects: redirects, - searxNormalRedirectsChecks, - searxngNormalRedirectsChecks, - whoogleNormalRedirectsChecks, - librexNormalRedirectsChecks, - }); - }) + const d = librexNormalRedirectsChecks.indexOf(instance) + if (d > -1) librexNormalRedirectsChecks.splice(d, 1) + } + browser.storage.local.set({ + searchRedirects: redirects, + searxNormalRedirectsChecks, + searxngNormalRedirectsChecks, + whoogleNormalRedirectsChecks, + librexNormalRedirectsChecks, + }) + }) } -let - disableSearch, - searchFrontend, - searchRedirects, - protocol, - protocolFallback, - whoogleNormalRedirectsChecks, - whoogleNormalCustomRedirects, - whoogleTorRedirectsChecks, - whoogleTorCustomRedirects, - whoogleI2pRedirectsChecks, - whoogleI2pCustomRedirects, - whoogleLokiCustomRedirects, - searxNormalRedirectsChecks, - searxNormalCustomRedirects, - searxTorRedirectsChecks, - searxTorCustomRedirects, - searxI2pRedirectsChecks, - searxI2pCustomRedirects, - searxLokiCustomRedirects, - searxngNormalRedirectsChecks, - searxngNormalCustomRedirects, - searxngTorRedirectsChecks, - searxngTorCustomRedirects, - searxngI2pRedirectsChecks, - searxngI2pCustomRedirects, - searxngLokiCustomRedirects, - librexNormalRedirectsChecks, - librexNormalCustomRedirects, - librexTorRedirectsChecks, - librexTorCustomRedirects, - librexI2pRedirectsChecks, - librexI2pCustomRedirects, - librexLokiCustomRedirects; +let disableSearch, + searchFrontend, + searchRedirects, + protocol, + protocolFallback, + whoogleNormalRedirectsChecks, + whoogleNormalCustomRedirects, + whoogleTorRedirectsChecks, + whoogleTorCustomRedirects, + whoogleI2pRedirectsChecks, + whoogleI2pCustomRedirects, + whoogleLokiCustomRedirects, + searxNormalRedirectsChecks, + searxNormalCustomRedirects, + searxTorRedirectsChecks, + searxTorCustomRedirects, + searxI2pRedirectsChecks, + searxI2pCustomRedirects, + searxLokiCustomRedirects, + searxngNormalRedirectsChecks, + searxngNormalCustomRedirects, + searxngTorRedirectsChecks, + searxngTorCustomRedirects, + searxngI2pRedirectsChecks, + searxngI2pCustomRedirects, + searxngLokiCustomRedirects, + librexNormalRedirectsChecks, + librexNormalCustomRedirects, + librexTorRedirectsChecks, + librexTorCustomRedirects, + librexI2pRedirectsChecks, + librexI2pCustomRedirects, + librexLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableSearch", - "searchFrontend", - "searchRedirects", - "protocol", - "protocolFallback", - "whoogleNormalRedirectsChecks", - "whoogleNormalCustomRedirects", - "whoogleTorRedirectsChecks", - "whoogleTorCustomRedirects", - "whoogleI2pRedirectsChecks", - "whoogleI2pCustomRedirects", - "whoogleLokiCustomRedirects", - "searxNormalRedirectsChecks", - "searxNormalCustomRedirects", - "searxTorRedirectsChecks", - "searxTorCustomRedirects", - "searxI2pRedirectsChecks", - "searxI2pCustomRedirects", - "searxLokiCustomRedirects", - "searxngNormalRedirectsChecks", - "searxngNormalCustomRedirects", - "searxngTorRedirectsChecks", - "searxngTorCustomRedirects", - "searxngI2pRedirectsChecks", - "searxngI2pCustomRedirects", - "searxngLokiCustomRedirects", - "librexNormalRedirectsChecks", - "librexNormalCustomRedirects", - "librexTorRedirectsChecks", - "librexTorCustomRedirects", - "librexI2pRedirectsChecks", - "librexI2pCustomRedirects", - "librexLokiCustomRedirects" - ], - r => { - disableSearch = r.disableSearch; - searchFrontend = r.searchFrontend; - searchRedirects = r.searchRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks; - whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects; - whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks; - whoogleTorCustomRedirects = r.whoogleTorCustomRedirects; - whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks; - whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects; - whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects; - searxNormalRedirectsChecks = r.searxNormalRedirectsChecks; - searxNormalCustomRedirects = r.searxNormalCustomRedirects; - searxTorRedirectsChecks = r.searxTorRedirectsChecks; - searxTorCustomRedirects = r.searxTorCustomRedirects; - searxI2pRedirectsChecks = r.searxI2pRedirectsChecks; - searxI2pCustomRedirects = r.searxI2pCustomRedirects; - searxLokiCustomRedirects = r.searxLokiCustomRedirects; - searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks; - searxngNormalCustomRedirects = r.searxngNormalCustomRedirects; - searxngTorRedirectsChecks = r.searxngTorRedirectsChecks; - searxngTorCustomRedirects = r.searxngTorCustomRedirects; - searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks; - searxngI2pCustomRedirects = r.searxngI2pCustomRedirects; - searxngLokiCustomRedirects = r.searxngLokiCustomRedirects; - librexNormalRedirectsChecks = r.librexNormalRedirectsChecks; - librexNormalCustomRedirects = r.librexNormalCustomRedirects; - librexTorRedirectsChecks = r.librexTorRedirectsChecks; - librexTorCustomRedirects = r.librexTorCustomRedirects; - librexI2pRedirectsChecks = r.librexI2pRedirectsChecks; - librexI2pCustomRedirects = r.librexI2pCustomRedirects; - librexLokiCustomRedirects = r.librexLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableSearch", + "searchFrontend", + "searchRedirects", + "protocol", + "protocolFallback", + "whoogleNormalRedirectsChecks", + "whoogleNormalCustomRedirects", + "whoogleTorRedirectsChecks", + "whoogleTorCustomRedirects", + "whoogleI2pRedirectsChecks", + "whoogleI2pCustomRedirects", + "whoogleLokiCustomRedirects", + "searxNormalRedirectsChecks", + "searxNormalCustomRedirects", + "searxTorRedirectsChecks", + "searxTorCustomRedirects", + "searxI2pRedirectsChecks", + "searxI2pCustomRedirects", + "searxLokiCustomRedirects", + "searxngNormalRedirectsChecks", + "searxngNormalCustomRedirects", + "searxngTorRedirectsChecks", + "searxngTorCustomRedirects", + "searxngI2pRedirectsChecks", + "searxngI2pCustomRedirects", + "searxngLokiCustomRedirects", + "librexNormalRedirectsChecks", + "librexNormalCustomRedirects", + "librexTorRedirectsChecks", + "librexTorCustomRedirects", + "librexI2pRedirectsChecks", + "librexI2pCustomRedirects", + "librexLokiCustomRedirects", + ], + r => { + disableSearch = r.disableSearch + searchFrontend = r.searchFrontend + searchRedirects = r.searchRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks + whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects + whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks + whoogleTorCustomRedirects = r.whoogleTorCustomRedirects + whoogleI2pRedirectsChecks = r.whoogleI2pRedirectsChecks + whoogleI2pCustomRedirects = r.whoogleI2pCustomRedirects + whoogleLokiCustomRedirects = r.whoogleLokiCustomRedirects + searxNormalRedirectsChecks = r.searxNormalRedirectsChecks + searxNormalCustomRedirects = r.searxNormalCustomRedirects + searxTorRedirectsChecks = r.searxTorRedirectsChecks + searxTorCustomRedirects = r.searxTorCustomRedirects + searxI2pRedirectsChecks = r.searxI2pRedirectsChecks + searxI2pCustomRedirects = r.searxI2pCustomRedirects + searxLokiCustomRedirects = r.searxLokiCustomRedirects + searxngNormalRedirectsChecks = r.searxngNormalRedirectsChecks + searxngNormalCustomRedirects = r.searxngNormalCustomRedirects + searxngTorRedirectsChecks = r.searxngTorRedirectsChecks + searxngTorCustomRedirects = r.searxngTorCustomRedirects + searxngI2pRedirectsChecks = r.searxngI2pRedirectsChecks + searxngI2pCustomRedirects = r.searxngI2pCustomRedirects + searxngLokiCustomRedirects = r.searxngLokiCustomRedirects + librexNormalRedirectsChecks = r.librexNormalRedirectsChecks + librexNormalCustomRedirects = r.librexNormalCustomRedirects + librexTorRedirectsChecks = r.librexTorRedirectsChecks + librexTorCustomRedirects = r.librexTorCustomRedirects + librexI2pRedirectsChecks = r.librexI2pRedirectsChecks + librexI2pCustomRedirects = r.librexI2pCustomRedirects + librexLokiCustomRedirects = r.librexLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function initSearxCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...searxNormalRedirectsChecks, - ...searxNormalCustomRedirects, - ...searxTorRedirectsChecks, - ...searxTorCustomRedirects, - ...searxI2pRedirectsChecks, - ...searxI2pCustomRedirects, - ...searxLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![ + ...searxNormalRedirectsChecks, + ...searxNormalCustomRedirects, + ...searxTorRedirectsChecks, + ...searxTorCustomRedirects, + ...searxI2pRedirectsChecks, + ...searxI2pCustomRedirects, + ...searxLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - } - await utils.copyCookie('searx', from, checkedInstances, 'advanced_search'); - await utils.copyCookie('searx', from, checkedInstances, 'autocomplete'); - await utils.copyCookie('searx', from, checkedInstances, 'categories'); - await utils.copyCookie('searx', from, checkedInstances, 'disabled_engines'); - await utils.copyCookie('searx', from, checkedInstances, 'disabled_plugins'); - await utils.copyCookie('searx', from, checkedInstances, 'doi_resolver'); - await utils.copyCookie('searx', from, checkedInstances, 'enabled_engines'); - await utils.copyCookie('searx', from, checkedInstances, 'enabled_plugins'); - await utils.copyCookie('searx', from, checkedInstances, 'image_proxy'); - await utils.copyCookie('searx', from, checkedInstances, 'language'); - await utils.copyCookie('searx', from, checkedInstances, 'locale'); - await utils.copyCookie('searx', from, checkedInstances, 'method'); - await utils.copyCookie('searx', from, checkedInstances, 'oscar-style'); - await utils.copyCookie('searx', from, checkedInstances, 'results_on_new_tab'); - await utils.copyCookie('searx', from, checkedInstances, 'safesearch'); - await utils.copyCookie('searx', from, checkedInstances, 'theme'); - await utils.copyCookie('searx', from, checkedInstances, 'tokens'); - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects] + } + await utils.copyCookie("searx", from, checkedInstances, "advanced_search") + await utils.copyCookie("searx", from, checkedInstances, "autocomplete") + await utils.copyCookie("searx", from, checkedInstances, "categories") + await utils.copyCookie("searx", from, checkedInstances, "disabled_engines") + await utils.copyCookie("searx", from, checkedInstances, "disabled_plugins") + await utils.copyCookie("searx", from, checkedInstances, "doi_resolver") + await utils.copyCookie("searx", from, checkedInstances, "enabled_engines") + await utils.copyCookie("searx", from, checkedInstances, "enabled_plugins") + await utils.copyCookie("searx", from, checkedInstances, "image_proxy") + await utils.copyCookie("searx", from, checkedInstances, "language") + await utils.copyCookie("searx", from, checkedInstances, "locale") + await utils.copyCookie("searx", from, checkedInstances, "method") + await utils.copyCookie("searx", from, checkedInstances, "oscar-style") + await utils.copyCookie("searx", from, checkedInstances, "results_on_new_tab") + await utils.copyCookie("searx", from, checkedInstances, "safesearch") + await utils.copyCookie("searx", from, checkedInstances, "theme") + await utils.copyCookie("searx", from, checkedInstances, "tokens") + } + resolve(true) + }) } function pasteSearxCookies() { - return new Promise(async resolve => { - await init(); - if (disableSearch || searchFrontend != 'searx') { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...searxLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - } - utils.getCookiesFromStorage('searx', checkedInstances, 'advanced_search'); - utils.getCookiesFromStorage('searx', checkedInstances, 'autocomplete'); - utils.getCookiesFromStorage('searx', checkedInstances, 'categories'); - utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_engines'); - utils.getCookiesFromStorage('searx', checkedInstances, 'disabled_plugins'); - utils.getCookiesFromStorage('searx', checkedInstances, 'doi_resolver'); - utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_engines'); - utils.getCookiesFromStorage('searx', checkedInstances, 'enabled_plugins'); - utils.getCookiesFromStorage('searx', checkedInstances, 'image_proxy'); - utils.getCookiesFromStorage('searx', checkedInstances, 'language'); - utils.getCookiesFromStorage('searx', checkedInstances, 'locale'); - utils.getCookiesFromStorage('searx', checkedInstances, 'method'); - utils.getCookiesFromStorage('searx', checkedInstances, 'oscar-style'); - utils.getCookiesFromStorage('searx', checkedInstances, 'results_on_new_tab'); - utils.getCookiesFromStorage('searx', checkedInstances, 'safesearch'); - utils.getCookiesFromStorage('searx', checkedInstances, 'theme'); - utils.getCookiesFromStorage('searx', checkedInstances, 'tokens'); - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableSearch || searchFrontend != "searx") { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...searxLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects] + } + utils.getCookiesFromStorage("searx", checkedInstances, "advanced_search") + utils.getCookiesFromStorage("searx", checkedInstances, "autocomplete") + utils.getCookiesFromStorage("searx", checkedInstances, "categories") + utils.getCookiesFromStorage("searx", checkedInstances, "disabled_engines") + utils.getCookiesFromStorage("searx", checkedInstances, "disabled_plugins") + utils.getCookiesFromStorage("searx", checkedInstances, "doi_resolver") + utils.getCookiesFromStorage("searx", checkedInstances, "enabled_engines") + utils.getCookiesFromStorage("searx", checkedInstances, "enabled_plugins") + utils.getCookiesFromStorage("searx", checkedInstances, "image_proxy") + utils.getCookiesFromStorage("searx", checkedInstances, "language") + utils.getCookiesFromStorage("searx", checkedInstances, "locale") + utils.getCookiesFromStorage("searx", checkedInstances, "method") + utils.getCookiesFromStorage("searx", checkedInstances, "oscar-style") + utils.getCookiesFromStorage("searx", checkedInstances, "results_on_new_tab") + utils.getCookiesFromStorage("searx", checkedInstances, "safesearch") + utils.getCookiesFromStorage("searx", checkedInstances, "theme") + utils.getCookiesFromStorage("searx", checkedInstances, "tokens") + resolve() + }) } function initSearxngCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...searxngNormalRedirectsChecks, - ...searxngNormalCustomRedirects, - ...searxngTorRedirectsChecks, - ...searxngTorCustomRedirects, - ...searxngI2pRedirectsChecks, - ...searxngI2pCustomRedirects, - ...searxngLokiCustomRedirects, - ].includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![ + ...searxngNormalRedirectsChecks, + ...searxngNormalCustomRedirects, + ...searxngTorRedirectsChecks, + ...searxngTorCustomRedirects, + ...searxngI2pRedirectsChecks, + ...searxngI2pCustomRedirects, + ...searxngLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - } - await utils.copyCookie('searxng', from, checkedInstances, 'autocomplete'); - await utils.copyCookie('searxng', from, checkedInstances, 'categories'); - await utils.copyCookie('searxng', from, checkedInstances, 'disabled_engines'); - await utils.copyCookie('searxng', from, checkedInstances, 'disabled_plugins'); - await utils.copyCookie('searxng', from, checkedInstances, 'doi_resolver'); - await utils.copyCookie('searxng', from, checkedInstances, 'enabled_plugins'); - await utils.copyCookie('searxng', from, checkedInstances, 'enabled_engines'); - await utils.copyCookie('searxng', from, checkedInstances, 'image_proxy'); - await utils.copyCookie('searxng', from, checkedInstances, 'infinite_scroll'); - await utils.copyCookie('searxng', from, checkedInstances, 'language'); - await utils.copyCookie('searxng', from, checkedInstances, 'locale'); - await utils.copyCookie('searxng', from, checkedInstances, 'maintab'); - await utils.copyCookie('searxng', from, checkedInstances, 'method'); - await utils.copyCookie('searxng', from, checkedInstances, 'query_in_title'); - await utils.copyCookie('searxng', from, checkedInstances, 'results_on_new_tab'); - await utils.copyCookie('searxng', from, checkedInstances, 'safesearch'); - await utils.copyCookie('searxng', from, checkedInstances, 'simple_style'); - await utils.copyCookie('searxng', from, checkedInstances, 'theme'); - await utils.copyCookie('searxng', from, checkedInstances, 'tokens'); - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects] + } + await utils.copyCookie("searxng", from, checkedInstances, "autocomplete") + await utils.copyCookie("searxng", from, checkedInstances, "categories") + await utils.copyCookie("searxng", from, checkedInstances, "disabled_engines") + await utils.copyCookie("searxng", from, checkedInstances, "disabled_plugins") + await utils.copyCookie("searxng", from, checkedInstances, "doi_resolver") + await utils.copyCookie("searxng", from, checkedInstances, "enabled_plugins") + await utils.copyCookie("searxng", from, checkedInstances, "enabled_engines") + await utils.copyCookie("searxng", from, checkedInstances, "image_proxy") + await utils.copyCookie("searxng", from, checkedInstances, "infinite_scroll") + await utils.copyCookie("searxng", from, checkedInstances, "language") + await utils.copyCookie("searxng", from, checkedInstances, "locale") + await utils.copyCookie("searxng", from, checkedInstances, "maintab") + await utils.copyCookie("searxng", from, checkedInstances, "method") + await utils.copyCookie("searxng", from, checkedInstances, "query_in_title") + await utils.copyCookie("searxng", from, checkedInstances, "results_on_new_tab") + await utils.copyCookie("searxng", from, checkedInstances, "safesearch") + await utils.copyCookie("searxng", from, checkedInstances, "simple_style") + await utils.copyCookie("searxng", from, checkedInstances, "theme") + await utils.copyCookie("searxng", from, checkedInstances, "tokens") + } + resolve(true) + }) } function pasteSearxngCookies() { - return new Promise(async resolve => { - await init(); - if (disableSearch || searchFrontend != 'searxng', protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...searxngLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - } - utils.getCookiesFromStorage('searxng', checkedInstances, 'autocomplete'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'categories'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_engines'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'disabled_plugins'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'doi_resolver'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_plugins'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'enabled_engines'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'image_proxy'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'infinite_scroll'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'language'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'locale'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'maintab'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'method'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'query_in_title'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'results_on_new_tab'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'safesearch'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'simple_style'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'theme'); - utils.getCookiesFromStorage('searxng', checkedInstances, 'tokens'); - resolve(); - }) + return new Promise(async resolve => { + await init() + if ((disableSearch || searchFrontend != "searxng", protocol === undefined)) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...searxngLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects] + } + utils.getCookiesFromStorage("searxng", checkedInstances, "autocomplete") + utils.getCookiesFromStorage("searxng", checkedInstances, "categories") + utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_engines") + utils.getCookiesFromStorage("searxng", checkedInstances, "disabled_plugins") + utils.getCookiesFromStorage("searxng", checkedInstances, "doi_resolver") + utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_plugins") + utils.getCookiesFromStorage("searxng", checkedInstances, "enabled_engines") + utils.getCookiesFromStorage("searxng", checkedInstances, "image_proxy") + utils.getCookiesFromStorage("searxng", checkedInstances, "infinite_scroll") + utils.getCookiesFromStorage("searxng", checkedInstances, "language") + utils.getCookiesFromStorage("searxng", checkedInstances, "locale") + utils.getCookiesFromStorage("searxng", checkedInstances, "maintab") + utils.getCookiesFromStorage("searxng", checkedInstances, "method") + utils.getCookiesFromStorage("searxng", checkedInstances, "query_in_title") + utils.getCookiesFromStorage("searxng", checkedInstances, "results_on_new_tab") + utils.getCookiesFromStorage("searxng", checkedInstances, "safesearch") + utils.getCookiesFromStorage("searxng", checkedInstances, "simple_style") + utils.getCookiesFromStorage("searxng", checkedInstances, "theme") + utils.getCookiesFromStorage("searxng", checkedInstances, "tokens") + resolve() + }) } function initLibrexCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...librexNormalRedirectsChecks, - ...librexNormalCustomRedirects, - ...librexTorRedirectsChecks, - ...librexTorCustomRedirects, - ...librexI2pRedirectsChecks, - ...librexI2pCustomRedirects, - ...librexLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![ + ...librexNormalRedirectsChecks, + ...librexNormalCustomRedirects, + ...librexTorRedirectsChecks, + ...librexTorCustomRedirects, + ...librexI2pRedirectsChecks, + ...librexI2pCustomRedirects, + ...librexLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - if(!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - } - await utils.copyCookie('librex', from, checkedInstances, 'bibliogram'); - await utils.copyCookie('librex', from, checkedInstances, 'disable_special'); - await utils.copyCookie('librex', from, checkedInstances, 'invidious'); - await utils.copyCookie('librex', from, checkedInstances, 'libreddit'); - await utils.copyCookie('librex', from, checkedInstances, 'nitter'); - await utils.copyCookie('librex', from, checkedInstances, 'proxitok'); - await utils.copyCookie('librex', from, checkedInstances, 'theme'); - await utils.copyCookie('librex', from, checkedInstances, 'wikiless'); - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects] + } + await utils.copyCookie("librex", from, checkedInstances, "bibliogram") + await utils.copyCookie("librex", from, checkedInstances, "disable_special") + await utils.copyCookie("librex", from, checkedInstances, "invidious") + await utils.copyCookie("librex", from, checkedInstances, "libreddit") + await utils.copyCookie("librex", from, checkedInstances, "nitter") + await utils.copyCookie("librex", from, checkedInstances, "proxitok") + await utils.copyCookie("librex", from, checkedInstances, "theme") + await utils.copyCookie("librex", from, checkedInstances, "wikiless") + } + resolve(true) + }) } function pasteLibrexCookies() { - return new Promise(async resolve => { - await init(); - if (disableSearch || searchFrontend != 'librex', protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...librexLokiCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - } - utils.getCookiesFromStorage('librex', checkedInstances, 'bibliogram'); - utils.getCookiesFromStorage('librex', checkedInstances, 'disable_special'); - utils.getCookiesFromStorage('librex', checkedInstances, 'invidious'); - utils.getCookiesFromStorage('librex', checkedInstances, 'libreddit'); - utils.getCookiesFromStorage('librex', checkedInstances, 'nitter'); - utils.getCookiesFromStorage('librex', checkedInstances, 'proxitok'); - utils.getCookiesFromStorage('librex', checkedInstances, 'theme'); - utils.getCookiesFromStorage('librex', checkedInstances, 'wikiless'); - resolve(); - }) + return new Promise(async resolve => { + await init() + if ((disableSearch || searchFrontend != "librex", protocol === undefined)) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...librexLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...librexTorRedirectsChecks, ...librexTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects] + } + utils.getCookiesFromStorage("librex", checkedInstances, "bibliogram") + utils.getCookiesFromStorage("librex", checkedInstances, "disable_special") + utils.getCookiesFromStorage("librex", checkedInstances, "invidious") + utils.getCookiesFromStorage("librex", checkedInstances, "libreddit") + utils.getCookiesFromStorage("librex", checkedInstances, "nitter") + utils.getCookiesFromStorage("librex", checkedInstances, "proxitok") + utils.getCookiesFromStorage("librex", checkedInstances, "theme") + utils.getCookiesFromStorage("librex", checkedInstances, "wikiless") + resolve() + }) } function redirect(url, disableOverride) { - if (disableSearch && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; - if (url.searchParams.has('tbm')) return; - if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return; - let randomInstance; - let path; - if (searchFrontend == 'searx') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...searxLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + if (disableSearch && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return + if (url.searchParams.has("tbm")) return + if (url.hostname.includes("google") && !url.searchParams.has("q") && url.pathname != "/") return + let randomInstance + let path + if (searchFrontend == "searx") { + let instancesList = [] + if (protocol == "loki") instancesList = [...searxLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...searxI2pCustomRedirects, ...searxI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - randomInstance = utils.getRandomInstance(instancesList) - path = "/"; - } - else if (searchFrontend == 'searxng') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...searxngLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + randomInstance = utils.getRandomInstance(instancesList) + path = "/" + } else if (searchFrontend == "searxng") { + let instancesList = [] + if (protocol == "loki") instancesList = [...searxngLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...searxngI2pCustomRedirects, ...searxngI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - randomInstance = utils.getRandomInstance(instancesList) - path = "/"; - } - else if (searchFrontend == 'whoogle') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...whoogleLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + randomInstance = utils.getRandomInstance(instancesList) + path = "/" + } else if (searchFrontend == "whoogle") { + let instancesList = [] + if (protocol == "loki") instancesList = [...whoogleLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...whoogleI2pCustomRedirects, ...whoogleI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - randomInstance = utils.getRandomInstance(instancesList) - path = "/search"; - } - else if (searchFrontend == 'librex') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...librexLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks]; - else if (protocol == 'tor') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - } - if (instancesList.length === 0) { return; } + randomInstance = utils.getRandomInstance(instancesList) + path = "/search" + } else if (searchFrontend == "librex") { + let instancesList = [] + if (protocol == "loki") instancesList = [...librexLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...librexI2pCustomRedirects, ...librexI2pRedirectsChecks] + else if (protocol == "tor") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects] + } + if (instancesList.length === 0) { + return + } - randomInstance = utils.getRandomInstance(instancesList) - path = "/search.php"; - } + randomInstance = utils.getRandomInstance(instancesList) + path = "/search.php" + } - if ( - ((url.hostname.includes('google') || url.hostname.includes('bing')) && !url.searchParams.has('q')) || - (url.hostname.includes('yandex') && !url.searchParams.has('text')) - ) path = '/'; + if (((url.hostname.includes("google") || url.hostname.includes("bing")) && !url.searchParams.has("q")) || (url.hostname.includes("yandex") && !url.searchParams.has("text"))) path = "/" - let searchQuery = ""; - if ( - ( - url.hostname.includes('google') || - url.hostname.includes('bing') || - url.hostname.includes('search.libredirect.invalid') - ) && - url.searchParams.has('q') - ) searchQuery = `?q=${encodeURIComponent(url.searchParams.get('q'))}`; - if (url.hostname.includes('yandex') && url.searchParams.has('text')) searchQuery = `?q=${url.searchParams.get('text')}`; + let searchQuery = "" + if ((url.hostname.includes("google") || url.hostname.includes("bing") || url.hostname.includes("search.libredirect.invalid")) && url.searchParams.has("q")) + searchQuery = `?q=${encodeURIComponent(url.searchParams.get("q"))}` + if (url.hostname.includes("yandex") && url.searchParams.has("text")) searchQuery = `?q=${url.searchParams.get("text")}` - return `${randomInstance}${path}${searchQuery}`; + return `${randomInstance}${path}${searchQuery}` } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableSearch && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - if (![ - ...searchRedirects.searx.normal, - ...searchRedirects.searx.tor, - ...searchRedirects.searx.i2p, + return new Promise(async resolve => { + await init() + if (disableSearch && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + if ( + ![ + ...searchRedirects.searx.normal, + ...searchRedirects.searx.tor, + ...searchRedirects.searx.i2p, - ...searchRedirects.searxng.normal, - ...searchRedirects.searxng.tor, - ...searchRedirects.searxng.i2p, + ...searchRedirects.searxng.normal, + ...searchRedirects.searxng.tor, + ...searchRedirects.searxng.i2p, - ...searchRedirects.whoogle.normal, - ...searchRedirects.whoogle.tor, - ...searchRedirects.whoogle.i2p, + ...searchRedirects.whoogle.normal, + ...searchRedirects.whoogle.tor, + ...searchRedirects.whoogle.i2p, - ...searchRedirects.librex.normal, - ...searchRedirects.librex.tor, - ...searchRedirects.librex.i2p, + ...searchRedirects.librex.normal, + ...searchRedirects.librex.tor, + ...searchRedirects.librex.i2p, - ...searxNormalCustomRedirects, - ...searxTorCustomRedirects, - ...searxI2pCustomRedirects, - ...searxLokiCustomRedirects, + ...searxNormalCustomRedirects, + ...searxTorCustomRedirects, + ...searxI2pCustomRedirects, + ...searxLokiCustomRedirects, - ...searxngNormalCustomRedirects, - ...searxngTorCustomRedirects, - ...searxngI2pCustomRedirects, - ...searxngLokiCustomRedirects, + ...searxngNormalCustomRedirects, + ...searxngTorCustomRedirects, + ...searxngI2pCustomRedirects, + ...searxngLokiCustomRedirects, - ...whoogleNormalCustomRedirects, - ...whoogleTorCustomRedirects, - ...whoogleI2pCustomRedirects, - ...whoogleLokiCustomRedirects, + ...whoogleNormalCustomRedirects, + ...whoogleTorCustomRedirects, + ...whoogleI2pCustomRedirects, + ...whoogleLokiCustomRedirects, - ...librexNormalCustomRedirects, - ...librexTorCustomRedirects, - ...librexI2pCustomRedirects, - ...librexLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + ...librexNormalCustomRedirects, + ...librexTorCustomRedirects, + ...librexI2pCustomRedirects, + ...librexLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - let instancesList = []; - - if (protocol == 'loki') { - if (searchFrontend == 'searx') instancesList = [...searxLokiCustomRedirects]; - else if (searchFrontend == 'searxng') instancesList = [...searxngLokiCustomRedirects]; - else if (searchFrontend == 'whoogle') instancesList = [...whoogleLokiCustomRedirects]; - else if (searchFrontend == 'librex') instancesList = [...librexLokiCustomRedirects]; - } - else if (protocol == 'tor') { - if (searchFrontend == 'searx') instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - else if (searchFrontend == 'searxng') instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects]; - else if (searchFrontend == 'whoogle') instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects]; - else if (searchFrontend == 'librex') instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects]; - } - else if (protocol == 'i2p') { - if (searchFrontend == 'searx') instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; - else if (searchFrontend == 'searxng') instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects]; - else if (searchFrontend == 'whoogle') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]; - else if (searchFrontend == 'librex') instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects]; - } - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - if (searchFrontend == 'searx') instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - else if (searchFrontend == 'searxng') instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects]; - else if (searchFrontend == 'whoogle') instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects]; - else if (searchFrontend == 'librex') instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects]; - } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + let instancesList = [] - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + if (protocol == "loki") { + if (searchFrontend == "searx") instancesList = [...searxLokiCustomRedirects] + else if (searchFrontend == "searxng") instancesList = [...searxngLokiCustomRedirects] + else if (searchFrontend == "whoogle") instancesList = [...whoogleLokiCustomRedirects] + else if (searchFrontend == "librex") instancesList = [...librexLokiCustomRedirects] + } else if (protocol == "tor") { + if (searchFrontend == "searx") instancesList = [...searxTorRedirectsChecks, ...searxTorCustomRedirects] + else if (searchFrontend == "searxng") instancesList = [...searxngTorRedirectsChecks, ...searxngTorCustomRedirects] + else if (searchFrontend == "whoogle") instancesList = [...whoogleTorRedirectsChecks, ...whoogleTorCustomRedirects] + else if (searchFrontend == "librex") instancesList = [...librexTorRedirectsChecks, ...librexTorCustomRedirects] + } else if (protocol == "i2p") { + if (searchFrontend == "searx") instancesList = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects] + else if (searchFrontend == "searxng") instancesList = [...searxngI2pRedirectsChecks, ...searxngI2pCustomRedirects] + else if (searchFrontend == "whoogle") instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects] + else if (searchFrontend == "librex") instancesList = [...librexI2pRedirectsChecks, ...librexI2pCustomRedirects] + } + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + if (searchFrontend == "searx") instancesList = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects] + else if (searchFrontend == "searxng") instancesList = [...searxngNormalRedirectsChecks, ...searxngNormalCustomRedirects] + else if (searchFrontend == "whoogle") instancesList = [...whoogleNormalRedirectsChecks, ...whoogleNormalCustomRedirects] + else if (searchFrontend == "librex") instancesList = [...librexNormalRedirectsChecks, ...librexNormalCustomRedirects] + } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } + + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - /* + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + /* redirects.searx = dataJson.searx; redirects.searxng = dataJson.searxng; redirects.whoogle = dataJson.whoogle; */ - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } - browser.storage.local.get('cloudflareBlackList', async r => { - whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; - searxNormalRedirectsChecks = [...redirects.searx.normal]; - searxngNormalRedirectsChecks = [...redirects.searxng.normal]; - librexNormalRedirectsChecks = [...redirects.librex.normal]; - for (const instance of r.cloudflareBlackList) { - let i; + browser.storage.local.get("cloudflareBlackList", async r => { + whoogleNormalRedirectsChecks = [...redirects.whoogle.normal] + searxNormalRedirectsChecks = [...redirects.searx.normal] + searxngNormalRedirectsChecks = [...redirects.searxng.normal] + librexNormalRedirectsChecks = [...redirects.librex.normal] + for (const instance of r.cloudflareBlackList) { + let i - i = whoogleNormalRedirectsChecks.indexOf(instance); - if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1); + i = whoogleNormalRedirectsChecks.indexOf(instance) + if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1) - i = searxNormalRedirectsChecks.indexOf(instance); - if (i > -1) searxNormalRedirectsChecks.splice(i, 1); + i = searxNormalRedirectsChecks.indexOf(instance) + if (i > -1) searxNormalRedirectsChecks.splice(i, 1) - i = searxngNormalRedirectsChecks.indexOf(instance); - if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); + i = searxngNormalRedirectsChecks.indexOf(instance) + if (i > -1) searxngNormalRedirectsChecks.splice(i, 1) - i = librexNormalRedirectsChecks.indexOf(instance); - if (i > -1) librexNormalRedirectsChecks.splice(i, 1) - } - browser.storage.local.set({ - disableSearch: false, - searchFrontend: 'searxng', - searchRedirects: redirects, - searxngCustomSettings: false, + i = librexNormalRedirectsChecks.indexOf(instance) + if (i > -1) librexNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableSearch: false, + searchFrontend: "searxng", + searchRedirects: redirects, + searxngCustomSettings: false, - whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, - whoogleNormalCustomRedirects: [], + whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, + whoogleNormalCustomRedirects: [], - whoogleTorRedirectsChecks: [...redirects.whoogle.tor], - whoogleTorCustomRedirects: [], + whoogleTorRedirectsChecks: [...redirects.whoogle.tor], + whoogleTorCustomRedirects: [], - whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], - whoogleI2pCustomRedirects: [], + whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], + whoogleI2pCustomRedirects: [], - whoogleLokiRedirectsChecks: [...redirects.whoogle.loki], - whoogleLokiCustomRedirects: [], + whoogleLokiRedirectsChecks: [...redirects.whoogle.loki], + whoogleLokiCustomRedirects: [], - searxNormalRedirectsChecks: searxNormalRedirectsChecks, - searxNormalCustomRedirects: [], + searxNormalRedirectsChecks: searxNormalRedirectsChecks, + searxNormalCustomRedirects: [], - searxTorRedirectsChecks: [...redirects.searx.tor], - searxTorCustomRedirects: [], + searxTorRedirectsChecks: [...redirects.searx.tor], + searxTorCustomRedirects: [], - searxI2pRedirectsChecks: [...redirects.searx.i2p], - searxI2pCustomRedirects: [], + searxI2pRedirectsChecks: [...redirects.searx.i2p], + searxI2pCustomRedirects: [], - searxLokiRedirectsChecks: [...redirects.searx.loki], - searxLokiCustomRedirects: [], + searxLokiRedirectsChecks: [...redirects.searx.loki], + searxLokiCustomRedirects: [], - searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, - searxngNormalCustomRedirects: [], + searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, + searxngNormalCustomRedirects: [], - searxngTorRedirectsChecks: [...redirects.searxng.tor], - searxngTorCustomRedirects: [], + searxngTorRedirectsChecks: [...redirects.searxng.tor], + searxngTorCustomRedirects: [], - searxngI2pRedirectsChecks: [...redirects.searxng.i2p], - searxngI2pCustomRedirects: [], + searxngI2pRedirectsChecks: [...redirects.searxng.i2p], + searxngI2pCustomRedirects: [], - searxngLokiRedirectsChecks: [...redirects.searxng.loki], - searxngLokiCustomRedirects: [], + searxngLokiRedirectsChecks: [...redirects.searxng.loki], + searxngLokiCustomRedirects: [], - librexNormalRedirectsChecks: librexNormalRedirectsChecks, - librexNormalCustomRedirects: [], + librexNormalRedirectsChecks: librexNormalRedirectsChecks, + librexNormalCustomRedirects: [], - librexTorRedirectsChecks: [...redirects.librex.tor], - librexTorCustomRedirects: [], + librexTorRedirectsChecks: [...redirects.librex.tor], + librexTorCustomRedirects: [], - librexI2pRedirectsChecks: [...redirects.librex.i2p], - librexI2pCustomRedirects: [], + librexI2pRedirectsChecks: [...redirects.librex.i2p], + librexI2pCustomRedirects: [], - librexLokiRedirectsChecks: [...redirects.librex.loki], - librexLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + librexLokiRedirectsChecks: [...redirects.librex.loki], + librexLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - initSearxCookies, - pasteSearxCookies, - initSearxngCookies, - pasteSearxngCookies, - initLibrexCookies, - pasteLibrexCookies, - redirect, - initDefaults, - switchInstance, -}; + setRedirects, + initSearxCookies, + pasteSearxCookies, + initSearxngCookies, + pasteSearxngCookies, + initLibrexCookies, + pasteLibrexCookies, + redirect, + initDefaults, + switchInstance, +} diff --git a/src/assets/javascripts/sendTargets.js b/src/assets/javascripts/sendTargets.js index 2ea95d2..ba892fe 100644 --- a/src/assets/javascripts/sendTargets.js +++ b/src/assets/javascripts/sendTargets.js @@ -1,12 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}send\.libredirect\.invalid\/$/, - /^ https ?: \/\/send\.firefox\.com\/$/, - /^https?:\/{2}sendfiles\.online\/$/ -]; +const targets = [/^https?:\/{2}send\.libredirect\.invalid\/$/, /^ https ?: \/\/send\.firefox\.com\/$/, /^https?:\/{2}sendfiles\.online\/$/] const frontends = new Array("send") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -14,167 +10,183 @@ 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]] = [] - } + 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.send = val; - sendNormalRedirectsChecks = [...redirects.send.normal]; - for (const instance of r.cloudflareBlackList) { - const a = sendNormalRedirectsChecks.indexOf(instance); - if (a > -1) sendNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - sendTargetsRedirects: redirects, - sendNormalRedirectsChecks, - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.send = val + sendNormalRedirectsChecks = [...redirects.send.normal] + for (const instance of r.cloudflareBlackList) { + const a = sendNormalRedirectsChecks.indexOf(instance) + if (a > -1) sendNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + sendTargetsRedirects: redirects, + sendNormalRedirectsChecks, + }) + }) } -let - disableSendTarget, - sendTargetsRedirects, - sendNormalRedirectsChecks, - sendNormalCustomRedirects, - sendTorRedirectsChecks, - sendTorCustomRedirects, - sendI2pCustomRedirects, - sendLokiCustomRedirects, - protocol, - protocolFallback; +let disableSendTarget, + sendTargetsRedirects, + sendNormalRedirectsChecks, + sendNormalCustomRedirects, + sendTorRedirectsChecks, + sendTorCustomRedirects, + sendI2pCustomRedirects, + sendLokiCustomRedirects, + protocol, + protocolFallback function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "disableSendTarget", - "sendTargetsRedirects", - "protocol", - "protocolFallback", - "sendNormalRedirectsChecks", - "sendNormalCustomRedirects", - "sendTorRedirectsChecks", - "sendTorCustomRedirects", - "sendI2pCustomRedirects", - "sendLokiCustomRedirects" - ], - r => { - disableSendTarget = r.disableSendTarget; - sendTargetsRedirects = r.sendTargetsRedirects; - sendNormalRedirectsChecks = r.sendNormalRedirectsChecks; - sendNormalCustomRedirects = r.sendNormalCustomRedirects; - sendTorRedirectsChecks = r.sendTorRedirectsChecks; - sendTorCustomRedirects = r.sendTorCustomRedirects; - sendI2pCustomRedirects = r.sendI2pCustomRedirects; - sendLokiCustomRedirects = r.sendLokiCustomRedirects; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableSendTarget", + "sendTargetsRedirects", + "protocol", + "protocolFallback", + "sendNormalRedirectsChecks", + "sendNormalCustomRedirects", + "sendTorRedirectsChecks", + "sendTorCustomRedirects", + "sendI2pCustomRedirects", + "sendLokiCustomRedirects", + ], + r => { + disableSendTarget = r.disableSendTarget + sendTargetsRedirects = r.sendTargetsRedirects + sendNormalRedirectsChecks = r.sendNormalRedirectsChecks + sendNormalCustomRedirects = r.sendNormalCustomRedirects + sendTorRedirectsChecks = r.sendTorRedirectsChecks + sendTorCustomRedirects = r.sendTorCustomRedirects + sendI2pCustomRedirects = r.sendI2pCustomRedirects + sendLokiCustomRedirects = r.sendLokiCustomRedirects + protocol = r.protocol + protocolFallback = r.protocolFallback + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function all() { - return [ - ...sendTargetsRedirects.send.normal, - ...sendTargetsRedirects.send.tor, - ...sendNormalCustomRedirects, - ...sendTorRedirectsChecks, - ...sendTorCustomRedirects, - ...sendI2pCustomRedirects, - ...sendLokiCustomRedirects - ]; + return [ + ...sendTargetsRedirects.send.normal, + ...sendTargetsRedirects.send.tor, + ...sendNormalCustomRedirects, + ...sendTorRedirectsChecks, + ...sendTorCustomRedirects, + ...sendI2pCustomRedirects, + ...sendLokiCustomRedirects, + ] } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableSendTarget && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - if (url.pathname != '/') { resolve(); return; } + return new Promise(async resolve => { + await init() + if (disableSendTarget && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + if (url.pathname != "/") { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...sendLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function redirect(url, type, initiator, disableOverride) { - if (disableSendTarget && !disableOverride) return; - if (type != "main_frame") return; - if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (disableSendTarget && !disableOverride) return + if (type != "main_frame") return + if (initiator && (all().includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...sendLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...sendI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + let instancesList = [] + if (protocol == "loki") instancesList = [...sendLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...sendI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList); - return randomInstance; + const randomInstance = utils.getRandomInstance(instancesList) + return randomInstance } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', async r => { - sendNormalRedirectsChecks = [...redirects.send.normal]; - for (const instance of r.cloudflareBlackList) { - let i = sendNormalRedirectsChecks.indexOf(instance); - if (i > -1) sendNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableSendTarget: false, - sendTargetsRedirects: redirects, + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + sendNormalRedirectsChecks = [...redirects.send.normal] + for (const instance of r.cloudflareBlackList) { + let i = sendNormalRedirectsChecks.indexOf(instance) + if (i > -1) sendNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableSendTarget: false, + sendTargetsRedirects: redirects, - sendNormalRedirectsChecks: sendNormalRedirectsChecks, - sendNormalCustomRedirects: [], + sendNormalRedirectsChecks: sendNormalRedirectsChecks, + sendNormalCustomRedirects: [], - sendTorRedirectsChecks: [...redirects.send.tor], - sendTorCustomRedirects: [], + sendTorRedirectsChecks: [...redirects.send.tor], + sendTorCustomRedirects: [], - sendI2pRedirectsChecks: [...redirects.send.i2p], - sendI2pCustomRedirects: [], + sendI2pRedirectsChecks: [...redirects.send.i2p], + sendI2pCustomRedirects: [], - sendLokiRedirectsChecks: [...redirects.send.loki], - sendLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + sendLokiRedirectsChecks: [...redirects.send.loki], + sendLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - redirect, - switchInstance, - initDefaults, -}; + setRedirects, + redirect, + switchInstance, + initDefaults, +} diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js index a5c14a2..ba4a9ff 100644 --- a/src/assets/javascripts/tiktok.js +++ b/src/assets/javascripts/tiktok.js @@ -1,10 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|)tiktok\.com.*/ -]; +const targets = [/^https?:\/{2}(www\.|)tiktok\.com.*/] const frontends = new Array("proxiTok") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -12,232 +10,251 @@ 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]] = [] - } + 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.proxiTok = val; - proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]; - for (const instance of r.cloudflareBlackList) { - const a = proxiTokNormalRedirectsChecks.indexOf(instance); - if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - tiktokRedirects: redirects, - proxiTokNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.proxiTok = val + proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal] + for (const instance of r.cloudflareBlackList) { + const a = proxiTokNormalRedirectsChecks.indexOf(instance) + if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + tiktokRedirects: redirects, + proxiTokNormalRedirectsChecks, + }) + }) } function initProxiTokCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...proxiTokNormalRedirectsChecks, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorRedirectsChecks, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects, - ].includes(protocolHost)) resolve(); + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![ + ...proxiTokNormalRedirectsChecks, + ...proxiTokNormalCustomRedirects, + ...proxiTokTorRedirectsChecks, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ].includes(protocolHost) + ) + resolve() - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - await utils.copyCookie('proxitok', from, checkedInstances, 'theme'); - await utils.copyCookie('proxitok', from, checkedInstances, 'api-legacy'); - } - resolve(true); - }) + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + await utils.copyCookie("proxitok", from, checkedInstances, "theme") + await utils.copyCookie("proxitok", from, checkedInstances, "api-legacy") + } + resolve(true) + }) } function pasteProxiTokCookies() { - return new Promise(async resolve => { - await init(); - if (disableTiktok || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - utils.getCookiesFromStorage('proxitok', checkedInstances, 'theme'); - utils.getCookiesFromStorage('proxitok', checkedInstances, 'api-legacy'); - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableTiktok || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + utils.getCookiesFromStorage("proxitok", checkedInstances, "theme") + utils.getCookiesFromStorage("proxitok", checkedInstances, "api-legacy") + resolve() + }) } -let - disableTiktok, - protocol, - protocolFallback, - tiktokRedirects, - proxiTokNormalRedirectsChecks, - proxiTokNormalCustomRedirects, - proxiTokTorRedirectsChecks, - proxiTokTorCustomRedirects, - proxiTokI2pCustomRedirects, - proxiTokLokiCustomRedirects; +let disableTiktok, + protocol, + protocolFallback, + tiktokRedirects, + proxiTokNormalRedirectsChecks, + proxiTokNormalCustomRedirects, + proxiTokTorRedirectsChecks, + proxiTokTorCustomRedirects, + proxiTokI2pCustomRedirects, + proxiTokLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableTiktok", - "protocol", - "protocolFallback", - "tiktokRedirects", - "proxiTokNormalRedirectsChecks", - "proxiTokNormalCustomRedirects", - "proxiTokTorRedirectsChecks", - "proxiTokTorCustomRedirects", - "proxiTokI2pCustomRedirects", - "proxiTokLokiCustomRedirects" - ], - r => { - disableTiktok = r.disableTiktok; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - tiktokRedirects = r.tiktokRedirects; - proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks; - proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects; - proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks; - proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects; - proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects; - proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableTiktok", + "protocol", + "protocolFallback", + "tiktokRedirects", + "proxiTokNormalRedirectsChecks", + "proxiTokNormalCustomRedirects", + "proxiTokTorRedirectsChecks", + "proxiTokTorCustomRedirects", + "proxiTokI2pCustomRedirects", + "proxiTokLokiCustomRedirects", + ], + r => { + disableTiktok = r.disableTiktok + protocol = r.protocol + protocolFallback = r.protocolFallback + tiktokRedirects = r.tiktokRedirects + proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks + proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects + proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks + proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects + proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects + proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) // https://www.tiktok.com/@keysikaspol/video/7061265241887345946 // https://www.tiktok.com/@keysikaspol function redirect(url, type, initiator, disableOverride) { - if (disableTiktok && !disableOverride) return; - if (type != "main_frame") return; - const all = [ - ...tiktokRedirects.proxiTok.normal, - ...proxiTokNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (disableTiktok && !disableOverride) return + if (type != "main_frame") return + const all = [...tiktokRedirects.proxiTok.normal, ...proxiTokNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return - let instancesList = []; - if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + let instancesList = [] + if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList); - return `${randomInstance}${url.pathname}`; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(url); - const all = [ - ...tiktokRedirects.proxiTok.normal, - ...tiktokRedirects.proxiTok.tor, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(url) + const all = [ + ...tiktokRedirects.proxiTok.normal, + ...tiktokRedirects.proxiTok.tor, + ...proxiTokNormalCustomRedirects, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } - resolve(`https://tiktok.com${url.pathname}${url.search}`); - }) + resolve(`https://tiktok.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableTiktok && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...tiktokRedirects.proxiTok.tor, - ...tiktokRedirects.proxiTok.normal, + return new Promise(async resolve => { + await init() + if (disableTiktok && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [ + ...tiktokRedirects.proxiTok.tor, + ...tiktokRedirects.proxiTok.normal, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } + ...proxiTokNormalCustomRedirects, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } - let instancesList = []; - if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } + let instancesList = [] + if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.set({ - disableTiktok: false, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableTiktok: false, - tiktokRedirects: redirects, + tiktokRedirects: redirects, - proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal], - proxiTokNormalCustomRedirects: [], + proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal], + proxiTokNormalCustomRedirects: [], - proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], - proxiTokTorCustomRedirects: [], + proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], + proxiTokTorCustomRedirects: [], - proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], - proxiTokI2pCustomRedirects: [], + proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], + proxiTokI2pCustomRedirects: [], - proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], - proxiTokLokiCustomRedirects: [] - }, () => resolve()); - }); - }) + proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], + proxiTokLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, + setRedirects, - redirect, - reverse, - switchInstance, + redirect, + reverse, + switchInstance, - initProxiTokCookies, - pasteProxiTokCookies, + initProxiTokCookies, + pasteProxiTokCookies, - initDefaults -}; + initDefaults, +} diff --git a/src/assets/javascripts/translate/get_lingva_preferences.js b/src/assets/javascripts/translate/get_lingva_preferences.js index 40def6a..0d6ff6e 100644 --- a/src/assets/javascripts/translate/get_lingva_preferences.js +++ b/src/assets/javascripts/translate/get_lingva_preferences.js @@ -1,12 +1,10 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -browser.storage.local.set( - { - ['lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'), - lingva_isauto: localStorage.getItem('isauto'), - lingva_source: localStorage.getItem('source'), - lingva_target: localStorage.getItem('target'), - } -) +browser.storage.local.set({ + ["lingva_chakra-ui-color-mode"]: localStorage.getItem("chakra-ui-color-mode"), + lingva_isauto: localStorage.getItem("isauto"), + lingva_source: localStorage.getItem("source"), + lingva_target: localStorage.getItem("target"), +}) -console.log(localStorage.getItem('target')); \ No newline at end of file +console.log(localStorage.getItem("target")) diff --git a/src/assets/javascripts/translate/set_lingva_preferences.js b/src/assets/javascripts/translate/set_lingva_preferences.js index a0f2ad8..04a36e1 100644 --- a/src/assets/javascripts/translate/set_lingva_preferences.js +++ b/src/assets/javascripts/translate/set_lingva_preferences.js @@ -1,17 +1,9 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -browser.storage.local.get( - [ - "lingva_chakra-ui-color-mode", - "lingva_isauto", - "lingva_source", - "lingva_target", - ], - r => { - if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']); - if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto); - if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source); - if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target); - window.close(); - } -) +browser.storage.local.get(["lingva_chakra-ui-color-mode", "lingva_isauto", "lingva_source", "lingva_target"], r => { + if (r["lingva_chakra-ui-color-mode"] !== undefined) localStorage.setItem("chakra-ui-color-mode", r["lingva_chakra-ui-color-mode"]) + if (r.lingva_isauto !== undefined) localStorage.setItem("isauto", r.lingva_isauto) + if (r.lingva_source !== undefined) localStorage.setItem("source", r.lingva_source) + if (r.lingva_target !== undefined) localStorage.setItem("target", r.lingva_target) + window.close() +}) diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js index 75c5b5f..5512f7f 100644 --- a/src/assets/javascripts/translate/translate.js +++ b/src/assets/javascripts/translate/translate.js @@ -1,379 +1,413 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from '../utils.js' +import utils from "../utils.js" -const targets = [ - /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//, -]; +const targets = [/^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//] const frontends = new Array("simplyTranslate", "lingva") const protocols = new Array("normal", "tor", "i2p", "loki") -let redirects = {}; +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]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } -let - translateDisable, - translateFrontend, - protocol, - protocolFallback, - translateRedirects, - simplyTranslateNormalRedirectsChecks, - simplyTranslateNormalCustomRedirects, - simplyTranslateTorRedirectsChecks, - simplyTranslateTorCustomRedirects, - simplyTranslateI2pRedirectsChecks, - simplyTranslateI2pCustomRedirects, - simplyTranslateLokiRedirectsChecks, - simplyTranslateLokiCustomRedirects, - lingvaNormalRedirectsChecks, - lingvaNormalCustomRedirects, - lingvaTorRedirectsChecks, - lingvaTorCustomRedirects, - lingvaI2pCustomRedirects, - lingvaLokiCustomRedirects +let translateDisable, + translateFrontend, + protocol, + protocolFallback, + translateRedirects, + simplyTranslateNormalRedirectsChecks, + simplyTranslateNormalCustomRedirects, + simplyTranslateTorRedirectsChecks, + simplyTranslateTorCustomRedirects, + simplyTranslateI2pRedirectsChecks, + simplyTranslateI2pCustomRedirects, + simplyTranslateLokiRedirectsChecks, + simplyTranslateLokiCustomRedirects, + lingvaNormalRedirectsChecks, + lingvaNormalCustomRedirects, + lingvaTorRedirectsChecks, + lingvaTorCustomRedirects, + lingvaI2pCustomRedirects, + lingvaLokiCustomRedirects function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "translateDisable", - "translateFrontend", - "protocol", - "protocolFallback", - "translateRedirects", - "simplyTranslateNormalRedirectsChecks", - "simplyTranslateNormalCustomRedirects", - "simplyTranslateTorRedirectsChecks", - "simplyTranslateTorCustomRedirects", - "simplyTranslateI2pRedirectsChecks", - "simplyTranslateI2pCustomRedirects", - "simplyTranslateLokiRedirectsChecks", - "simplyTranslateLokiCustomRedirects", + return new Promise(resolve => { + browser.storage.local.get( + [ + "translateDisable", + "translateFrontend", + "protocol", + "protocolFallback", + "translateRedirects", + "simplyTranslateNormalRedirectsChecks", + "simplyTranslateNormalCustomRedirects", + "simplyTranslateTorRedirectsChecks", + "simplyTranslateTorCustomRedirects", + "simplyTranslateI2pRedirectsChecks", + "simplyTranslateI2pCustomRedirects", + "simplyTranslateLokiRedirectsChecks", + "simplyTranslateLokiCustomRedirects", - "lingvaNormalRedirectsChecks", - "lingvaNormalCustomRedirects", - "lingvaTorRedirectsChecks", - "lingvaTorCustomRedirects", - "lingvaI2pCustomRedirects", - "lingvaLokiCustomRedirects" - ], - r => { - translateDisable = r.translateDisable; - translateFrontend = r.translateFrontend; - protocol = r.protocol; - protocolFallback = r.protocolFallback - translateRedirects = r.translateRedirects; - simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks; - simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects; - simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks; - simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects; - simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks; - simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects; - simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks; - simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects; - lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks; - lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects; - lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks; - lingvaTorCustomRedirects = r.lingvaTorCustomRedirects; - lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects; - lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects; - resolve(); - } - ) - }) + "lingvaNormalRedirectsChecks", + "lingvaNormalCustomRedirects", + "lingvaTorRedirectsChecks", + "lingvaTorCustomRedirects", + "lingvaI2pCustomRedirects", + "lingvaLokiCustomRedirects", + ], + r => { + translateDisable = r.translateDisable + translateFrontend = r.translateFrontend + protocol = r.protocol + protocolFallback = r.protocolFallback + translateRedirects = r.translateRedirects + simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks + simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects + simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks + simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects + simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks + simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects + simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks + simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects + lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks + lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects + lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks + lingvaTorCustomRedirects = r.lingvaTorCustomRedirects + lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects + lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function setRedirects(val) { - browser.storage.local.get('cloudflareBlackList', r => { - redirects = val; - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of r.cloudflareBlackList) { - const i = lingvaNormalRedirectsChecks.indexOf(instance); - if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - translateRedirects: redirects, - simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, - simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, - simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, - simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, - lingvaNormalRedirectsChecks, - lingvaTorRedirectsChecks: redirects.lingva.tor, - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects = val + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of r.cloudflareBlackList) { + const i = lingvaNormalRedirectsChecks.indexOf(instance) + if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set({ + translateRedirects: redirects, + simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, + simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, + simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, + simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, + lingvaNormalRedirectsChecks, + lingvaTorRedirectsChecks: redirects.lingva.tor, + }) + }) } function copyPasteLingvaLocalStorage(test, url, tabId) { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (![ - ...lingvaNormalRedirectsChecks, - ...lingvaNormalCustomRedirects, - ...lingvaTorRedirectsChecks, - ...lingvaTorCustomRedirects, - ...lingvaI2pCustomRedirects, - ...lingvaLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "lingva") { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if ( + ![...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects, ...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects, ...lingvaI2pCustomRedirects, ...lingvaLokiCustomRedirects].includes( + protocolHost + ) + ) { + resolve() + return + } - if (!test) { - browser.tabs.executeScript( - tabId, - { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" } - ); + if (!test) { + browser.tabs.executeScript(tabId, { + file: "/assets/javascripts/translate/get_lingva_preferences.js", + runAt: "document_start", + }) - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - const i = checkedInstances.indexOf(protocolHost); - if (i !== -1) checkedInstances.splice(i, 1); - if (checkedInstances.length === 0) { resolve(); return; } - for (const to of checkedInstances) - browser.tabs.create( - { url: to }, - tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" }) - ); - } - resolve(true); - } - ) + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects] + //...lingvaI2pRedirectsChecks, + else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + const i = checkedInstances.indexOf(protocolHost) + if (i !== -1) checkedInstances.splice(i, 1) + if (checkedInstances.length === 0) { + resolve() + return + } + for (const to of checkedInstances) + browser.tabs.create({ url: to }, tab => + browser.tabs.executeScript(tab.id, { + file: "/assets/javascripts/translate/set_lingva_preferences.js", + runAt: "document_start", + }) + ) + } + resolve(true) + }) } function pasteLingvaLocalStorage() { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - for (const to of checkedInstances) - browser.tabs.create({ url: to }, - tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" })) - resolve(); - }) + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "lingva") { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects] + //...lingvaI2pRedirectsChecks, + else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + for (const to of checkedInstances) + browser.tabs.create({ url: to }, tab => + browser.tabs.executeScript(tab.id, { + file: "/assets/javascripts/translate/set_lingva_preferences.js", + runAt: "document_start", + }) + ) + resolve() + }) } function copyPasteSimplyTranslateCookies(test, from) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(from); - if (![ - ...simplyTranslateNormalRedirectsChecks, - ...simplyTranslateNormalCustomRedirects, - ...simplyTranslateTorRedirectsChecks, - ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2pRedirectsChecks, - ...simplyTranslateI2pCustomRedirects, - ...simplyTranslateLokiRedirectsChecks, - ...simplyTranslateLokiCustomRedirects, - ].includes(protocolHost)) { resolve(); return; } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] - else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'use_text_fields'); - } - resolve(true); - } - ) + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + if ( + ![ + ...simplyTranslateNormalRedirectsChecks, + ...simplyTranslateNormalCustomRedirects, + ...simplyTranslateTorRedirectsChecks, + ...simplyTranslateTorCustomRedirects, + ...simplyTranslateI2pRedirectsChecks, + ...simplyTranslateI2pCustomRedirects, + ...simplyTranslateLokiRedirectsChecks, + ...simplyTranslateLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + await utils.copyCookie("simplyTranslate", from, checkedInstances, "from_lang") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "to_lang") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "tts_enabled") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "use_text_fields") + } + resolve(true) + }) } function pasteSimplyTranslateCookies() { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] - else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'use_text_fields'); - resolve(); - } - ) + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "simplyTranslate") { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "from_lang") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "to_lang") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "tts_enabled") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "use_text_fields") + resolve() + }) } function redirect(url, disableOverride) { - if (translateDisable && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; + if (translateDisable && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return - if (translateFrontend == 'simplyTranslate') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + if (translateFrontend == "simplyTranslate") { + let instancesList = [] + if (protocol == "loki") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList) - return `${randomInstance}/${url.search}`; - } - else if (translateFrontend == 'lingva') { - let params_arr = url.search.split('&'); - params_arr[0] = params_arr[0].substring(1); - let params = {}; - for (let i = 0; i < params_arr.length; i++) { - let pair = params_arr[i].split('='); - params[pair[0]] = pair[1]; - } - let instancesList = []; - if (protocol == 'loki') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}/${url.search}` + } else if (translateFrontend == "lingva") { + let params_arr = url.search.split("&") + params_arr[0] = params_arr[0].substring(1) + let params = {} + for (let i = 0; i < params_arr.length; i++) { + let pair = params_arr[i].split("=") + params[pair[0]] = pair[1] + } + let instancesList = [] + if (protocol == "loki") instancesList = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks, + if (protocol == "tor") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList) - if (params.sl && params.tl && params.text) { - return `${randomInstance}/${params.sl}/${params.tl}/${params.text}` - } - return randomInstance; - } + const randomInstance = utils.getRandomInstance(instancesList) + if (params.sl && params.tl && params.text) { + return `${randomInstance}/${params.sl}/${params.tl}/${params.text}` + } + return randomInstance + } } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (translateDisable && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (![ - ...translateRedirects.simplyTranslate.normal, - ...translateRedirects.simplyTranslate.tor, - ...translateRedirects.simplyTranslate.i2p, - ...translateRedirects.simplyTranslate.loki, + return new Promise(async resolve => { + await init() + if (translateDisable && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if ( + ![ + ...translateRedirects.simplyTranslate.normal, + ...translateRedirects.simplyTranslate.tor, + ...translateRedirects.simplyTranslate.i2p, + ...translateRedirects.simplyTranslate.loki, - ...simplyTranslateNormalCustomRedirects, - ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2pCustomRedirects, - ...simplyTranslateLokiCustomRedirects, + ...simplyTranslateNormalCustomRedirects, + ...simplyTranslateTorCustomRedirects, + ...simplyTranslateI2pCustomRedirects, + ...simplyTranslateLokiCustomRedirects, - ...translateRedirects.lingva.normal, - ...translateRedirects.lingva.tor, + ...translateRedirects.lingva.normal, + ...translateRedirects.lingva.tor, - ...lingvaNormalCustomRedirects, - ...lingvaTorCustomRedirects, - ...lingvaI2pCustomRedirects, - ...lingvaLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } + ...lingvaNormalCustomRedirects, + ...lingvaTorCustomRedirects, + ...lingvaI2pCustomRedirects, + ...lingvaLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } - let instancesList; + let instancesList - if (protocol == 'loki') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - } - else if (protocol == 'i2p') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - } - else if (protocol == 'tor') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - } - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } + if (protocol == "loki") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaLokiCustomRedirects] //...lingvaLokiRedirectsChecks, + } else if (protocol == "i2p") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks, + } else if (protocol == "tor") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + } + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', - async r => { - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of r.cloudflareBlackList) { - const i = lingvaNormalRedirectsChecks.indexOf(instance); - if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - translateDisable: false, - translateFrontend: "simplyTranslate", - translateRedirects: redirects, + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of r.cloudflareBlackList) { + const i = lingvaNormalRedirectsChecks.indexOf(instance) + if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + translateDisable: false, + translateFrontend: "simplyTranslate", + translateRedirects: redirects, - simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], - simplyTranslateNormalCustomRedirects: [], - - simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], - simplyTranslateTorCustomRedirects: [], - - simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], - simplyTranslateI2pCustomRedirects: [], - - simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], - simplyTranslateLokiCustomRedirects: [], + simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], + simplyTranslateNormalCustomRedirects: [], - lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, - lingvaNormalCustomRedirects: [], + simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], + simplyTranslateTorCustomRedirects: [], - lingvaTorRedirectsChecks: [...redirects.lingva.tor], - lingvaTorCustomRedirects: [], + simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], + simplyTranslateI2pCustomRedirects: [], - lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], - lingvaI2pCustomRedirects: [], + simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], + simplyTranslateLokiCustomRedirects: [], - lingvaLokiRedirectsChecks: [...redirects.lingva.loki], - lingvaLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, + lingvaNormalCustomRedirects: [], + + lingvaTorRedirectsChecks: [...redirects.lingva.tor], + lingvaTorCustomRedirects: [], + + lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], + lingvaI2pCustomRedirects: [], + + lingvaLokiRedirectsChecks: [...redirects.lingva.loki], + lingvaLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - copyPasteSimplyTranslateCookies, - pasteSimplyTranslateCookies, - copyPasteLingvaLocalStorage, - pasteLingvaLocalStorage, - setRedirects, - redirect, - initDefaults, - switchInstance, -}; + copyPasteSimplyTranslateCookies, + pasteSimplyTranslateCookies, + copyPasteLingvaLocalStorage, + pasteLingvaLocalStorage, + setRedirects, + redirect, + initDefaults, + switchInstance, +} diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js index 0a85192..1ec4d8e 100644 --- a/src/assets/javascripts/twitter.js +++ b/src/assets/javascripts/twitter.js @@ -1,13 +1,8 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from './utils.js' +import utils from "./utils.js" -const targets = [ - /^https?:\/{2}(www\.|mobile\.|)twitter\.com/, - /^https?:\/{2}(pbs\.|video\.|)twimg\.com/, - /^https?:\/{2}platform\.twitter\.com\/embed/, - /^https?:\/{2}t\.co/ -]; +const targets = [/^https?:\/{2}(www\.|mobile\.|)twitter\.com/, /^https?:\/{2}(pbs\.|video\.|)twimg\.com/, /^https?:\/{2}platform\.twitter\.com\/embed/, /^https?:\/{2}t\.co/] const frontends = new Array("nitter") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -15,287 +10,295 @@ 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]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } function setRedirects(val) { - browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], r => { - redirects.nitter = val; - nitterNormalRedirectsChecks = [...redirects.nitter.normal]; - for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) { - let i = nitterNormalRedirectsChecks.indexOf(instance); - if (i > -1) nitterNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - twitterRedirects: redirects, - nitterNormalRedirectsChecks, - nitterTorRedirectsChecks: [...redirects.nitter.tor] - }) - }) + browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], r => { + redirects.nitter = val + nitterNormalRedirectsChecks = [...redirects.nitter.normal] + for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) { + let i = nitterNormalRedirectsChecks.indexOf(instance) + if (i > -1) nitterNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set({ + twitterRedirects: redirects, + nitterNormalRedirectsChecks, + nitterTorRedirectsChecks: [...redirects.nitter.tor], + }) + }) } -let - disableTwitter, - protocol, - protocolFallback, - twitterRedirects, - twitterRedirectType, - nitterNormalRedirectsChecks, - nitterNormalCustomRedirects, - nitterTorRedirectsChecks, - nitterTorCustomRedirects, - nitterI2pCustomRedirects, - nitterLokiCustomRedirects; +let disableTwitter, + protocol, + protocolFallback, + twitterRedirects, + twitterRedirectType, + nitterNormalRedirectsChecks, + nitterNormalCustomRedirects, + nitterTorRedirectsChecks, + nitterTorCustomRedirects, + nitterI2pCustomRedirects, + nitterLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableTwitter", - "protocol", - "protocolFallback", - "twitterRedirects", - "twitterRedirectType", - "nitterNormalRedirectsChecks", - "nitterNormalCustomRedirects", - "nitterTorRedirectsChecks", - "nitterTorCustomRedirects", - "nitterI2pCustomRedirects", - "nitterLokiCustomRedirects" - ], - r => { - disableTwitter = r.disableTwitter; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - twitterRedirects = r.twitterRedirects; - twitterRedirectType = r.twitterRedirectType; - nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks; - nitterNormalCustomRedirects = r.nitterNormalCustomRedirects; - nitterTorRedirectsChecks = r.nitterTorRedirectsChecks; - nitterTorCustomRedirects = r.nitterTorCustomRedirects; - nitterI2pCustomRedirects = r.nitterI2pCustomRedirects; - nitterLokiCustomRedirects = r.nitterLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableTwitter", + "protocol", + "protocolFallback", + "twitterRedirects", + "twitterRedirectType", + "nitterNormalRedirectsChecks", + "nitterNormalCustomRedirects", + "nitterTorRedirectsChecks", + "nitterTorCustomRedirects", + "nitterI2pCustomRedirects", + "nitterLokiCustomRedirects", + ], + r => { + disableTwitter = r.disableTwitter + protocol = r.protocol + protocolFallback = r.protocolFallback + twitterRedirects = r.twitterRedirects + twitterRedirectType = r.twitterRedirectType + nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks + nitterNormalCustomRedirects = r.nitterNormalCustomRedirects + nitterTorRedirectsChecks = r.nitterTorRedirectsChecks + nitterTorCustomRedirects = r.nitterTorCustomRedirects + nitterI2pCustomRedirects = r.nitterI2pCustomRedirects + nitterLokiCustomRedirects = r.nitterLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function all() { - return [ - ...nitterNormalRedirectsChecks, - ...nitterTorRedirectsChecks, - ...nitterNormalCustomRedirects, - ...nitterTorCustomRedirects, - ...nitterI2pCustomRedirects, - ...nitterLokiCustomRedirects - ]; + return [...nitterNormalRedirectsChecks, ...nitterTorRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects, ...nitterI2pCustomRedirects, ...nitterLokiCustomRedirects] } function redirect(url, type, initiator, disableOverride) { - if (disableTwitter && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; - if (url.pathname.split("/").includes("home")) return; - if (initiator && all().includes(initiator.origin)) return 'BYPASSTAB'; - if (twitterRedirectType == 'sub_frame' && type == "main_frame") return; - if (twitterRedirectType == 'main_frame' && type != "main_frame") return; + if (disableTwitter && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return + if (url.pathname.split("/").includes("home")) return + if (initiator && all().includes(initiator.origin)) return "BYPASSTAB" + if (twitterRedirectType == "sub_frame" && type == "main_frame") return + if (twitterRedirectType == "main_frame" && type != "main_frame") return - let instancesList = []; - if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - } - if (instancesList.length === 0) return; + let instancesList = [] + if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] + } + if (instancesList.length === 0) return - const randomInstance = utils.getRandomInstance(instancesList); - // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg - if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") { - const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/); - const query = encodeURIComponent(`${id}.${format}?${extra}`); - return `${randomInstance}/pic${url.pathname}${query}`; - } - else if (url.pathname.split("/").includes("tweets")) - return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`; - else if (url.host == 't.co') - return `${randomInstance}/t.co${url.pathname}`; - else - return `${randomInstance}${url.pathname}${url.search}`; + const randomInstance = utils.getRandomInstance(instancesList) + // https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg + if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") { + const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/) + const query = encodeURIComponent(`${id}.${format}?${extra}`) + return `${randomInstance}/pic${url.pathname}${query}` + } else if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}` + else if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}` + else return `${randomInstance}${url.pathname}${url.search}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - resolve(`https://twitter.com${url.pathname}${url.search}`); - }) + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + resolve(`https://twitter.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableTwitter && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) { resolve(); return; } - let instancesList = []; - if (protocol == 'loki') instancesList = [...nitterI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...nitterLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - } + return new Promise(async resolve => { + await init() + if (disableTwitter && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) { + resolve() + return + } + let instancesList = [] + if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] + } - let index = instancesList.indexOf(protocolHost); - if (index > -1) instancesList.splice(index, 1); - if (instancesList.length === 0) { resolve(); return; } + let index = instancesList.indexOf(protocolHost) + if (index > -1) instancesList.splice(index, 1) + if (instancesList.length === 0) { + resolve() + return + } - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function removeXFrameOptions(e) { - if (e.type != 'sub_frame') return; - let url = new URL(e.url); - let protocolHost = utils.protocolHost(url); - if (!all().includes(protocolHost)) return; - let isChanged = false; - for (const i in e.responseHeaders) { - if (e.responseHeaders[i].name == 'x-frame-options') { - e.responseHeaders.splice(i, 1); - isChanged = true; - } - else if (e.responseHeaders[i].name == 'content-security-policy') { - e.responseHeaders.splice(i, 1); - isChanged = true; - } - } - if (isChanged) return { responseHeaders: e.responseHeaders }; + if (e.type != "sub_frame") return + let url = new URL(e.url) + let protocolHost = utils.protocolHost(url) + if (!all().includes(protocolHost)) return + let isChanged = false + for (const i in e.responseHeaders) { + if (e.responseHeaders[i].name == "x-frame-options") { + e.responseHeaders.splice(i, 1) + isChanged = true + } else if (e.responseHeaders[i].name == "content-security-policy") { + e.responseHeaders.splice(i, 1) + isChanged = true + } + } + if (isChanged) return { responseHeaders: e.responseHeaders } } function initNitterCookies(test, from) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(from); - if (!all().includes(protocolHost) - ) { resolve(); return; } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - } - await utils.copyCookie('nitter', from, checkedInstances, 'theme'); - await utils.copyCookie('nitter', from, checkedInstances, 'infiniteScroll'); - await utils.copyCookie('nitter', from, checkedInstances, 'stickyProfile'); - await utils.copyCookie('nitter', from, checkedInstances, 'bidiSupport'); - await utils.copyCookie('nitter', from, checkedInstances, 'hideTweetStats'); - await utils.copyCookie('nitter', from, checkedInstances, 'hideBanner'); - await utils.copyCookie('nitter', from, checkedInstances, 'hidePins'); - await utils.copyCookie('nitter', from, checkedInstances, 'hideReplies'); - await utils.copyCookie('nitter', from, checkedInstances, 'squareAvatars'); - await utils.copyCookie('nitter', from, checkedInstances, 'mp4Playback'); - await utils.copyCookie('nitter', from, checkedInstances, 'hlsPlayback'); - await utils.copyCookie('nitter', from, checkedInstances, 'proxyVideos'); - await utils.copyCookie('nitter', from, checkedInstances, 'muteVideos'); - await utils.copyCookie('nitter', from, checkedInstances, 'autoplayGifs'); + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + if (!all().includes(protocolHost)) { + resolve() + return + } + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] + } + await utils.copyCookie("nitter", from, checkedInstances, "theme") + await utils.copyCookie("nitter", from, checkedInstances, "infiniteScroll") + await utils.copyCookie("nitter", from, checkedInstances, "stickyProfile") + await utils.copyCookie("nitter", from, checkedInstances, "bidiSupport") + await utils.copyCookie("nitter", from, checkedInstances, "hideTweetStats") + await utils.copyCookie("nitter", from, checkedInstances, "hideBanner") + await utils.copyCookie("nitter", from, checkedInstances, "hidePins") + await utils.copyCookie("nitter", from, checkedInstances, "hideReplies") + await utils.copyCookie("nitter", from, checkedInstances, "squareAvatars") + await utils.copyCookie("nitter", from, checkedInstances, "mp4Playback") + await utils.copyCookie("nitter", from, checkedInstances, "hlsPlayback") + await utils.copyCookie("nitter", from, checkedInstances, "proxyVideos") + await utils.copyCookie("nitter", from, checkedInstances, "muteVideos") + await utils.copyCookie("nitter", from, checkedInstances, "autoplayGifs") - await utils.copyCookie('nitter', from, checkedInstances, 'replaceInstagram'); - await utils.copyCookie('nitter', from, checkedInstances, 'replaceReddit'); - await utils.copyCookie('nitter', from, checkedInstances, 'replaceTwitter'); - await utils.copyCookie('nitter', from, checkedInstances, 'replaceYouTube'); - } - resolve(true); - }) + await utils.copyCookie("nitter", from, checkedInstances, "replaceInstagram") + await utils.copyCookie("nitter", from, checkedInstances, "replaceReddit") + await utils.copyCookie("nitter", from, checkedInstances, "replaceTwitter") + await utils.copyCookie("nitter", from, checkedInstances, "replaceYouTube") + } + resolve(true) + }) } function pasteNitterCookies() { - return new Promise(async resolve => { - await init(); - if (disableTwitter || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...nitterI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...nitterLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]; - } - utils.getCookiesFromStorage('nitter', checkedInstances, 'theme'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'infiniteScroll'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'stickyProfile'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'bidiSupport'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'hideTweetStats'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'hideBanner'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'hidePins'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'hideReplies'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'squareAvatars'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'mp4Playback'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'hlsPlayback'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'proxyVideos'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'muteVideos'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'autoplayGifs'); + return new Promise(async resolve => { + await init() + if (disableTwitter || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] + } + utils.getCookiesFromStorage("nitter", checkedInstances, "theme") + utils.getCookiesFromStorage("nitter", checkedInstances, "infiniteScroll") + utils.getCookiesFromStorage("nitter", checkedInstances, "stickyProfile") + utils.getCookiesFromStorage("nitter", checkedInstances, "bidiSupport") + utils.getCookiesFromStorage("nitter", checkedInstances, "hideTweetStats") + utils.getCookiesFromStorage("nitter", checkedInstances, "hideBanner") + utils.getCookiesFromStorage("nitter", checkedInstances, "hidePins") + utils.getCookiesFromStorage("nitter", checkedInstances, "hideReplies") + utils.getCookiesFromStorage("nitter", checkedInstances, "squareAvatars") + utils.getCookiesFromStorage("nitter", checkedInstances, "mp4Playback") + utils.getCookiesFromStorage("nitter", checkedInstances, "hlsPlayback") + utils.getCookiesFromStorage("nitter", checkedInstances, "proxyVideos") + utils.getCookiesFromStorage("nitter", checkedInstances, "muteVideos") + utils.getCookiesFromStorage("nitter", checkedInstances, "autoplayGifs") - utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceInstagram'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceReddit'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceTwitter'); - utils.getCookiesFromStorage('nitter', checkedInstances, 'replaceYouTube'); - resolve(); - } - ) + utils.getCookiesFromStorage("nitter", checkedInstances, "replaceInstagram") + utils.getCookiesFromStorage("nitter", checkedInstances, "replaceReddit") + utils.getCookiesFromStorage("nitter", checkedInstances, "replaceTwitter") + utils.getCookiesFromStorage("nitter", checkedInstances, "replaceYouTube") + resolve() + }) } function initDefaults() { - return new Promise(resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get(['cloudflareBlackList', 'authenticateBlackList'], async r => { - nitterNormalRedirectsChecks = [...redirects.nitter.normal]; - for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) { - let i = nitterNormalRedirectsChecks.indexOf(instance); - if (i > -1) nitterNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableTwitter: false, - twitterRedirects: redirects, - twitterRedirectType: "both", + return new Promise(resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], async r => { + nitterNormalRedirectsChecks = [...redirects.nitter.normal] + for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) { + let i = nitterNormalRedirectsChecks.indexOf(instance) + if (i > -1) nitterNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + disableTwitter: false, + twitterRedirects: redirects, + twitterRedirectType: "both", - nitterNormalRedirectsChecks: nitterNormalRedirectsChecks, - nitterNormalCustomRedirects: [], + nitterNormalRedirectsChecks: nitterNormalRedirectsChecks, + nitterNormalCustomRedirects: [], - nitterTorRedirectsChecks: [...redirects.nitter.tor], - nitterTorCustomRedirects: [], + nitterTorRedirectsChecks: [...redirects.nitter.tor], + nitterTorCustomRedirects: [], - nitterI2pRedirectsChecks: [...redirects.nitter.i2p], - nitterI2pCustomRedirects: [], + nitterI2pRedirectsChecks: [...redirects.nitter.i2p], + nitterI2pCustomRedirects: [], - nitterLokiRedirectsChecks: [...redirects.nitter.loki], - nitterLokiCustomRedirects: [] - }, () => resolve()); - }) - }) - }) + nitterLokiRedirectsChecks: [...redirects.nitter.loki], + nitterLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - setRedirects, - redirect, - switchInstance, - reverse, - removeXFrameOptions, - initNitterCookies, - pasteNitterCookies, - initDefaults, -}; + setRedirects, + redirect, + switchInstance, + reverse, + removeXFrameOptions, + initNitterCookies, + pasteNitterCookies, + initDefaults, +} diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index f922572..7a97dcd 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -1,193 +1,207 @@ -window.browser = window.browser || window.chrome; -import twitterHelper from "./twitter.js"; -import youtubeHelper from "./youtube/youtube.js"; -import instagramHelper from "./instagram.js"; -import mediumHelper from "./medium.js"; -import redditHelper from "./reddit.js"; -import searchHelper from "./search.js"; -import translateHelper from "./translate/translate.js"; -import wikipediaHelper from "./wikipedia.js"; -import peertubeHelper from "./peertube.js"; -import lbryHelper from "./lbry.js"; -import sendTargetsHelper from "./sendTargets.js"; -import tiktokHelper from "./tiktok.js"; +window.browser = window.browser || window.chrome +import twitterHelper from "./twitter.js" +import youtubeHelper from "./youtube/youtube.js" +import instagramHelper from "./instagram.js" +import mediumHelper from "./medium.js" +import redditHelper from "./reddit.js" +import searchHelper from "./search.js" +import translateHelper from "./translate/translate.js" +import wikipediaHelper from "./wikipedia.js" +import peertubeHelper from "./peertube.js" +import lbryHelper from "./lbry.js" +import sendTargetsHelper from "./sendTargets.js" +import tiktokHelper from "./tiktok.js" import quoraHelper from "./quora.js" -import libremdbHelper from "./imdb.js"; -import imgurHelper from "./imgur.js"; -import reutersHelper from './reuters.js'; -import localise from './localise.js' +import libremdbHelper from "./imdb.js" +import imgurHelper from "./imgur.js" +import reutersHelper from "./reuters.js" +import youtubeMusicHelper from "./youtubeMusic.js" +import mapsHelper from "./maps.js" +import localise from "./localise.js" function getRandomInstance(instances) { - return instances[~~(instances.length * Math.random())]; + return instances[~~(instances.length * Math.random())] } -let cloudflareBlackList = []; -let authenticateBlackList = []; +let cloudflareBlackList = [] +let authenticateBlackList = [] async function initcloudflareBlackList() { - return new Promise(resolve => { - fetch('/instances/blacklist.json').then(response => response.text()).then(data => { - cloudflareBlackList = JSON.parse(data).cloudflare; - authenticateBlackList = JSON.parse(data).authenticate; - resolve(); - }) - }); + return new Promise(resolve => { + fetch("/instances/blacklist.json") + .then(response => response.text()) + .then(data => { + cloudflareBlackList = JSON.parse(data).cloudflare + authenticateBlackList = JSON.parse(data).authenticate + resolve() + }) + }) } function updateInstances() { - return new Promise(async resolve => { - let http = new XMLHttpRequest(); - http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false); - http.send(null); - if (http.status === 200) { - await initcloudflareBlackList(); - const instances = JSON.parse(http.responseText); + return new Promise(async resolve => { + let http = new XMLHttpRequest() + http.open("GET", "https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json", false) + http.send(null) + if (http.status === 200) { + await initcloudflareBlackList() + const instances = JSON.parse(http.responseText) - youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, 'pipedMaterial': instances.pipedMaterial }) - twitterHelper.setRedirects(instances.nitter); - instagramHelper.setRedirects(instances.bibliogram); - redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit }); - translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva }); - searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle, 'librex': instances.librex }); - wikipediaHelper.setRedirects(instances.wikiless); - mediumHelper.setRedirects(instances.scribe); - quoraHelper.setRedirects(instances.quetre); - libremdbHelper.setRedirects(instances.libremdb); - sendTargetsHelper.setRedirects(instances.send); - tiktokHelper.setRedirects(instances.proxiTok); - lbryHelper.setRedirects(instances.librarian); - reutersHelper.setRedirects(instances.neuters); + youtubeHelper.setRedirects({ + invidious: instances.invidious, + piped: instances.piped, + pipedMaterial: instances.pipedMaterial, + }) + twitterHelper.setRedirects(instances.nitter) + instagramHelper.setRedirects(instances.bibliogram) + redditHelper.setRedirects({ + libreddit: instances.libreddit, + teddit: instances.teddit, + }) + translateHelper.setRedirects({ + simplyTranslate: instances.simplyTranslate, + lingva: instances.lingva, + }) + searchHelper.setRedirects({ + searx: instances.searx, + searxng: instances.searxng, + whoogle: instances.whoogle, + librex: instances.librex, + }) + wikipediaHelper.setRedirects(instances.wikiless) + mediumHelper.setRedirects(instances.scribe) + quoraHelper.setRedirects(instances.quetre) + libremdbHelper.setRedirects(instances.libremdb) + sendTargetsHelper.setRedirects(instances.send) + tiktokHelper.setRedirects(instances.proxiTok) + lbryHelper.setRedirects(instances.librarian) + reutersHelper.setRedirects(instances.neuters) + youtubeMusicHelper.setRedirects({ + beatbump: instances.beatbump, + hyperpipe: instances.hyperpipe, + }) + mapsHelper.setRedirects(instances.facil) + peertubeHelper.setRedirects(instances.simpleertube) - console.info("Successfully updated Instances"); - resolve(true); return; - } - resolve() - }) + console.info("Successfully updated Instances") + resolve(true) + return + } + resolve() + }) } function protocolHost(url) { - if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`; - return `${url.protocol}//${url.host}`; + if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}` + return `${url.protocol}//${url.host}` } async function processDefaultCustomInstances(target, name, protocol, document) { + function camelCase(str) { + return str.charAt(0).toUpperCase() + str.slice(1) + } + let latencyKey = `${name}Latency` + let instancesLatency + let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0] - function camelCase(str) { - return str.charAt(0).toUpperCase() + str.slice(1); - } - let latencyKey = `${name}Latency`; - let instancesLatency; - let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0]; + let nameCustomInstances = [] + let nameCheckListElement = nameProtocolElement.getElementsByClassName("checklist")[0] - let nameCustomInstances = []; - let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0]; + await initcloudflareBlackList() - await initcloudflareBlackList(); + let nameDefaultRedirects - let nameDefaultRedirects; + let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks` + let customRedirects = `${name}${camelCase(protocol)}CustomRedirects` + let redirectsKey = `${target}Redirects` - let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`; - let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`; - let redirectsKey = `${target}Redirects`; + let redirects - let redirects; + async function getFromStorage() { + return new Promise(async resolve => + browser.storage.local.get([redirectsChecks, customRedirects, redirectsKey, latencyKey], r => { + nameDefaultRedirects = r[redirectsChecks] + nameCustomInstances = r[customRedirects] + instancesLatency = r[latencyKey] ?? [] + redirects = r[redirectsKey] + resolve() + }) + ) + } - async function getFromStorage() { - return new Promise(async resolve => - browser.storage.local.get( - [ - redirectsChecks, - customRedirects, - redirectsKey, - latencyKey - ], - r => { - nameDefaultRedirects = r[redirectsChecks]; - nameCustomInstances = r[customRedirects]; - instancesLatency = r[latencyKey] ?? []; - redirects = r[redirectsKey]; - resolve(); - } - ) - ) - } - - await getFromStorage(); - if (nameCustomInstances === undefined) console.log(customRedirects); + await getFromStorage() + if (nameCustomInstances === undefined) console.log(customRedirects) - function calcNameCheckBoxes() { - let isTrue = true; - for (const item of redirects[name][protocol]) { - if (!nameDefaultRedirects.includes(item)) { - isTrue = false; - break; - } - } - for (const element of nameCheckListElement.getElementsByTagName('input')) { - element.checked = nameDefaultRedirects.includes(element.className) - } - if (nameDefaultRedirects.length == 0) isTrue = false; - nameProtocolElement.getElementsByClassName('toggle-all')[0].checked = isTrue; - } - nameCheckListElement.innerHTML = - [ - `