package protolog import "strings" // sensitiveCommandVerbs sind Kommandos, deren Argumente Zugangsdaten // enthalten können (Akzeptanzkriterium 2: Zugangsdaten erscheinen nie // im Klartext im Log). PASS (POP3), LOGIN (IMAP) tragen das Passwort // direkt als Argument; AUTH ist für zukünftige SMTP-Authentifizierung // vorsorglich mit aufgenommen, auch wenn ING-03 kein AUTH implementiert. var sensitiveCommandVerbs = map[string]bool{ "PASS": true, "LOGIN": true, "AUTH": true, } // RedactCommandLine liefert eine loggbare Darstellung einer // Kommandozeile: das Kommando (Verb) bleibt sichtbar — wichtig für die // Diagnose (Akzeptanzkriterium 3) —, Argumente sensibler Kommandos // werden vollständig durch "[REDACTED]" ersetzt statt einzeln // geparst, damit auch unerwartet platzierte Zugangsdaten (z. B. ein // Benutzername, der zufällig wie ein Passwort aussieht) nicht // versehentlich durchrutschen. func RedactCommandLine(verb string, args []string) string { verbUpper := strings.ToUpper(verb) if sensitiveCommandVerbs[verbUpper] { if len(args) == 0 { return verbUpper } return verbUpper + " [REDACTED]" } if len(args) == 0 { return verbUpper } return verbUpper + " " + strings.Join(args, " ") }