Skip to content

Commit 050df50

Browse files
authored
feat(router): add incoming header request logs (#3939)
1 parent 0cb95a4 commit 050df50

File tree

9 files changed

+51
-1
lines changed

9 files changed

+51
-1
lines changed

config/deployments/integration_test.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,6 @@ outgoing_enabled = true
290290

291291
[webhook_source_verification_call]
292292
connectors_with_webhook_source_verification_call = "paypal"
293+
294+
[unmasked_headers]
295+
keys = "user-agent"

config/deployments/production.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,3 +304,6 @@ outgoing_enabled = true
304304

305305
[webhook_source_verification_call]
306306
connectors_with_webhook_source_verification_call = "paypal"
307+
308+
[unmasked_headers]
309+
keys = "user-agent"

config/deployments/sandbox.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,6 @@ outgoing_enabled = true
306306

307307
[webhook_source_verification_call]
308308
connectors_with_webhook_source_verification_call = "paypal"
309+
310+
[unmasked_headers]
311+
keys = "user-agent"

config/development.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,3 +571,6 @@ enabled = true
571571

572572
[file_storage]
573573
file_storage_backend = "file_system"
574+
575+
[unmasked_headers]
576+
keys = "user-agent"

config/docker_compose.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,3 +430,6 @@ source = "logs"
430430

431431
[file_storage]
432432
file_storage_backend = "file_system"
433+
434+
[unmasked_headers]
435+
keys = "user-agent"

crates/router/src/configs/secrets_transformers.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,5 +353,6 @@ pub(crate) async fn fetch_raw_secrets(
353353
#[cfg(feature = "olap")]
354354
connector_onboarding,
355355
cors: conf.cors,
356+
unmasked_headers: conf.unmasked_headers,
356357
}
357358
}

crates/router/src/configs/settings.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ pub struct Settings<S: SecretState> {
115115
pub events: EventsConfig,
116116
#[cfg(feature = "olap")]
117117
pub connector_onboarding: SecretStateContainer<ConnectorOnboarding, S>,
118+
pub unmasked_headers: UnmaskedHeaders,
119+
}
120+
121+
#[derive(Debug, Deserialize, Clone, Default)]
122+
pub struct UnmaskedHeaders {
123+
#[serde(deserialize_with = "deserialize_hashset")]
124+
pub keys: HashSet<String>,
118125
}
119126

120127
#[cfg(feature = "frm")]

crates/router/src/services/api.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1121,11 +1121,35 @@ where
11211121
{
11221122
let request_method = request.method().as_str();
11231123
let url_path = request.path();
1124+
1125+
let unmasked_incoming_header_keys = state.conf().unmasked_headers.keys;
1126+
1127+
let incoming_request_header = request.headers();
1128+
1129+
let incoming_header_to_log: HashMap<String, http::header::HeaderValue> =
1130+
incoming_request_header
1131+
.iter()
1132+
.fold(HashMap::new(), |mut acc, (key, value)| {
1133+
let key = key.to_string();
1134+
if unmasked_incoming_header_keys.contains(&key.as_str().to_lowercase()) {
1135+
acc.insert(key.clone(), value.clone());
1136+
} else {
1137+
acc.insert(
1138+
key.clone(),
1139+
http::header::HeaderValue::from_static("**MASKED**"),
1140+
);
1141+
}
1142+
acc
1143+
});
1144+
11241145
tracing::Span::current().record("request_method", request_method);
11251146
tracing::Span::current().record("request_url_path", url_path);
11261147

11271148
let start_instant = Instant::now();
1128-
logger::info!(tag = ?Tag::BeginRequest, payload = ?payload);
1149+
1150+
logger::info!(
1151+
tag = ?Tag::BeginRequest, payload = ?payload,
1152+
headers = ?incoming_header_to_log);
11291153

11301154
let server_wrap_util_res = metrics::request::record_request_time_metric(
11311155
server_wrap_util(

loadtest/config/development.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,3 +293,6 @@ enabled = true
293293
client_id = ""
294294
client_secret = ""
295295
partner_id = ""
296+
297+
[unmasked_headers]
298+
keys = "user-agent"

0 commit comments

Comments
 (0)