Ordo
Initial public release
63c75d5
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