diff --git a/src/proxy_config.rs b/src/proxy_config.rs index eebff72..a481058 100644 --- a/src/proxy_config.rs +++ b/src/proxy_config.rs @@ -144,16 +144,10 @@ impl ProxyEntry { let mut redirects = vec![]; for mid in middleware.into_iter() { match mid { - ConfigTag::AddHeader(k, v) => add_headers.push((k.to_string(), v.to_string())), + ConfigTag::AddHeader(k, v) => add_headers.push((k.to_string(), v.clone())), ConfigTag::AddRedirect(m, r, c) => redirects.push(((*m).clone(), (*r).clone(), *c)), - ConfigTag::LocalLb => - /* handled in parent fx */ - { - () - } - ConfigTag::GlobalLb => - /* handled in parent fx */ - { + ConfigTag::LocalLb | ConfigTag::GlobalLb => { + /* handled in parent fx */ () } }; @@ -251,7 +245,7 @@ enum MatchTag { #[derive(Debug)] enum ConfigTag<'a> { - AddHeader(&'a str, &'a str), + AddHeader(&'a str, String), AddRedirect(UrlPrefix, UrlPrefix, u32), GlobalLb, LocalLb, @@ -280,8 +274,8 @@ fn parse_tricot_tags(tag: &str) -> Option { UrlPrefix::new(raw_prefix) .map(|prefix| ParsedTag::Frontend(MatchTag::HttpWithTls(prefix, priority))) } - ["tricot-add-header", header_key, header_value] => Some(ParsedTag::Middleware( - ConfigTag::AddHeader(header_key, header_value), + ["tricot-add-header", header_key, header_values @ ..] => Some(ParsedTag::Middleware( + ConfigTag::AddHeader(header_key, header_values.join(" ")), )), ["tricot-add-redirect", raw_match, raw_replace, maybe_raw_code @ ..] => { let (p_match, p_replace) = @@ -525,8 +519,8 @@ mod tests { #[test] fn test_parse_tricot_add_header_tag() { - match parse_tricot_add_header_tag("tricot-add-header Content-Security-Policy default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'") { - Some((name, value)) => { + match parse_tricot_tags("tricot-add-header Content-Security-Policy default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'") { + Some(ParsedTag::Middleware(ConfigTag::AddHeader(name, value))) => { assert_eq!(name, "Content-Security-Policy"); assert_eq!(value, "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'"); }