This is an automated email from the ASF dual-hosted git repository.

heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git

commit a7ccf6a2114a191ef59545869fa8fc15c0ba2f41
Author: Alex Heneveld <[email protected]>
AuthorDate: Mon Jan 20 20:44:13 2025 +0000

    Sanitize stdout and stderr from scripts\
    
    Useful where they are used to collect env vars.
---
 .../core/task/system/internal/ExecWithLoggingHelpers.java    |  2 ++
 .../org/apache/brooklyn/util/stream/LoggingOutputStream.java | 12 ++++++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/ExecWithLoggingHelpers.java
 
b/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/ExecWithLoggingHelpers.java
index 6185c3a0ef..b7fdc141a7 100644
--- 
a/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/ExecWithLoggingHelpers.java
+++ 
b/core/src/main/java/org/apache/brooklyn/util/core/task/system/internal/ExecWithLoggingHelpers.java
@@ -133,6 +133,7 @@ public abstract class ExecWithLoggingHelpers {
             OutputStream outO = LoggingOutputStream.builder()
                     .outputStream(execFlags.get(STDOUT))
                     .logger(commandLogger)
+                    .sanitizer(Sanitizer::sanitizeMultilineString)
                     .logPrefix(stdoutLogPrefix)
                     .build();
 
@@ -144,6 +145,7 @@ public abstract class ExecWithLoggingHelpers {
             OutputStream outE = LoggingOutputStream.builder()
                     .outputStream(execFlags.get(STDERR))
                     .logger(commandLogger)
+                    .sanitizer(Sanitizer::sanitizeMultilineString)
                     .logPrefix(stderrLogPrefix)
                     .build();
             execFlags.put(STDERR, outE);
diff --git 
a/utils/common/src/main/java/org/apache/brooklyn/util/stream/LoggingOutputStream.java
 
b/utils/common/src/main/java/org/apache/brooklyn/util/stream/LoggingOutputStream.java
index 7c1322cea6..c3d3c779d1 100644
--- 
a/utils/common/src/main/java/org/apache/brooklyn/util/stream/LoggingOutputStream.java
+++ 
b/utils/common/src/main/java/org/apache/brooklyn/util/stream/LoggingOutputStream.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.io.OutputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Function;
 
 import org.apache.http.util.ByteArrayBuffer;
 import org.slf4j.Logger;
@@ -52,6 +53,7 @@ public class LoggingOutputStream extends FilterOutputStream {
         OutputStream out;
         Logger log;
         String logPrefix;
+        Function<String,String> sanitizer;
         
         public Builder outputStream(OutputStream val) {
             this.out = val;
@@ -65,6 +67,10 @@ public class LoggingOutputStream extends FilterOutputStream {
             this.logPrefix = val;
             return this;
         }
+        public Builder sanitizer(Function<String,String> val) {
+            this.sanitizer = val;
+            return this;
+        }
         public LoggingOutputStream build() {
             return new LoggingOutputStream(this);
         }
@@ -73,7 +79,8 @@ public class LoggingOutputStream extends FilterOutputStream {
     protected final Logger log;
     protected final String logPrefix;
     private final AtomicBoolean running = new AtomicBoolean(true);
-    
+    protected final Function<String,String> sanitizer;
+
     // Uses byte array, rather than StringBuilder, to handle Unicode chars 
longer than one byte
     private ByteArrayBuffer lineSoFar = new ByteArrayBuffer(16);
 
@@ -81,6 +88,7 @@ public class LoggingOutputStream extends FilterOutputStream {
         super(builder.out != null ? builder.out : NOOP_OUTPUT_STREAM);
         log = builder.log;
         logPrefix = (builder.logPrefix != null) ? builder.logPrefix : "";
+        sanitizer = (builder.sanitizer != null) ? builder.sanitizer : s->s;
       }
 
     @Override
@@ -151,7 +159,7 @@ public class LoggingOutputStream extends FilterOutputStream 
{
         while (line.length()>0 && (line.charAt(0)=='\n' || 
line.charAt(0)=='\r'))
             line = line.substring(1);
         if (!line.isEmpty()) {
-            if (log!=null && log.isDebugEnabled()) log.debug(logPrefix+line);
+            if (log!=null && log.isDebugEnabled()) 
log.debug(logPrefix+sanitizer.apply(line));
         }
     }
 }

Reply via email to