File size: 1,085 Bytes
63c75d5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import re
import os
from pathlib import Path
from config import settings
# Patterns resolved from env
_REDACT_PATTERNS = settings.spooler_redact_patterns.split(",")
_REDACTORS = []
def _build_redactors():
global _REDACTORS
for pat in _REDACT_PATTERNS:
pat = pat.strip()
if pat == "api_key":
# Matches common key formats
_REDACTORS.append(
(re.compile(r"(?i)(api[_-]?key|token|secret|password)\s*[:=]\s*['\"]?[\w\-]{8,}['\"]?"), "[REDACTED]")
)
elif pat == "path":
# Redact home dirs and usernames in paths
_REDACTORS.append(
(re.compile(r"/home/[^/]+|C:\\Users\\[^\\]+"), "[REDACTED_PATH]")
)
elif pat == "base64":
# Long base64-ish strings
_REDACTORS.append(
(re.compile(r"[A-Za-z0-9+/]{60,}={0,2}"), "[BASE64_REDACTED]")
)
_build_redactors()
def redact(text: str) -> str:
for pattern, replacement in _REDACTORS:
text = pattern.sub(replacement, text)
return text
|