mirror of
https://github.com/iv-org/invidious.git
synced 2025-10-24 01:38:31 -05:00
Only generate companion CSP one time to reuse it
This commit is contained in:
parent
325e013e0d
commit
b6ad47e75b
@ -1,4 +1,17 @@
|
|||||||
module Invidious::Routes::BeforeAll
|
module Invidious::Routes::BeforeAll
|
||||||
|
struct CompanionCSP
|
||||||
|
property companion_urls : String = ""
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
self.companion_urls = CONFIG.invidious_companion.reject(&.builtin_proxy).map do |companion|
|
||||||
|
uri =
|
||||||
|
"#{companion.public_url.scheme}://#{companion.public_url.host}#{companion.public_url.port ? ":#{companion.public_url.port}" : ""}"
|
||||||
|
end.join(" ")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private COMPANION_CSP = CompanionCSP.new
|
||||||
|
|
||||||
def self.handle(env)
|
def self.handle(env)
|
||||||
preferences = Preferences.from_json("{}")
|
preferences = Preferences.from_json("{}")
|
||||||
|
|
||||||
@ -35,9 +48,9 @@ module Invidious::Routes::BeforeAll
|
|||||||
"style-src 'self' 'unsafe-inline'",
|
"style-src 'self' 'unsafe-inline'",
|
||||||
"img-src 'self' data:",
|
"img-src 'self' data:",
|
||||||
"font-src 'self' data:",
|
"font-src 'self' data:",
|
||||||
"connect-src 'self'",
|
"connect-src 'self' " + COMPANION_CSP.companion_urls,
|
||||||
"manifest-src 'self'",
|
"manifest-src 'self'",
|
||||||
"media-src 'self' blob:",
|
"media-src 'self' blob: " + COMPANION_CSP.companion_urls,
|
||||||
"child-src 'self' blob:",
|
"child-src 'self' blob:",
|
||||||
"frame-src 'self'",
|
"frame-src 'self'",
|
||||||
"frame-ancestors " + frame_ancestors,
|
"frame-ancestors " + frame_ancestors,
|
||||||
|
|||||||
@ -209,17 +209,6 @@ module Invidious::Routes::Embed
|
|||||||
|
|
||||||
if CONFIG.invidious_companion.present?
|
if CONFIG.invidious_companion.present?
|
||||||
invidious_companion = CONFIG.invidious_companion.sample
|
invidious_companion = CONFIG.invidious_companion.sample
|
||||||
invidious_companion_urls = CONFIG.invidious_companion.reject(&.builtin_proxy).map do |companion|
|
|
||||||
uri =
|
|
||||||
"#{companion.public_url.scheme}://#{companion.public_url.host}#{companion.public_url.port ? ":#{companion.public_url.port}" : ""}"
|
|
||||||
end.join(" ")
|
|
||||||
|
|
||||||
if !invidious_companion_urls.empty?
|
|
||||||
env.response.headers["Content-Security-Policy"] =
|
|
||||||
env.response.headers["Content-Security-Policy"]
|
|
||||||
.gsub("media-src", "media-src #{invidious_companion_urls}")
|
|
||||||
.gsub("connect-src", "connect-src #{invidious_companion_urls}")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
rendered "embed"
|
rendered "embed"
|
||||||
|
|||||||
@ -194,17 +194,6 @@ module Invidious::Routes::Watch
|
|||||||
|
|
||||||
if CONFIG.invidious_companion.present?
|
if CONFIG.invidious_companion.present?
|
||||||
invidious_companion = CONFIG.invidious_companion.sample
|
invidious_companion = CONFIG.invidious_companion.sample
|
||||||
invidious_companion_urls = CONFIG.invidious_companion.reject(&.builtin_proxy).map do |companion|
|
|
||||||
uri =
|
|
||||||
"#{companion.public_url.scheme}://#{companion.public_url.host}#{companion.public_url.port ? ":#{companion.public_url.port}" : ""}"
|
|
||||||
end.join(" ")
|
|
||||||
|
|
||||||
if !invidious_companion_urls.empty?
|
|
||||||
env.response.headers["Content-Security-Policy"] =
|
|
||||||
env.response.headers["Content-Security-Policy"]
|
|
||||||
.gsub("media-src", "media-src #{invidious_companion_urls}")
|
|
||||||
.gsub("connect-src", "connect-src #{invidious_companion_urls}")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
templated "watch"
|
templated "watch"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user