diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-07-31 11:57:59 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-07-31 11:57:59 +0300 |
commit | b3c44dfbd4bec81152673964224335cac31c644a (patch) | |
tree | a8b7d39cd5a038d429d3b425555bf4fee9969461 | |
parent | Merge https://github.com/libredirect/libredirect (diff) | |
parent | Minor spelling mistake (diff) | |
download | libredirect-b3c44dfbd4bec81152673964224335cac31c644a.zip |
Merge branch 'master' of https://codeberg.org/LibRedirect/libredirect
-rw-r--r-- | .gitea/issue_template/bug.md | 31 | ||||
-rw-r--r-- | .gitea/issue_template/feature.md | 14 | ||||
-rw-r--r-- | src/assets/javascripts/lbry.js | 70 | ||||
-rw-r--r-- | src/assets/javascripts/utils.js | 96 | ||||
-rw-r--r-- | src/instances/get_instances.py | 2 | ||||
-rw-r--r-- | src/pages/options/index.html | 8 | ||||
-rw-r--r-- | src/pages/options/widgets/lbry.js | 5 | ||||
-rw-r--r-- | src/pages/options/widgets/lbry.pug | 7 |
8 files changed, 158 insertions, 75 deletions
diff --git a/.gitea/issue_template/bug.md b/.gitea/issue_template/bug.md new file mode 100644 index 00000000..13de17e6 --- /dev/null +++ b/.gitea/issue_template/bug.md @@ -0,0 +1,31 @@ +--- +name: "Report a bug" +about: "Is libredirect not behaving as expected? Report a bug so that it can be fixed as soon as possible." +labels: + - "Kind: Bug" +--- + +## What happened? + +## What did you expect to happen? + +## Steps to reproduce: + +1. +2. +3. + +<!-- and so on --> + +## Debug information: + +Browser and version number: +Libredirect version: + +## Screenshots/Videos + +<!--Just drag and drop any screenshots or videos you have of the issue below--> + +<br> +<!--Put an "x" inbetween the brackets to confirm--> +[ ] I have checked on codeberg and github and can confirm this issue is not a duplicate. diff --git a/.gitea/issue_template/feature.md b/.gitea/issue_template/feature.md new file mode 100644 index 00000000..2b08ce22 --- /dev/null +++ b/.gitea/issue_template/feature.md @@ -0,0 +1,14 @@ +--- +name: "Suggest a new feature" +about: "Is there something missing that you want to see in libredirect? Suggest a feature so it will exist in a future release." +labels: + - "Kind: Feature" +--- + +## Describe your current issue/inconvinience + +## Explain how this new feature will solve this + +<br> +<!--Put an "x" inbetween the brackets to confirm--> +[ ] I have checked on codeberg and github and can confirm this issue is not a duplicate. diff --git a/src/assets/javascripts/lbry.js b/src/assets/javascripts/lbry.js index f0698d36..0c4d34cc 100644 --- a/src/assets/javascripts/lbry.js +++ b/src/assets/javascripts/lbry.js @@ -2,7 +2,7 @@ window.browser = window.browser || window.chrome import utils from "./utils.js" -let targets = ["odysee.com"] +const targets = [/^https?:\/{2}odysee\.com/] const frontends = new Array("librarian") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -36,6 +36,7 @@ let disableLbryTargets, protocol, protocolFallback, lbryTargetsRedirects, + lbryRedirectType, librarianNormalRedirectsChecks, librarianNormalCustomRedirects, librarianTorRedirectsChecks, @@ -53,6 +54,7 @@ function init() { "protocol", "protocolFallback", "lbryTargetsRedirects", + "lbryRedirectType", "librarianNormalRedirectsChecks", "librarianNormalCustomRedirects", "librarianTorRedirectsChecks", @@ -67,6 +69,7 @@ function init() { protocol = r.protocol protocolFallback = r.protocolFallback lbryTargetsRedirects = r.lbryTargetsRedirects + lbryRedirectType = r.lbryRedirectType librarianNormalRedirectsChecks = r.librarianNormalRedirectsChecks librarianNormalCustomRedirects = r.librarianNormalCustomRedirects librarianTorRedirectsChecks = r.librarianTorRedirectsChecks @@ -86,6 +89,24 @@ function all() { return [...redirects.librarian.normal, ...redirects.librarian.tor, ...librarianNormalCustomRedirects, ...librarianTorCustomRedirects, ...librarianI2pCustomRedirects, ...librarianLokiCustomRedirects] } +function getInstancesList() { + let tmpList = [] + switch (protocol) { + case "loki": + tmpList = [...librarianLokiCustomRedirects] + break + case "i2p": + tmpList = [...librarianI2pRedirectsChecks, ...librarianI2pCustomRedirects] + break + case "tor": + tmpList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects] + } + if ((tmpList.length === 0 && protocolFallback) || protocol == "normal") { + tmpList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects] + } + return tmpList +} + function switchInstance(url, disableOverride) { return new Promise(async resolve => { await init() @@ -122,37 +143,27 @@ function switchInstance(url, disableOverride) { 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" || "sub_frame")) return - //https://odysee.com/$/embed/the-anti-smartphone-revolution/22b482e450c4ca13c464eee8f51b3a52bbb942ae?r=7pAWcQybShS63wz486r8wVv9FpsDJ47A - // to - //https://{instance}/embed/@Coldfusion:f/the-anti-smartphone-revolution:2 - - let instancesList = [] - switch (lbryFrontend) { - case "librarian": - switch (protocol) { - case "loki": - instancesList = [...librarianLokiCustomRedirects] - break - case "i2p": - instancesList = [...librarianI2pRedirectsChecks, ...librarianI2pCustomRedirects] - break - case "tor": - instancesList = [...librarianTorRedirectsChecks, ...librarianTorCustomRedirects] - } - if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { - instancesList = [...librarianNormalRedirectsChecks, ...librarianNormalCustomRedirects] - } - break - case "lbryDesktop": - if (type == "main_frame") { - return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#") + if (!targets.some(rx => rx.test(url.href))) return + if ((type == "main_frame" && lbryRedirectType == "sub_frame") || (type == "sub_frame" && lbryRedirectType == "main_frame")) return + + const instancesList = getInstancesList() + switch (type) { + case "main_frame": + switch (lbryFrontend) { + case "librarian": + if (instancesList.length === 0) return + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}${url.search}` + case "lbryDesktop": + if (type == "main_frame") { + return url.href.replace(/^https?:\/{2}odysee\.com\//, "lbry://").replace(/:(?=[a-zA-Z0-9])/g, "#") + } } + case "sub_frame": if (instancesList.length === 0) return + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}${url.search}`.replace(/\/(?=[a-f0-9]{40})/, ":") } - const randomInstance = utils.getRandomInstance(instancesList) - return `${randomInstance}${url.pathname}${url.search}` } function initDefaults() { @@ -169,6 +180,7 @@ function initDefaults() { disableLbryTargets: true, lbryFrontend: "librarian", lbryTargetsRedirects: redirects, + lbryRedirectType: "both", librarianNormalRedirectsChecks: [...redirects.librarian.normal], librarianNormalCustomRedirects: [], diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index 7a97dcdb..9a7d37b3 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -40,53 +40,61 @@ async function initcloudflareBlackList() { function updateInstances() { return new Promise(async resolve => { let http = new XMLHttpRequest() + let fallback = 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) - youtubeMusicHelper.setRedirects({ - beatbump: instances.beatbump, - hyperpipe: instances.hyperpipe, - }) - mapsHelper.setRedirects(instances.facil) - peertubeHelper.setRedirects(instances.simpleertube) - - console.info("Successfully updated Instances") - resolve(true) - return + if (http.status != 200) { + fallback.open("GET", "https://codeberg.org/LibRedirect/libredirect/raw/branch/master/src/instances/data.json", false) + fallback.send(null) + if (fallback.status === 200) { + http = fallback + } else { + resolve() + return + } } - resolve() + 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) + youtubeMusicHelper.setRedirects({ + beatbump: instances.beatbump, + hyperpipe: instances.hyperpipe, + }) + mapsHelper.setRedirects(instances.facil) + peertubeHelper.setRedirects(instances.simpleertube) + + console.info("Successfully updated Instances") + resolve(true) + return }) } diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index e19bfbbe..0d0e8c78 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -431,7 +431,7 @@ def searx_searxng(): searxngList['tor'].append(item[:-1]) else: searxList['tor'].append(item[:-1]) - elif re.search(torRegex, item[:-1]): + elif re.search(i2pRegex, item[:-1]): if (rJson['instances'][item].get('generator') == 'searxng'): searxngList['i2p'].append(item[:-1]) else: diff --git a/src/pages/options/index.html b/src/pages/options/index.html index 84955339..a868ad3a 100644 --- a/src/pages/options/index.html +++ b/src/pages/options/index.html @@ -2209,6 +2209,14 @@ <option value="lbryDesktop" data-localise="__MSG_lbryDesktop__">LBRY Desktop</option> </select> </div> + <div class="some-block option-block"> + <h4 data-localise="__MSG_redirectType__">Redirect Type</h4> + <select id="lbry-redirect_type"> + <option value="both" data-localise="__MSG_both__">both</option> + <option value="sub_frame" data-localise="__MSG_onlyEmbedded__">Only Embedded</option> + <option value="main_frame" data-localise="__MSG_onlyNotEmbedded__">Only Not Embedded</option> + </select> + </div> <div id="librarian"> <hr> <div class="normal"> diff --git a/src/pages/options/widgets/lbry.js b/src/pages/options/widgets/lbry.js index 76e212cb..d50de843 100644 --- a/src/pages/options/widgets/lbry.js +++ b/src/pages/options/widgets/lbry.js @@ -5,6 +5,7 @@ const protocols = new Array("normal", "tor", "i2p", "loki") const enable = document.getElementById("lbry-enable") const lbry = document.getElementById("lbry_page") +const redirectType = document.getElementById("lbry-redirect_type") const frontend = document.getElementById("lbry-frontend") let protocol @@ -33,9 +34,10 @@ function changeProtocolSettings() { } } -browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r => { +browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend", "lbryRedirectType"], r => { enable.checked = !r.disableLbryTargets protocol = r.protocol + redirectType.value = r.lbryRedirectType frontend.value = r.lbryFrontend changeFrontendsSettings() changeProtocolSettings() @@ -44,6 +46,7 @@ browser.storage.local.get(["disableLbryTargets", "protocol", "lbryFrontend"], r lbry.addEventListener("change", () => { browser.storage.local.set({ disableLbryTargets: !enable.checked, + lbryRedirectType: redirectType.value, lbryFrontend: frontend.value, }) changeFrontendsSettings() diff --git a/src/pages/options/widgets/lbry.pug b/src/pages/options/widgets/lbry.pug index 678b87d9..e4278438 100644 --- a/src/pages/options/widgets/lbry.pug +++ b/src/pages/options/widgets/lbry.pug @@ -12,6 +12,13 @@ section#lbry_page.option-block option(value="librarian") Librarian option(value="lbryDesktop" data-localise="__MSG_lbryDesktop__") LBRY Desktop + .some-block.option-block + h4(data-localise="__MSG_redirectType__") Redirect Type + select#lbry-redirect_type + option(value="both" data-localise="__MSG_both__") both + option(value="sub_frame" data-localise="__MSG_onlyEmbedded__") Only Embedded + option(value="main_frame" data-localise="__MSG_onlyNotEmbedded__") Only Not Embedded + #librarian hr .normal |