aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2024-08-25 21:31:24 +0300
committerManeraKai <manerakai@protonmail.com>2024-08-25 21:31:24 +0300
commitdfa6c8e570e3030c382ad045156a0b12fd3ba368 (patch)
treee3f62643d499d087b3925987c2df660db9f780d3 /src/assets
parentMade redlib as the default frontend for reddit https://codeberg.org/LibRedire... (diff)
downloadlibredirect-dfa6c8e570e3030c382ad045156a0b12fd3ba368.zip
Fixing and improving redirect core
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/services.js29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index d3afd437..e93b637c 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -55,9 +55,9 @@ function regexArray(service, url, config, options, frontend) {
* @param {URL} originUrl
* @param {boolean} forceRedirection
*/
-async function redirectAsync(url, type, originUrl, documentUrl, forceRedirection) {
+async function redirectAsync(url, type, originUrl, documentUrl, incognito, forceRedirection) {
await init()
- return redirect(url, type, originUrl, documentUrl, forceRedirection)
+ return redirect(url, type, originUrl, documentUrl, incognito, forceRedirection)
}
/**
@@ -569,21 +569,22 @@ function rewrite(url, originUrl, frontend, randomInstance) {
* @param {URL} url
* @param {string} type
* @param {URL} originUrl
+ * @param {URL} documentUrl
+ * @param {boolean} incognito
* @param {boolean} forceRedirection
* @returns {string | undefined}
*/
-function redirect(url, type, originUrl, documentUrl, forceRedirection, incognito) {
+function redirect(url, type, originUrl, documentUrl, incognito, forceRedirection) {
if (type != "main_frame" && type != "sub_frame" && type != "image") return
let randomInstance
let frontend
if (!forceRedirection && options.redirectOnlyInIncognito == true && !incognito) return
for (const service in config.services) {
if (!forceRedirection && !options[service].enabled) continue
+ if (!forceRedirection && options[service].redirectOnlyInIncognito == true && !incognito) continue
frontend = options[service].frontend
- if (options[service].redirectOnlyInIncognito == true && !incognito) continue
-
if (
config.services[service].frontends[frontend].desktopApp &&
type != "main_frame" &&
@@ -613,11 +614,11 @@ function redirect(url, type, originUrl, documentUrl, forceRedirection, incognito
let instanceList = options[frontend]
if (instanceList === undefined) break
- if (instanceList.length === 0) return null
+ if (instanceList.length === 0) return "https://libredirect.invalid"
if (originUrl && instanceList.includes(originUrl.origin)) {
- if (type != "main_frame") return null
- else return "BYPASSTAB"
+ if (type == "main_frame") return "BYPASSTAB"
+ else return null
}
randomInstance = utils.getRandomInstance(instanceList)
@@ -937,10 +938,18 @@ function isException(url) {
for (let item of exceptions.url) {
item = new URL(item)
item = item.href.replace(/^http:\/\//, "https://")
- if (item == url.href) return true
+ if (item == url.href) {
+ return true
+ }
+ }
+ }
+ if (exceptions.regex) {
+ for (const item of exceptions.regex) {
+ if (new RegExp(item).test(url.href)) {
+ return true
+ }
}
}
- if (exceptions.regex) for (const item of exceptions.regex) if (new RegExp(item).test(url.href)) return true
}
return false
}