From 2095294e3efa4045f5e8e5352434e65dcab4eb9f Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Tue, 10 Sep 2024 19:16:22 +0000 Subject: Translated using Weblate (Ukrainian) Currently translated at 100.0% (45 of 45 strings) Translation: LibRedirect/extension Translate-URL: https://hosted.weblate.org/projects/libredirect/extension/uk/ --- src/_locales/uk/messages.json | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/_locales/uk/messages.json b/src/_locales/uk/messages.json index 7000f7aa..b291d9d1 100644 --- a/src/_locales/uk/messages.json +++ b/src/_locales/uk/messages.json @@ -110,13 +110,13 @@ "message": "Вимкнути" }, "pingInstances": { - "message": "Ping Instances" + "message": "Опитати сервери" }, "exportSettingsToSync": { - "message": "Export Settings to Sync" + "message": "Експорт налаштувань до служби синхронізації" }, "importSettingsFromSync": { - "message": "Import Settings from Sync" + "message": "Імпорт налаштувань зі служби синхронізації" }, "services": { "message": "Служби" @@ -128,19 +128,19 @@ "message": "Меню закладок" }, "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" + "message": "Переспрямовувати лише в режимі інкогніто" }, "bypass": { - "message": "Bypass" + "message": "Обхід" }, "block": { "message": "Block" }, "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click here." + "message": "Установити LibRedirect усталеним засобом пошуку. Як це зробити у браузерах на основі chromium, читайте тут." }, "redirect": { - "message": "Redirect" + "message": "Переспрямувати" }, "autoPickInstance": { "message": "Автопідбір сервера" @@ -150,5 +150,11 @@ }, "searchService": { "message": "Служба пошуку" + }, + "search_frontend": { + "message": "Пошуковий інтерфейс" + }, + "embedFrontend": { + "message": "Вбудований інтерфейс" } } -- cgit 1.4.1 From 90762a3d17e8fa5c9984aeaca764cf53d68d8944 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 12 Sep 2024 11:13:54 +0300 Subject: Updated skunkyArt redirection logic --- src/assets/javascripts/services.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index d19d8aa2..48c0a2db 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -519,16 +519,16 @@ function rewrite(url, originUrl, frontend, randomInstance) { return `${randomInstance}${url.pathname}${url.search}` } case "skunkyArt": { - if (url.pathname.startsWith("/search")) return `${randomInstance}${url.pathname}${url.search}&scope=all` + if (url.pathname.startsWith("/search")) return `${randomInstance}${url.pathname}${url.search}&type=all` - const artReg = /^\/.*?\/art\/(.*)\/?/.exec(url.pathname) - if (artReg) return `${randomInstance}/post/art/${artReg[1]}${url.search}` + const artReg = /^\/(.*?)\/art\/(.*)\/?/.exec(url.pathname) + if (artReg) return `${randomInstance}/post/${artReg[1]}/${artReg[2]}${url.search}` const userReg = /^\/([^\/]+)$/.exec(url.pathname) - if (userReg) return `${randomInstance}/user/${userReg[1]}${url.search}` + if (userReg)return `${randomInstance}/group_user?q=${userReg[1]}&type=about` - const galleryReg = /^\/.*?\/gallery(\/$|$)$/.exec(url.pathname) - if (galleryReg) return `${randomInstance}/user/${userReg[1]}?a=gallery` + const galleryReg = /^\/(.*?)\/gallery(\/$|$)$/.exec(url.pathname) + if (galleryReg) return `${randomInstance}/group_user?q=${galleryReg[1]}&type=gallery` return `${randomInstance}${url.pathname}${url.search}` } -- cgit 1.4.1 From df61cdb265c90b37ba0317417d04d709204e74b3 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 13 Sep 2024 21:11:49 +0300 Subject: Fixing bugs. 2.9.1 => 3.0.0 --- src/assets/javascripts/services.js | 3 ++- src/manifest.json | 2 +- src/pages/background/background.js | 27 ++++++++++++++------------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 48c0a2db..1c84eff0 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -525,7 +525,7 @@ function rewrite(url, originUrl, frontend, randomInstance) { if (artReg) return `${randomInstance}/post/${artReg[1]}/${artReg[2]}${url.search}` const userReg = /^\/([^\/]+)$/.exec(url.pathname) - if (userReg)return `${randomInstance}/group_user?q=${userReg[1]}&type=about` + if (userReg) return `${randomInstance}/group_user?q=${userReg[1]}&type=about` const galleryReg = /^\/(.*?)\/gallery(\/$|$)$/.exec(url.pathname) if (galleryReg) return `${randomInstance}/group_user?q=${galleryReg[1]}&type=gallery` @@ -941,6 +941,7 @@ async function copyRaw(url) { * @param {URL} url */ function isException(url) { + if (!options) return false if (!options.exceptions) return false let exceptions = options.exceptions if (exceptions && url) { diff --git a/src/manifest.json b/src/manifest.json index 16a863f1..7bb01fd8 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_extensionName__", "description": "__MSG_extensionDescription__", - "version": "2.9.1", + "version": "3.0.0", "manifest_version": 2, "browser_specific_settings": { "gecko": { diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 1fcba190..d566ff5c 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -71,6 +71,7 @@ browser.webRequest.onBeforeRequest.addListener( (newUrl && newUrl.startsWith("https://no-instance.libredirect.invalid")) || (!newUrl && url.href.startsWith("https://no-instance.libredirect.invalid")) ) { + if (details.type != "main_frame") return null newUrl = newUrl ? new URL(newUrl) : url const frontend = newUrl.searchParams.get("frontend") const oldUrl = new URL(newUrl.searchParams.get("url")) @@ -85,17 +86,16 @@ browser.webRequest.onBeforeRequest.addListener( return { cancel: true } } - if (!newUrl) { - if (url.href.match(/^https?:\/{2}(.*\.)?libredirect\.invalid.*/)) { - const params = new URLSearchParams({ - message: "disabled", - url: url.href, - }) - browser.tabs.update({ - url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), - }) - return { cancel: true } - } + if (!newUrl && url.href.match(/^https?:\/{2}(.*\.)?libredirect\.invalid.*/)) { + if (details.type != "main_frame") return null + const params = new URLSearchParams({ + message: "disabled", + url: url.href, + }) + browser.tabs.update({ + url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), + }) + return { cancel: true } } if (newUrl === "CANCEL") { @@ -121,8 +121,9 @@ browser.webRequest.onHeadersReceived.addListener( details => { if (details.statusCode >= 501 || details.statusCode == 429 || details.statusCode == 403) { const url = new URL(details.url) - const { service, frontend } = servicesHelper.computeFrontend(url) - if (!service) return + const r = servicesHelper.computeFrontend(url) + if (!r) return + const { service, frontend } = r const params = new URLSearchParams({ message: "server_error", code: details.statusCode, -- cgit 1.4.1 From d13715e83fd9376edaa39aa6027eedbbdbbade6a Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 13 Sep 2024 22:01:33 +0300 Subject: 2.9.1 => 3.0.0 --- src/updates/updates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/updates/updates.xml b/src/updates/updates.xml index ea0d5882..5b8e2980 100644 --- a/src/updates/updates.xml +++ b/src/updates/updates.xml @@ -1,6 +1,6 @@ - + -- cgit 1.4.1 From 94cb2e45de13adf1a173e445df9f0aea16ac8b99 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 14 Sep 2024 18:36:33 +0300 Subject: Disabling onHeadersReceived for temporarily https://github.com/libredirect/browser_extension/issues/992 --- src/pages/background/background.js | 46 +++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/pages/background/background.js b/src/pages/background/background.js index d566ff5c..029686a3 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -117,29 +117,29 @@ browser.webRequest.onBeforeRequest.addListener( ["blocking"] ) -browser.webRequest.onHeadersReceived.addListener( - details => { - if (details.statusCode >= 501 || details.statusCode == 429 || details.statusCode == 403) { - const url = new URL(details.url) - const r = servicesHelper.computeFrontend(url) - if (!r) return - const { service, frontend } = r - const params = new URLSearchParams({ - message: "server_error", - code: details.statusCode, - url: url.href, - frontend: frontend, - service: service, - }) - setTimeout(() => { - browser.tabs.update({ - url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), - }) - }, 2000) - } - }, - { urls: [""] } -) +// browser.webRequest.onHeadersReceived.addListener( +// details => { +// if (details.statusCode >= 501 || details.statusCode == 429 || details.statusCode == 403) { +// const url = new URL(details.url) +// const r = servicesHelper.computeFrontend(url) +// if (!r) return +// const { service, frontend } = r +// const params = new URLSearchParams({ +// message: "server_error", +// code: details.statusCode, +// url: url.href, +// frontend: frontend, +// service: service, +// }) +// setTimeout(() => { +// browser.tabs.update({ +// url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), +// }) +// }, 2000) +// } +// }, +// { urls: [""] } +// ) browser.tabs.onRemoved.addListener(tabId => { if (tabIdRedirects[tabId] != undefined) { -- cgit 1.4.1 From 161c19c083a5c79cfa2417b9b9d0672595449781 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 14 Sep 2024 18:46:52 +0300 Subject: 3.0.0 => 3.0.1 --- src/manifest.json | 2 +- src/updates/updates.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 7bb01fd8..fe311c10 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,7 +1,7 @@ { "name": "__MSG_extensionName__", "description": "__MSG_extensionDescription__", - "version": "3.0.0", + "version": "3.0.1", "manifest_version": 2, "browser_specific_settings": { "gecko": { diff --git a/src/updates/updates.xml b/src/updates/updates.xml index 5b8e2980..dd59e346 100644 --- a/src/updates/updates.xml +++ b/src/updates/updates.xml @@ -1,6 +1,6 @@ - + -- cgit 1.4.1 From 823af5a0a31a628d84a106dc5b78b2085329a5e7 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 14 Sep 2024 22:51:35 +0300 Subject: Moving Server error listener to popup https://github.com/libredirect/browser_extension/issues/992 --- src/assets/javascripts/services.js | 4 +- src/pages/background/background.js | 24 ------- src/pages/messages_src/App.svelte | 61 ---------------- src/pages/popup_src/Buttons.svelte | 113 ++++++++++++++++++++++++++---- src/pages/popup_src/components/Row.svelte | 23 +++--- 5 files changed, 115 insertions(+), 110 deletions(-) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 1c84eff0..a0ba0111 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -669,7 +669,9 @@ function computeService(url) { export function computeFrontend(url) { for (const service in config.services) { for (const frontend in config.services[service].frontends) { - if (all(service, frontend, options, config).findIndex(instance => url.href.startsWith(instance)) >= 0) { + const instances = all(service, frontend, options, config) + const i = instances.findIndex(instance => url.href.startsWith(instance)) + if (i >= 0) { return { service, frontend } } } diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 029686a3..4b46ea89 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -117,30 +117,6 @@ browser.webRequest.onBeforeRequest.addListener( ["blocking"] ) -// browser.webRequest.onHeadersReceived.addListener( -// details => { -// if (details.statusCode >= 501 || details.statusCode == 429 || details.statusCode == 403) { -// const url = new URL(details.url) -// const r = servicesHelper.computeFrontend(url) -// if (!r) return -// const { service, frontend } = r -// const params = new URLSearchParams({ -// message: "server_error", -// code: details.statusCode, -// url: url.href, -// frontend: frontend, -// service: service, -// }) -// setTimeout(() => { -// browser.tabs.update({ -// url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), -// }) -// }, 2000) -// } -// }, -// { urls: [""] } -// ) - browser.tabs.onRemoved.addListener(tabId => { if (tabIdRedirects[tabId] != undefined) { delete tabIdRedirects[tabId] diff --git a/src/pages/messages_src/App.svelte b/src/pages/messages_src/App.svelte index 1c5170dd..9f464ac7 100644 --- a/src/pages/messages_src/App.svelte +++ b/src/pages/messages_src/App.svelte @@ -80,39 +80,6 @@ const newUrl = await servicesHelper.redirectAsync(oldUrl, "main_frame", null, null, false, true) browser.tabs.update({ url: newUrl }) } - - async function switchInstance() { - const newUrl = await servicesHelper.switchInstance(oldUrl) - browser.tabs.update({ url: newUrl }) - } - - async function removeInstance() { - const service = await servicesHelper.computeService(oldUrl) - const frontend = params.get("frontend") - const i = _options[frontend].findIndex(instance => oldUrl.href.startsWith(instance)) - _options[frontend].splice(i, 1) - options.set(_options) - const newUrl = await servicesHelper.switchInstance(oldUrl, service) - browser.tabs.update({ url: newUrl }) - } - - async function removeAndAutoPickInstance() { - const service = await servicesHelper.computeService(oldUrl) - - const frontend = params.get("frontend") - const i = _options[frontend].findIndex(instance => oldUrl.href.startsWith(instance)) - _options[frontend].splice(i, 1) - options.set(_options) - await autoPick() - const newUrl = await servicesHelper.switchInstance(oldUrl, service) - browser.tabs.update({ url: newUrl }) - } - - async function addAutoPickInstance() { - await autoPick() - const newUrl = await servicesHelper.switchInstance(oldUrl) - browser.tabs.update({ url: newUrl }) - } {#if _options && _config} @@ -124,34 +91,6 @@ {browser.i18n.getMessage("enable") || "Enable"} - {:else if params.get("message") == "server_error"} - -
-

