libdd_trace_obfuscation/
obfuscation_config.rs1use log::{debug, error};
5use std::env;
6
7use libdd_common::config::parse_env;
8
9use crate::replacer::{self, ReplaceRule};
10
11#[derive(Debug)]
12pub struct ObfuscationConfig {
13 pub tag_replace_rules: Option<Vec<ReplaceRule>>,
14 pub http_remove_query_string: bool,
15 pub http_remove_path_digits: bool,
16 pub obfuscate_memcached: bool,
17 pub obfuscation_redis_enabled: bool,
18 pub obfuscation_redis_remove_all_args: bool,
19}
20
21impl ObfuscationConfig {
22 pub fn new() -> Result<ObfuscationConfig, Box<dyn std::error::Error>> {
23 let tag_replace_rules: Option<Vec<ReplaceRule>> = match env::var("DD_APM_REPLACE_TAGS") {
24 Ok(replace_rules_str) => match replacer::parse_rules_from_string(&replace_rules_str) {
25 Ok(res) => {
26 debug!("Successfully parsed DD_APM_REPLACE_TAGS: {res:?}");
27 Some(res)
28 }
29 Err(e) => {
30 error!("Failed to parse DD_APM_REPLACE_TAGS: {e}");
31 None
32 }
33 },
34 Err(_) => None,
35 };
36 let http_remove_query_string =
37 parse_env::bool("DD_APM_OBFUSCATION_HTTP_REMOVE_QUERY_STRING").unwrap_or(false);
38 let http_remove_path_digits =
39 parse_env::bool("DD_APM_OBFUSCATION_HTTP_REMOVE_PATHS_WITH_DIGITS").unwrap_or(false);
40 let obfuscation_redis_enabled =
41 parse_env::bool("DD_APM_OBFUSCATION_REDIS_ENABLED").unwrap_or(false);
42 let obfuscation_redis_remove_all_args =
43 parse_env::bool("DD_APM_OBFUSCATION_REDIS_REMOVE_ALL_ARGS").unwrap_or(false);
44
45 let obfuscate_memcached =
46 parse_env::bool("DD_APM_OBFUSCATION_MEMCACHED_ENABLED").unwrap_or(false);
47
48 Ok(ObfuscationConfig {
49 tag_replace_rules,
50 http_remove_query_string,
51 http_remove_path_digits,
52 obfuscate_memcached,
53 obfuscation_redis_enabled,
54 obfuscation_redis_remove_all_args,
55 })
56 }
57}