Skip to main content

rskit_logging/masking/
config.rs

1//! Configuration for the masking engine.
2
3use serde::Deserialize;
4
5/// Configuration for sensitive data masking.
6#[derive(Debug, Clone, Deserialize)]
7pub struct MaskingConfig {
8    /// Whether masking is enabled.  Default: `true`.
9    #[serde(default = "default_true")]
10    pub enabled: bool,
11
12    /// Additional field names to mask (beyond defaults).
13    #[serde(default)]
14    pub field_names: Vec<String>,
15
16    /// Additional regex patterns for value masking.
17    #[serde(default)]
18    pub value_patterns: Vec<String>,
19
20    /// Replacement string for field-name masking.  Default: `"[REDACTED]"`.
21    #[serde(default = "default_replacement")]
22    pub replacement: String,
23}
24
25fn default_true() -> bool {
26    true
27}
28
29fn default_replacement() -> String {
30    "[REDACTED]".to_string()
31}
32
33impl Default for MaskingConfig {
34    fn default() -> Self {
35        Self {
36            enabled: default_true(),
37            field_names: Vec::new(),
38            value_patterns: Vec::new(),
39            replacement: default_replacement(),
40        }
41    }
42}