aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/assets/javascripts/services.js50
-rw-r--r--src/pages/background/background.js6
2 files changed, 25 insertions, 31 deletions
diff --git a/src/assets/javascripts/services.js b/src/assets/javascripts/services.js
index 7569e9ec..0490f956 100644
--- a/src/assets/javascripts/services.js
+++ b/src/assets/javascripts/services.js
@@ -794,38 +794,36 @@ function processUpdate() {
// For websites that have a strict policy that would not normally allow these frontends to be embedded within the website.
function modifyContentSecurityPolicy(details) {
let isChanged = false
- if (details.type == "main_frame") {
- for (const header in details.responseHeaders) {
- if (details.responseHeaders[header].name == "content-security-policy") {
- let instancesList = []
- for (const service in config.services) {
- if (config.services[service].embeddable) {
- for (const frontend in config.services[service].frontends) {
- if (config.services[service].frontends[frontend].embeddable) {
- for (const network in config.networks) {
- instancesList.push(...options[frontend])
- }
+ if (details.type != "main_frame") return
+
+ for (const header in details.responseHeaders) {
+ if (details.responseHeaders[header].name == "content-security-policy") {
+ let instancesList = []
+ for (const service in config.services) {
+ if (config.services[service].embeddable) {
+ for (const frontend in config.services[service].frontends) {
+ if (config.services[service].frontends[frontend].embeddable) {
+ for (const network in config.networks) {
+ instancesList.push(...options[frontend])
}
}
}
}
- let securityPolicyList = details.responseHeaders[header].value.split(";")
- for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim()
- let newSecurity = ""
- for (const item of securityPolicyList) {
- if (item.trim() == "") continue
- let regex = item.match(/([a-z-]{0,}) (.*)/)
- if (regex == null) continue
- let [, key, vals] = regex
- if (key == "frame-src") vals = vals + " " + instancesList.join(" ")
- newSecurity += key + " " + vals + "; "
- }
-
- details.responseHeaders[header].value = newSecurity
- isChanged = true
}
+ let securityPolicyList = details.responseHeaders[header].value.split(";")
+ for (const i in securityPolicyList) securityPolicyList[i] = securityPolicyList[i].trim()
+ let newSecurity = ""
+ for (const item of securityPolicyList) {
+ if (item.trim() == "") continue
+ let regex = item.match(/([a-z-]{0,}) (.*)/)
+ if (regex == null) continue
+ let [, key, vals] = regex
+ if (key == "frame-src") vals = vals + " " + instancesList.join(" ")
+ newSecurity += key + " " + vals + "; "
+ }
+ details.responseHeaders[header].value = newSecurity
+ return { details }
}
- if (isChanged) return { responseHeaders: details.responseHeaders }
}
}
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index e1230c37..e4fc2f72 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -216,11 +216,7 @@ browser.contextMenus.onClicked.addListener(async (info) => {
})
browser.webRequest.onHeadersReceived.addListener(
- e => {
- let response = servicesHelper.modifyContentSecurityPolicy(e)
- if (!response) response = servicesHelper.modifyContentSecurityPolicy(e)
- return response
- },
+ servicesHelper.modifyContentSecurityPolicy,
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
)