aboutsummaryrefslogtreecommitdiffstats
path: root/src/assets
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-12-07 10:51:43 +0300
committerManeraKai <manerakai@protonmail.com>2022-12-07 10:51:43 +0300
commitf454ced9490309f37199c2a47dcd8cbc7e976798 (patch)
tree894c1b18a7a30ed1406257830f768a1917ef126b /src/assets
parentFixed Bypass not working https://github.com/libredirect/libredirect/issues/475 (diff)
downloadlibredirect-f454ced9490309f37199c2a47dcd8cbc7e976798.zip
Removed LatencyTest, AutoRedirect, Unify, DisableInstance
Diffstat (limited to 'src/assets')
-rw-r--r--src/assets/javascripts/general.js2
-rw-r--r--src/assets/javascripts/services.js53
-rw-r--r--src/assets/javascripts/utils.js205
3 files changed, 10 insertions, 250 deletions
diff --git a/src/assets/javascripts/general.js b/src/assets/javascripts/general.js
index 9e490c4a..7b8f9dac 100644
--- a/src/assets/javascripts/general.js
+++ b/src/assets/javascripts/general.js
@@ -32,10 +32,8 @@ async function initDefaults() {
},
theme: "detect",
popupServices: ["youtube", "twitter", "instagram", "tiktok", "imgur", "reddit", "quora", "translate", "maps"],
- autoRedirect: false,
network: "clearnet",
networkFallback: true,
- latencyThreshold: 1000,
},
},
() => resolve()
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index a8d99075..5463bfca 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -550,50 +550,6 @@ function reverse(url, urlString) {
})
}
-function unifyPreferences(url, tabId) {
- return new Promise(async resolve => {
- await init()
- const protocolHost = utils.protocolHost(url)
- for (const service in config.services) {
- for (const frontend in config.services[service].frontends) {
- if (all(service, frontend, options, config, redirects).includes(protocolHost)) {
- let instancesList = [...options[frontend][options.network].enabled, ...options[frontend][options.network].custom]
- if (options.networkFallback && options.network != "clearnet") instancesList.push(...options[frontend].clearnet.enabled, ...options[frontend].clearnet.custom)
-
- const frontendObject = config.services[service].frontends[frontend]
- if ("cookies" in frontendObject.preferences) {
- for (const cookie of frontendObject.preferences.cookies) {
- await utils.copyCookie(url, instancesList, cookie)
- }
- }
- if ("localstorage" in frontendObject.preferences) {
- browser.storage.local.set({ tmp: [frontend, frontendObject.preferences.localstorage] })
- browser.tabs.executeScript(tabId, {
- file: "/assets/javascripts/get-localstorage.js",
- runAt: "document_start",
- })
- for (const instance of instancesList)
- browser.tabs.create({ url: instance }, tab =>
- browser.tabs.executeScript(tab.id, {
- file: "/assets/javascripts/set-localstorage.js",
- runAt: "document_start",
- })
- )
- }
- /*
- if ("indexeddb" in frontendObject.preferences) {
- }
- if ("token" in frontendObject.preferences) {
- }
- */
- resolve(true)
- return
- }
- }
- }
- })
-}
-
function setRedirects(passedRedirects) {
return new Promise(resolve => {
fetch("/config/config.json")
@@ -662,7 +618,6 @@ function initDefaults() {
let targets = {}
let config = JSON.parse(configData)
const localstorage = {}
- const latency = {}
for (const service in config.services) {
options[service] = {}
if (config.services[service].targets == "datajson") {
@@ -687,7 +642,7 @@ function initDefaults() {
}
}
}
- browser.storage.local.set({ redirects, options, targets, latency, localstorage })
+ browser.storage.local.set({ redirects, options, targets, localstorage })
resolve()
})
})
@@ -702,7 +657,6 @@ function upgradeOptions() {
.then(configData => {
browser.storage.local.get(null, r => {
let options = r.options
- let latency = {}
const config = JSON.parse(configData)
options.exceptions = r.exceptions
if (r.theme != "DEFAULT") options.theme = r.theme
@@ -717,7 +671,6 @@ function upgradeOptions() {
options.popupServices.splice(tmp, 1)
options.popupServices.push("sendFiles")
}
- options.autoRedirect = r.autoRedirect
switch (r.onlyEmbeddedVideo) {
case "onlyNotEmbedded":
options.youtube.redirectType = "main_frame"
@@ -747,7 +700,6 @@ function upgradeOptions() {
if (r[oldService + "EmbedFrontend"] && (service != "youtube" || r[oldService + "EmbedFrontend"] == "invidious" || r[oldService + "EmbedFrontend"] == "piped"))
options[service].embedFrontend = r[oldService + "EmbedFrontend"]
for (const frontend in config.services[service].frontends) {
- if (r[frontend + "Latency"]) latency[frontend] = r[frontend + "Latency"]
for (const network in config.networks) {
let protocol
if (network == "clearnet") protocol = "normal"
@@ -763,7 +715,7 @@ function upgradeOptions() {
}
}
}
- browser.storage.local.set({ options, latency }, () => resolve())
+ browser.storage.local.set({ options }, () => resolve())
})
})
})
@@ -870,7 +822,6 @@ export default {
computeService,
switchInstance,
reverse,
- unifyPreferences,
setRedirects,
initDefaults,
upgradeOptions,
diff --git a/src/assets/javascripts/utils.js b/src/assets/javascripts/utils.js
index b176967b..4dd537fc 100644
--- a/src/assets/javascripts/utils.js
+++ b/src/assets/javascripts/utils.js
@@ -13,7 +13,6 @@ function camelCase(str) {
let cloudflareBlackList = []
let authenticateBlackList = []
-let offlineBlackList = []
async function initBlackList() {
return new Promise(resolve => {
fetch("/instances/blacklist.json")
@@ -21,7 +20,6 @@ async function initBlackList() {
.then(data => {
cloudflareBlackList = JSON.parse(data).cloudflare
authenticateBlackList = JSON.parse(data).authenticate
- offlineBlackList = JSON.parse(data).offline
resolve()
})
})
@@ -60,7 +58,6 @@ function protocolHost(url) {
}
async function processDefaultCustomInstances(service, frontend, network, document) {
- let instancesLatency
let frontendNetworkElement = document.getElementById(frontend).getElementsByClassName(network)[0]
let frontendCustomInstances = []
@@ -74,11 +71,10 @@ async function processDefaultCustomInstances(service, frontend, network, documen
async function getFromStorage() {
return new Promise(async resolve =>
- browser.storage.local.get(["options", "redirects", "latency"], r => {
+ browser.storage.local.get(["options", "redirects",], r => {
frontendDefaultRedirects = r.options[frontend][network].enabled
frontendCustomInstances = r.options[frontend][network].custom
options = r.options
- instancesLatency = r.latency[frontend] ?? []
redirects = r.redirects
resolve()
})
@@ -106,27 +102,17 @@ async function processDefaultCustomInstances(service, frontend, network, documen
<x data-localise="__MSG_toggleAll__">Toggle All</x>
<input type="checkbox" class="toggle-all"/>
</div>`,
- ...redirects[frontend][network].map(x => {
- const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
- const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
- const offline = offlineBlackList.includes(x) ? ' <span style="color:grey;">offline</span>' : ""
+ ...redirects[frontend][network]
+ .map(x => {
+ const cloudflare = cloudflareBlackList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ""
+ const authenticate = authenticateBlackList.includes(x) ? ' <span style="color:orange;">authenticate</span>' : ""
- let ms = instancesLatency[x]
- let latencyColor = ms == -1 ? "red" : ms <= 1000 ? "green" : ms <= 2000 ? "orange" : "red"
- let latencyLimit
- if (ms == 5000) latencyLimit = "5000ms+"
- else if (ms > 5000) latencyLimit = `ERROR: ${ms - 5000}`
- else if (ms == -1) latencyLimit = "Server not found"
- else latencyLimit = ms + "ms"
-
- const latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + "</span>" : ""
-
- let warnings = [cloudflare, authenticate, offline, latency].join(" ")
- return `<div>
+ let warnings = [cloudflare, authenticate].join(" ")
+ return `<div>
<x><a href="${x}" target="_blank">${x}</a>${warnings}</x>
<input type="checkbox" class="${x}"/>
</div>`
- }),
+ }),
].join("\n<hr>\n")
localise.localisePage()
@@ -211,133 +197,6 @@ async function processDefaultCustomInstances(service, frontend, network, documen
})
}
-function ping(href) {
- return new Promise(async resolve => {
- let average = 0
- let time
- for (let i = 0; i < 3; i++) {
- time = await pingOnce(href)
- if (i == 0) continue
- if (time >= 5000) {
- resolve(time)
- return
- }
- average += time
- }
- average = parseInt(average / 3)
- resolve(average)
- })
-}
-
-function pingOnce(href) {
- return new Promise(async resolve => {
- let started
- let http = new XMLHttpRequest()
- http.timeout = 5000
- http.ontimeout = () => resolve(5000)
- http.onerror = () => resolve()
- http.onreadystatechange = () => {
- if (http.readyState == 2) {
- if (http.status == 200) {
- let ended = new Date().getTime()
- http.abort()
- resolve(ended - started)
- } else {
- resolve(5000 + http.status)
- }
- }
- }
- http.open("GET", `${href}?_=${new Date().getTime()}`, true)
- started = new Date().getTime()
- http.send(null)
- })
-}
-
-async function testLatency(element, instances, frontend) {
- return new Promise(async resolve => {
- let myList = {}
- let latencyThreshold, options
- browser.storage.local.get(["options"], r => {
- latencyThreshold = r.options.latencyThreshold
- options = r.options
- })
- for (const href of instances) {
- await ping(href).then(time => {
- let color
- if (time) {
- myList[href] = time
- if (time <= 1000) color = "green"
- else if (time <= 2000) color = "orange"
- else color = "red"
-
- if (time > latencyThreshold && options[frontend].clearnet.enabled.includes(href)) {
- options[frontend].clearnet.enabled.splice(options[frontend].clearnet.enabled.indexOf(href), 1)
- }
-
- let text
- if (time == 5000) text = "5000ms+"
- else if (time > 5000) text = `ERROR: ${time - 5000}`
- else text = `${time}ms`
- element.innerHTML = `${href}:&nbsp;<span style="color:${color};">${text}</span>`
- } else {
- myList[href] = -1
- color = "red"
- element.innerHTML = `${href}:&nbsp;<span style="color:${color};">Server not found</span>`
- if (options[frontend].clearnet.enabled.includes(href)) options[frontend].clearnet.enabled.splice(options[frontend].clearnet.enabled.indexOf(href), 1)
- }
- })
- }
- browser.storage.local.set({ options })
- resolve(myList)
- })
-}
-
-function copyCookie(targetUrl, urls, name) {
- return new Promise(resolve => {
- const query = {
- url: protocolHost(targetUrl),
- name: name,
- }
- browser.cookies.getAll(query, async cookies => {
- for (const cookie of cookies)
- if (cookie.name == name) {
- for (const url of urls) {
- const setQuery = {
- url: url,
- name: name,
- value: cookie.value,
- secure: true,
- expirationDate: cookie.expirationDate,
- }
- browser.cookies.set(setQuery)
- }
- break
- }
- resolve()
- })
- })
-}
-
-function getPreferencesFromToken(frontend, targetUrl, urls, name, endpoint) {
- return new Promise(resolve => {
- const http = new XMLHttpRequest()
- const url = `${targetUrl}${endpoint}`
- http.open("GET", url, false)
- //http.setRequestHeader("Cookie", `${name}=${cookie.value}`)
- http.send(null)
- const preferences = JSON.parse(http.responseText)
- let formdata = new FormData()
- for (var key in preferences) formdata.append(key, preferences[key])
- for (const url of urls) {
- const http = new XMLHttpRequest()
- http.open("POST", `${url}/settings/stay`, false)
- http.send(null)
- }
- resolve()
- return
- })
-}
-
function copyRaw(test, copyRawElement) {
return new Promise(resolve => {
browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
@@ -370,25 +229,6 @@ function copyRaw(test, copyRawElement) {
})
}
-function unify() {
- return new Promise(resolve => {
- browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
- let currTab = tabs[0]
- if (currTab) {
- let url
- try {
- url = new URL(currTab.url)
- } catch {
- resolve()
- return
- }
-
- resolve(await servicesHelper.unifyPreferences(url, currTab.id))
- }
- })
- })
-}
-
function switchInstance(test) {
return new Promise(resolve => {
browser.tabs.query({ active: true, currentWindow: true }, async tabs => {
@@ -412,41 +252,12 @@ function switchInstance(test) {
})
}
-function latency(service, frontend, document, location) {
- let latencyElement = document.getElementById(`latency-${frontend}`)
- let latencyLabel = document.getElementById(`latency-${frontend}-label`)
- latencyElement.addEventListener("click", async () => {
- let reloadWindow = () => location.reload()
- latencyElement.addEventListener("click", reloadWindow)
- browser.storage.local.get("redirects", r => {
- let redirects = r.redirects
- const oldHtml = latencyLabel.innerHTML
- latencyLabel.innerHTML = "..."
- testLatency(latencyLabel, redirects[frontend].clearnet, frontend).then(r => {
- const frontendLatency = r
- browser.storage.local.get("latency", r => {
- let latency = r.latency
- latency[frontend] = frontendLatency
- browser.storage.local.set({ latency })
- latencyLabel.innerHTML = oldHtml
- processDefaultCustomInstances(service, frontend, "clearnet", document)
- latencyElement.removeEventListener("click", reloadWindow)
- })
- })
- })
- })
-}
-
export default {
getRandomInstance,
updateInstances,
protocolHost,
processDefaultCustomInstances,
- latency,
- copyCookie,
- getPreferencesFromToken,
switchInstance,
copyRaw,
- unify,
camelCase,
}