Move rewrite logic to own function
This commit is contained in:
parent
787487764d
commit
1f8e0d00e1
@ -62,61 +62,13 @@ async function redirectAsync(url, type, initiator, forceRedirection) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {URL} url
|
* @param url
|
||||||
* @param {string} type
|
* @param frontend
|
||||||
* @param {URL} initiator
|
* @param randomInstance
|
||||||
* @param {boolean} forceRedirection
|
* @returns {undefined|string}
|
||||||
* @returns {string | undefined}
|
|
||||||
*/
|
*/
|
||||||
function redirect(url, type, initiator, forceRedirection, incognito) {
|
function rewrite(url, frontend, randomInstance){
|
||||||
if (type != "main_frame" && type != "sub_frame" && type != "image") return
|
if (!frontend || !randomInstance) return
|
||||||
let randomInstance
|
|
||||||
let frontend
|
|
||||||
if (!forceRedirection && options.redirectOnlyInIncognito == true && !incognito) return
|
|
||||||
for (const service in config.services) {
|
|
||||||
if (!forceRedirection && !options[service].enabled) continue
|
|
||||||
|
|
||||||
frontend = options[service].frontend
|
|
||||||
|
|
||||||
|
|
||||||
if (config.services[service].frontends[frontend].desktopApp && type != "main_frame" && options[service].redirectType != "main_frame")
|
|
||||||
frontend = options[service].embedFrontend
|
|
||||||
|
|
||||||
|
|
||||||
if (!regexArray(service, url, config, frontend)) {
|
|
||||||
frontend = null
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
config.services[service].embeddable &&
|
|
||||||
type != options[service].redirectType && options[service].redirectType != "both"
|
|
||||||
) {
|
|
||||||
if (options[service].unsupportedUrls == 'block') return 'CANCEL'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
let instanceList = options[frontend]
|
|
||||||
if (instanceList === undefined) break
|
|
||||||
if (instanceList.length === 0) return null
|
|
||||||
|
|
||||||
if (
|
|
||||||
initiator
|
|
||||||
&&
|
|
||||||
instanceList.includes(initiator.origin)
|
|
||||||
) {
|
|
||||||
if (type != "main_frame") return null
|
|
||||||
else return "BYPASSTAB"
|
|
||||||
}
|
|
||||||
|
|
||||||
randomInstance = utils.getRandomInstance(instanceList)
|
|
||||||
if (config.services[service].frontends[frontend].localhost && options[service].instance == "localhost") {
|
|
||||||
randomInstance = `http://${frontend}.localhost:8080`
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if (!frontend) return
|
|
||||||
|
|
||||||
switch (frontend) {
|
switch (frontend) {
|
||||||
case "hyperpipe": {
|
case "hyperpipe": {
|
||||||
return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/"))
|
return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => searchQuery.replace("?q=", "/"))
|
||||||
@ -557,6 +509,65 @@ function redirect(url, type, initiator, forceRedirection, incognito) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL} url
|
||||||
|
* @param {string} type
|
||||||
|
* @param {URL} initiator
|
||||||
|
* @param {boolean} forceRedirection
|
||||||
|
* @returns {string | undefined}
|
||||||
|
*/
|
||||||
|
function redirect(url, type, initiator, forceRedirection, incognito) {
|
||||||
|
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
|
||||||
|
|
||||||
|
frontend = options[service].frontend
|
||||||
|
|
||||||
|
|
||||||
|
if (config.services[service].frontends[frontend].desktopApp && type != "main_frame" && options[service].redirectType != "main_frame")
|
||||||
|
frontend = options[service].embedFrontend
|
||||||
|
|
||||||
|
|
||||||
|
if (!regexArray(service, url, config, frontend)) {
|
||||||
|
frontend = null
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
config.services[service].embeddable &&
|
||||||
|
type != options[service].redirectType && options[service].redirectType != "both"
|
||||||
|
) {
|
||||||
|
if (options[service].unsupportedUrls == 'block') return 'CANCEL'
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let instanceList = options[frontend]
|
||||||
|
if (instanceList === undefined) break
|
||||||
|
if (instanceList.length === 0) return null
|
||||||
|
|
||||||
|
if (
|
||||||
|
initiator
|
||||||
|
&&
|
||||||
|
instanceList.includes(initiator.origin)
|
||||||
|
) {
|
||||||
|
if (type != "main_frame") return null
|
||||||
|
else return "BYPASSTAB"
|
||||||
|
}
|
||||||
|
|
||||||
|
randomInstance = utils.getRandomInstance(instanceList)
|
||||||
|
if (config.services[service].frontends[frontend].localhost && options[service].instance == "localhost") {
|
||||||
|
randomInstance = `http://${frontend}.localhost:8080`
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (!frontend) return
|
||||||
|
|
||||||
|
return rewrite(url, frontend, randomInstance)
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {URL} url
|
* @param {URL} url
|
||||||
* @param {*} returnFrontend
|
* @param {*} returnFrontend
|
||||||
|
Loading…
x
Reference in New Issue
Block a user