diff options
| author | Hygna <hygna@proton.me> | 2022-09-27 20:59:25 +0100 |
|---|---|---|
| committer | Hygna <hygna@proton.me> | 2022-09-27 20:59:25 +0100 |
| commit | 5d48d60e96179f112d40d105e76f80f9cc51175b (patch) | |
| tree | 6f71fd866f3d0077b14b76a0fee2de2d9aa5e312 /src/assets/javascripts | |
| parent | Changes (diff) | |
| download | libredirect-5d48d60e96179f112d40d105e76f80f9cc51175b.zip | |
Started converting storage format
Diffstat (limited to 'src/assets/javascripts')
| -rw-r--r-- | src/assets/javascripts/general.js | 22 | ||||
| -rw-r--r-- | src/assets/javascripts/services.js | 192 | ||||
| -rw-r--r-- | src/assets/javascripts/utils.js | 16 |
3 files changed, 133 insertions, 97 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js index 35ead2f0..3a8987ac 100644 --- a/src/assets/javascripts/general.js +++ b/src/assets/javascripts/general.js @@ -25,17 +25,19 @@ async function initDefaults() { return new Promise(resolve => browser.storage.local.set( { - exceptions: { - url: [], - regex: [], + options: { + exceptions: { + url: [], + regex: [], + }, + theme: "DEFAULT", + popupServices: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"], + autoRedirect: false, + firstPartyIsolate: false, + network: "clearnet", + networkFallback: true, + latencyThreshold: 1000, }, - theme: "DEFAULT", - popupServices: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"], - autoRedirect: false, - firstPartyIsolate: false, - network: "clearnet", - networkFallback: true, - latencyThreshold: 1000, }, () => resolve() ) diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js index 25e998d2..9fc5a0a3 100644 --- a/src/assets/javascripts/services.js +++ b/src/assets/javascripts/services.js @@ -2,9 +2,7 @@ window.browser = window.browser || window.chrome import utils from "./utils.js"
-let config = {},
- redirects = {},
- options = {}
+let config, redirects, options, targets, blacklists
async function getConfig() {
return new Promise(resolve => {
@@ -19,48 +17,44 @@ async function getConfig() { function init() {
return new Promise(async resolve => {
- await getConfig()
- browser.storage.local.get(["network", "networkFallback", "redirects"], r => {
- options.network = r.network
- options.networkFallback = r.networkFallback
+ // await getConfig()
+ browser.storage.local.get(["options", "targets", "redirects", "blacklists"], r => {
+ blacklists = r.blacklists
redirects = r.redirects
+ targets = r.targets
+ options = r.options
+ resolve()
})
- for (const service in config.services) {
- options[service] = {}
- browser.storage.local.get([`${service}Enabled`, `${service}RedirectType`, `${service}Frontend`], r => {
- options[service].enabled = r[service + "Enabled"]
- options[service].frontend = r[service + "Frontend"]
- options[service].redirectType = r[service + "RedirectType"]
- })
- for (const frontend in config.services[service].frontends) {
- options[frontend] = {}
- for (const network in config.networks) {
- options[frontend][network] = {}
- options[frontend][network] = {}
- browser.storage.local.get([`${frontend}${utils.camelCase(network)}RedirectsChecks`, `${frontend}${utils.camelCase(network)}CustomRedirects`], r => {
- options[frontend][network].checks = r[frontend + utils.camelCase(network) + "RedirectsChecks"]
- options[frontend][network].custom = r[frontend + utils.camelCase(network) + "CustomRedirects"]
- })
- }
- }
- }
- resolve()
})
}
-function all(service) {
- init()
+await init()
+await getConfig()
+
+function fetchFrontendInstanceList(service, frontend) {
let tmp = []
- for (const frontend in config.services[service].frontends) {
- if (config.services[service].frontends[frontend].instanceList) {
- for (const network in config.networks) {
- tmp.push(...redirects[frontend][network], ...options[frontend][network].custom)
- }
- } else if (config.services[service].frontends[frontend].singleInstance != undefined) tmp.push(config.services[service].frontends[frontend].singleInstance)
- }
+ if (!config.services[service].frontends[frontend].singleInstance) {
+ for (const network in config.networks) {
+ tmp.push(...redirects[frontend][network], ...options[frontend][network].custom)
+ }
+ } else if (config.services[service].frontends[frontend].singleInstance != undefined) tmp = config.services[service].frontends[frontend].singleInstance
return tmp
}
+function all(service, frontend) {
+ // init()
+ // getConfig()
+ let instances = []
+ if (!frontend) {
+ for (const frontend in config.services[service].frontends) {
+ instances.push(...fetchFrontendInstanceList(service, frontend))
+ }
+ } else {
+ instances.push(...fetchFrontendInstanceList(service, frontend))
+ }
+ return instances
+}
+
function regexArray(service, url) {
let targets
if (config.services[service].targets == "datajson") {
@@ -77,8 +71,6 @@ function regexArray(service, url) { return false
}
-getConfig()
-init()
browser.storage.onChanged.addListener(init)
function redirect(url, type, initiator) {
@@ -101,8 +93,8 @@ function redirect(url, type, initiator) { }
if (config.services[service].frontends[frontend].instanceList) {
- let instanceList = [...options[frontend][network].checks, ...options[frontend][network].custom]
- if (instanceList.length === 0 && options.networkFallback) instanceList = [...options[frontend].clearnet.checks, ...options[frontend].clearnet.custom]
+ let instanceList = [...options[frontend][network].enabled, ...options[frontend][network].custom]
+ if (instanceList.length === 0 && options.networkFallback) instanceList = [...options[frontend].clearnet.enabled, ...options[frontend].clearnet.custom]
if (instanceList.length === 0) return
randomInstance = utils.getRandomInstance(instanceList)
} else if (config.services[service].frontends[frontend].singleInstance) randomInstance = config.services[service].frontends[frontend].singleInstance
@@ -401,45 +393,37 @@ function initDefaults() { fetch("/instances/data.json")
.then(response => response.text())
.then(async data => {
- let dataJson = JSON.parse(data)
- let tmpRedirects = JSON.parse(data)
- browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList", "offlineBlackList"], async r => {
+ browser.storage.local.get(["options", "blacklists"], async r => {
+ let redirects = JSON.parse(data)
+ let options = r.options
+ let targets = {}
for (const service in config.services) {
+ options[service] = {}
if (config.services[service].targets == "datajson") {
- browser.storage.local.set({ [service + "Targets"]: [...dataJson[service]] })
- delete dataJson[service]
+ targets[service] = redirects[service]
+ //delete dataJson[service]
}
for (const defaultOption in config.services[service].options) {
- browser.storage.local.set({ [service + utils.camelCase(defaultOption)]: config.services[service].options[defaultOption] })
+ options[service][defaultOption] = config.services[service].options[defaultOption]
}
for (const frontend in config.services[service].frontends) {
if (config.services[service].frontends[frontend].instanceList) {
- let clearnetChecks = tmpRedirects[frontend].clearnet
- for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList, ...r.offlineBlackList]) {
- let i = clearnetChecks.indexOf(instance)
- if (i > -1) clearnetChecks.splice(i, 1)
- }
+ options[frontend] = {}
for (const network in config.networks) {
- switch (network) {
- case "clearnet":
- browser.storage.local.set({
- [frontend + "ClearnetRedirectsChecks"]: [...clearnetChecks],
- [frontend + "ClearnetCustomRedirects"]: [],
- })
- break
- default:
- browser.storage.local.set({
- [frontend + utils.camelCase(network) + "RedirectsChecks"]: [...tmpRedirects[frontend][network]],
- [frontend + utils.camelCase(network) + "CustomRedirects"]: [],
- })
+ options[frontend][network] = {}
+ options[frontend][network].enabled = redirects[frontend][network]
+ options[frontend][network].custom = []
+ }
+ for (const blacklist in r.blacklists) {
+ for (const instance of blacklist) {
+ let i = options[frontend].clearnet.enabled.indexOf(instance)
+ if (i > -1) options[frontend].clearnet.enabled.splice(i, 1)
}
}
}
}
}
- browser.storage.local.set({
- redirects: dataJson,
- })
+ browser.storage.local.set({ redirects, options, targets })
resolve()
})
})
@@ -459,15 +443,15 @@ function computeService(url) { function switchInstance(url) {
return new Promise(async resolve => {
- await init()
- await getConfig()
+ // await init()
+ // await getConfig()
const protocolHost = utils.protocolHost(url)
for (const service in config.services) {
if (!options[service].enabled) continue
if (!all(service).includes(protocolHost)) continue
- let instancesList = [...options[options[service].frontend][options.network].checks, ...options[options[service].frontend][options.network].custom]
- if (instancesList.length === 0 && options.networkFallback) instancesList = [...options[options[service].frontend].clearnet.checks, ...options[options[service].frontend].clearnet.custom]
+ let instancesList = [...options[options[service].frontend][options.network].enabled, ...options[options[service].frontend][options.network].custom]
+ if (instancesList.length === 0 && options.networkFallback) instancesList = [...options[options[service].frontend].clearnet.enabled, ...options[options[service].frontend].clearnet.custom]
let oldInstance
const i = instancesList.indexOf(protocolHost)
@@ -492,8 +476,8 @@ function switchInstance(url) { function reverse(url) {
return new Promise(async resolve => {
- await init()
- await getConfig()
+ // await init()
+ // await getConfig()
let protocolHost = utils.protocolHost(url)
let currentService
for (const service in config.services) {
@@ -504,6 +488,8 @@ function reverse(url) { case "instagram":
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(config.services[currentService].url + url.pathname + url.search)
+ return
case "youtube":
case "imdb":
case "imgur":
@@ -518,10 +504,72 @@ function reverse(url) { })
}
+function unifyPreferences(url) {
+ return new Promise(async resolve => {
+ // await init()
+ // await getConfig()
+ const protocolHost = utils.protocolHost(url)
+ let currentFrontend, currentService
+ serviceloop: for (const service in config.services) {
+ for (const frontend in config.services[service].frontends) {
+ if (all(service, frontend).includes(protocolHost)) {
+ currentFrontend = frontend
+ currentService = service
+ break serviceloop
+ }
+ }
+ }
+ let instancesList = [...options[currentFrontend][options.network].enabled, ...options[currentFrontend][options.network].custom]
+ if (options.networkFallback && options.network != "clearnet") instancesList.push(...options[currentFrontend].clearnet.enabled, ...options[currentFrontend].clearnet.custom)
+
+ const frontend = config.services[currentService].frontends[currentFrontend]
+ if ("cookies" in frontend.preferences) {
+ for (const cookie in frontend.preferences.cookies) {
+ await utils.copyCookie(currentFrontend, url, instancesList, cookie)
+ }
+ }
+ if ("localStorage" in frontend.preferences) {
+ }
+ if ("indexeddb" in frontend.preferences) {
+ }
+ if ("token" in frontend.preferences) {
+ }
+ resolve(true)
+ })
+}
+
+function setRedirects(redirects) {
+ browser.storage.local.get(["options", "blacklists"], async r => {
+ let options = r.options
+ let targets = {}
+ for (const service in config.services) {
+ if (config.services[service].targets == "datajson") {
+ targets[service] = redirects[service]
+ }
+ for (const frontend in config.services[service].frontends) {
+ if (config.services[service].frontends[frontend].instanceList) {
+ for (const network in config.networks) {
+ options[frontend][network].enabled = redirects[frontend][network]
+ }
+ for (const blacklist in r.blacklists) {
+ for (const instance of blacklist) {
+ let i = options[frontend].clearnet.enabled.indexOf(instance)
+ if (i > -1) options[frontend].clearnet.enabled.splice(i, 1)
+ }
+ }
+ }
+ }
+ }
+ browser.storage.local.set({ redirects, targets, options })
+ })
+}
+
export default {
redirect,
initDefaults,
computeService,
switchInstance,
reverse,
+ unifyPreferences,
+ setRedirects,
}
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js index c28af018..0e8acb3c 100644 --- a/src/assets/javascripts/utils.js +++ b/src/assets/javascripts/utils.js @@ -440,21 +440,7 @@ function unify(test) { return } - let result = await youtubeHelper.copyPasteInvidiousCookies(test, url) - if (!result) result = await youtubeHelper.copyPastePipedLocalStorage(test, url, currTab.id) - if (!result) result = await youtubeHelper.copyPastePipedMaterialLocalStorage(test, url, currTab.id) - - if (!result) result = await twitterHelper.initNitterCookies(test, url) - if (!result) result = await redditHelper.initLibredditCookies(test, url) - if (!result) result = await redditHelper.initTedditCookies(test, url) - if (!result) result = await searchHelper.initSearxCookies(test, url) - if (!result) result = await searchHelper.initSearxngCookies(test, url) - if (!result) result = await searchHelper.initLibrexCookies(test, url) - if (!result) result = await tiktokHelper.initProxiTokCookies(test, url) - if (!result) result = await wikipediaHelper.initWikilessCookies(test, url) - if (!result) result = await translateHelper.copyPasteSimplyTranslateCookies(test, url) - if (!result) result = await translateHelper.copyPasteLingvaLocalStorage(test, url) - if (!result) result = await instagramHelper.initBibliogramPreferences(test, url) + let result = await servicesHelper.unifyPreferences(url) resolve(result) } |
