Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions crates/trusted-server-core/src/html_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
move |el| {
if let Some(mut href) = el.get_attribute("href") {
let original_href = href.clone();
let element_name = el.tag_name();
if let Some(rewritten) = patterns.rewrite_url_value(&href) {
href = rewritten;
}
Expand All @@ -267,6 +268,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
&href,
&IntegrationAttributeContext {
attribute_name: "href",
element_name: &element_name,
request_host: &patterns.request_host,
request_scheme: &patterns.request_scheme,
origin_host: &patterns.origin_host,
Expand Down Expand Up @@ -296,6 +298,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
move |el| {
if let Some(mut src) = el.get_attribute("src") {
let original_src = src.clone();
let element_name = el.tag_name();
if let Some(rewritten) = patterns.rewrite_url_value(&src) {
src = rewritten;
}
Expand All @@ -304,6 +307,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
&src,
&IntegrationAttributeContext {
attribute_name: "src",
element_name: &element_name,
request_host: &patterns.request_host,
request_scheme: &patterns.request_scheme,
origin_host: &patterns.origin_host,
Expand Down Expand Up @@ -333,6 +337,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
move |el| {
if let Some(mut action) = el.get_attribute("action") {
let original_action = action.clone();
let element_name = el.tag_name();
if let Some(rewritten) = patterns.rewrite_url_value(&action) {
action = rewritten;
}
Expand All @@ -342,6 +347,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
&action,
&IntegrationAttributeContext {
attribute_name: "action",
element_name: &element_name,
request_host: &patterns.request_host,
request_scheme: &patterns.request_scheme,
origin_host: &patterns.origin_host,
Expand Down Expand Up @@ -371,6 +377,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
move |el| {
if let Some(mut srcset) = el.get_attribute("srcset") {
let original_srcset = srcset.clone();
let element_name = el.tag_name();
let new_srcset = srcset
.replace(&patterns.https_origin(), &patterns.replacement_url())
.replace(&patterns.http_origin(), &patterns.replacement_url())
Expand All @@ -388,6 +395,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
&srcset,
&IntegrationAttributeContext {
attribute_name: "srcset",
element_name: &element_name,
request_host: &patterns.request_host,
request_scheme: &patterns.request_scheme,
origin_host: &patterns.origin_host,
Expand Down Expand Up @@ -417,6 +425,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
move |el| {
if let Some(mut imagesrcset) = el.get_attribute("imagesrcset") {
let original_imagesrcset = imagesrcset.clone();
let element_name = el.tag_name();
let new_imagesrcset = imagesrcset
.replace(&patterns.https_origin(), &patterns.replacement_url())
.replace(&patterns.http_origin(), &patterns.replacement_url())
Expand All @@ -433,6 +442,7 @@ pub fn create_html_processor(config: HtmlProcessorConfig) -> impl StreamProcesso
&imagesrcset,
&IntegrationAttributeContext {
attribute_name: "imagesrcset",
element_name: &element_name,
request_host: &patterns.request_host,
request_scheme: &patterns.request_scheme,
origin_host: &patterns.origin_host,
Expand Down
2 changes: 2 additions & 0 deletions crates/trusted-server-core/src/integrations/datadome.rs
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@ mod tests {

let ctx = IntegrationAttributeContext {
attribute_name: "src",
element_name: "script",
request_host: "publisher.com",
request_scheme: "https",
origin_host: "origin.publisher.com",
Expand Down Expand Up @@ -777,6 +778,7 @@ mod tests {

let ctx = IntegrationAttributeContext {
attribute_name: "src",
element_name: "script",
request_host: "publisher.com",
request_scheme: "https",
origin_host: "origin.publisher.com",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,7 @@ mod tests {

let ctx = IntegrationAttributeContext {
attribute_name: "src",
element_name: "script",
request_host: "example.com",
request_scheme: "https",
origin_host: "origin.example.com",
Expand Down Expand Up @@ -823,6 +824,7 @@ mod tests {

let ctx = IntegrationAttributeContext {
attribute_name: "href",
element_name: "a",
request_host: "example.com",
request_scheme: "https",
origin_host: "origin.example.com",
Expand Down
1 change: 1 addition & 0 deletions crates/trusted-server-core/src/integrations/gpt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,7 @@ mod tests {
fn test_context() -> IntegrationAttributeContext<'static> {
IntegrationAttributeContext {
attribute_name: "src",
element_name: "script",
request_host: "edge.example.com",
request_scheme: "https",
origin_host: "origin.example.com",
Expand Down
Loading
Loading