Your selected instance gave out an error: {params.get("code")}

- {#if _options[params.get("frontend")].length > 1} - - - {:else} - - - {/if} -
{:else if params.get("message") == "no_instance"}

You have no instance selected for this frontend

diff --git a/src/pages/popup_src/Buttons.svelte b/src/pages/popup_src/Buttons.svelte index ab5682dc..d2fc5433 100644 --- a/src/pages/popup_src/Buttons.svelte +++ b/src/pages/popup_src/Buttons.svelte @@ -10,11 +10,14 @@ import SettingsIcon from "../icons/SettingsIcon.svelte" import { options, config } from "./stores" import { onDestroy } from "svelte" - import servicesHelper from "../../assets/javascripts/services" + import servicesHelper, { computeFrontend } from "../../assets/javascripts/services" import Switch from "./components/Switch.svelte" + import AutoPickIcon from "../icons/AutoPickIcon.svelte" + import utils from "../../assets/javascripts/utils" let _options let _config + let autoPicking = false const unsubscribeOptions = options.subscribe(val => (_options = val)) const unsubscribeConfig = config.subscribe(val => (_config = val)) @@ -28,6 +31,8 @@ let redirectToOriginal let redirect let currentService + let frontend + let service browser.tabs.query({ active: true, currentWindow: true }, async tabs => { if (tabs[0].url) { url = new URL(tabs[0].url) @@ -35,8 +40,51 @@ servicesHelper.reverse(url).then(r => (redirectToOriginal = r)) servicesHelper.redirectAsync(url, "main_frame", null, null, false, true).then(r => (redirect = r)) servicesHelper.computeService(url).then(r => (currentService = r)) + const computed = servicesHelper.computeFrontend(url) + if (computed) { + ;({ service, frontend } = computed) + } } }) + + async function removeInstance() { + const i = _options[frontend].findIndex(instance => url.href.startsWith(instance)) + _options[frontend].splice(i, 1) + options.set(_options) + const newUrl = await servicesHelper.switchInstance(url, service) + browser.tabs.update({ url: newUrl }) + } + + async function autoPick() { + autoPicking = true + const redirects = await utils.getList(_options) + const instances = utils.randomInstances(redirects[frontend]["clearnet"], 5) + const pings = await Promise.all([ + ...instances.map(async instance => { + return [instance, await utils.ping(instance)] + }), + ]) + pings.sort((a, b) => a[1] - b[1]) + _options[frontend].push(pings[0][0]) + options.set(_options) + autoPicking = false + } + + async function addAutoPickInstance() { + await autoPick() + const newUrl = await servicesHelper.switchInstance(url) + browser.tabs.update({ url: newUrl }) + } + + async function removeAndAutoPickInstance() { + const i = _options[frontend].findIndex(instance => url.href.startsWith(instance)) + _options[frontend].splice(i, 1) + options.set(_options) + await autoPick() + const newUrl = await servicesHelper.switchInstance(url, service) + browser.tabs.update({ url: newUrl }) + } + $: console.log("autoPicking", autoPicking)
@@ -56,17 +104,44 @@ {/if} - {#if switchInstance} - - browser.tabs.update({ url: switchInstance }, () => { - window.close() - })} - > - - - + {#if service && frontend} + {#if _options[frontend].length > 1} + {#if switchInstance} + + browser.tabs.update({ url: switchInstance }, () => { + window.close() + })} + > + + + + {/if} + + + + + {:else} + + + + + + + + + {/if} {/if} {#if redirectToOriginal} @@ -130,6 +205,20 @@ transform: translateY(1px); } + :global(.disabled) { + cursor: not-allowed; + opacity: 0.5; + } + + :global(.disabled:hover) { + color: var(--text); + cursor: not-allowed; + } + + :global(.disabled:active) { + transform: none; + } + :global(img, svg) { margin-right: 5px; margin-left: 0; diff --git a/src/pages/popup_src/components/Row.svelte b/src/pages/popup_src/components/Row.svelte index a4d78f07..064942da 100644 --- a/src/pages/popup_src/components/Row.svelte +++ b/src/pages/popup_src/components/Row.svelte @@ -1,13 +1,12 @@
- -
- - - \ No newline at end of file + +
+ + -- cgit 1.4.1 From ef4bc148829d78b4c55274043c07ef7fa3db7681 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sun, 15 Sep 2024 06:32:01 +0300 Subject: Made Show in popup always toggleable https://github.com/libredirect/browser_extension/issues/995 --- src/pages/options_src/Services/Services.svelte | 32 +++++++++++++------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pages/options_src/Services/Services.svelte b/src/pages/options_src/Services/Services.svelte index db2977f9..dcc826fa 100644 --- a/src/pages/options_src/Services/Services.svelte +++ b/src/pages/options_src/Services/Services.svelte @@ -94,23 +94,23 @@ /> -
- - - { - if (e.target.checked && !_options.popupServices.includes(selectedService)) { - _options.popupServices.push(selectedService) - } else if (_options.popupServices.includes(selectedService)) { - const index = _options.popupServices.indexOf(selectedService) - if (index !== -1) _options.popupServices.splice(index, 1) - } - options.set(_options) - }} - /> - + + + { + if (e.target.checked && !_options.popupServices.includes(selectedService)) { + _options.popupServices.push(selectedService) + } else if (_options.popupServices.includes(selectedService)) { + const index = _options.popupServices.indexOf(selectedService) + if (index !== -1) _options.popupServices.splice(index, 1) + } + options.set(_options) + }} + /> + +