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

dahn pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.19 by this push:
     new e196275d5a6 ipmi: extra log sanitation (#10428)
e196275d5a6 is described below

commit e196275d5a6e4b6c05cd9c82db30b4dc0ef7e545
Author: dahn <d...@onecht.net>
AuthorDate: Thu Feb 20 09:01:28 2025 +0100

    ipmi: extra log sanitation (#10428)
---
 .../IpmitoolOutOfBandManagementDriver.java         |  8 ++---
 .../driver/ipmitool/IpmitoolWrapper.java           | 37 +++++++++++++---------
 2 files changed, 26 insertions(+), 19 deletions(-)

diff --git 
a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
 
b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
index 2c42554afcc..53a7efbea9e 100644
--- 
a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
+++ 
b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolOutOfBandManagementDriver.java
@@ -47,13 +47,13 @@ public final class IpmitoolOutOfBandManagementDriver 
extends AdapterBase impleme
     private final ExecutorService ipmitoolExecutor = 
Executors.newFixedThreadPool(OutOfBandManagementService.SyncThreadPoolSize.value(),
 new NamedThreadFactory("IpmiToolDriver"));
     private final IpmitoolWrapper IPMITOOL = new 
IpmitoolWrapper(ipmitoolExecutor);
 
-    public final ConfigKey<String> IpmiToolPath = new 
ConfigKey<String>("Advanced", String.class, 
"outofbandmanagement.ipmitool.path", "/usr/bin/ipmitool",
+    public final ConfigKey<String> IpmiToolPath = new ConfigKey<>("Advanced", 
String.class, "outofbandmanagement.ipmitool.path", "/usr/bin/ipmitool",
             "The out of band management ipmitool path used by the IpmiTool 
driver. Default: /usr/bin/ipmitool.", true, ConfigKey.Scope.Global);
 
-    public final ConfigKey<String> IpmiToolInterface = new 
ConfigKey<String>("Advanced", String.class, 
"outofbandmanagement.ipmitool.interface", "lanplus",
+    public final ConfigKey<String> IpmiToolInterface = new 
ConfigKey<>("Advanced", String.class, "outofbandmanagement.ipmitool.interface", 
"lanplus",
             "The out of band management IpmiTool driver interface to use. 
Default: lanplus. Valid values are: lan, lanplus, open etc.", true, 
ConfigKey.Scope.Global);
 
-    public final ConfigKey<String> IpmiToolRetries = new 
ConfigKey<String>("Advanced", String.class, 
"outofbandmanagement.ipmitool.retries", "1",
+    public final ConfigKey<String> IpmiToolRetries = new 
ConfigKey<>("Advanced", String.class, "outofbandmanagement.ipmitool.retries", 
"1",
             "The out of band management IpmiTool driver retries option -R. 
Default 1.", true, ConfigKey.Scope.Global);
 
     private String getIpmiUserId(ImmutableMap<OutOfBandManagement.Option, 
String> options, final Duration timeOut) {
@@ -122,7 +122,7 @@ public final class IpmitoolOutOfBandManagementDriver 
extends AdapterBase impleme
 
         final OutOfBandManagementDriverResponse response = 
IPMITOOL.executeCommands(ipmiToolCommands, cmd.getTimeout());
 
-        String oneLineCommand = StringUtils.join(ipmiToolCommands, " ");
+        String oneLineCommand = 
StringUtils.join(IPMITOOL.getSanatisedCommandStrings(ipmiToolCommands), " ");
         String result = response.getResult().trim();
 
         if (response.isSuccess()) {
diff --git 
a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
 
b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
index 6fe98c0925c..2004943c0c6 100644
--- 
a/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
+++ 
b/plugins/outofbandmanagement-drivers/ipmitool/src/main/java/org/apache/cloudstack/outofbandmanagement/driver/ipmitool/IpmitoolWrapper.java
@@ -26,6 +26,7 @@ import 
org.apache.cloudstack.outofbandmanagement.driver.OutOfBandManagementDrive
 import org.apache.cloudstack.utils.process.ProcessResult;
 import org.apache.cloudstack.utils.process.ProcessRunner;
 import org.apache.log4j.Logger;
+import org.jetbrains.annotations.NotNull;
 import org.joda.time.Duration;
 
 import java.util.ArrayList;
@@ -156,25 +157,31 @@ public final class IpmitoolWrapper {
     public OutOfBandManagementDriverResponse executeCommands(final 
List<String> commands, final Duration timeOut) {
         final ProcessResult result = RUNNER.executeCommands(commands, timeOut);
         if (LOG.isTraceEnabled()) {
-            List<String> cleanedCommands = new ArrayList<String>();
-            int maskNextCommand = 0;
-            for (String command : commands) {
-                if (maskNextCommand > 0) {
-                    cleanedCommands.add("**** ");
-                    maskNextCommand--;
-                    continue;
-                }
-                if (command.equalsIgnoreCase("-P")) {
-                    maskNextCommand = 1;
-                } else if (command.toLowerCase().endsWith("password")) {
-                    maskNextCommand = 2;
-                }
-                cleanedCommands.add(command);
-            }
+            List<String> cleanedCommands = 
getSanatisedCommandStrings(commands);
             LOG.trace("Executed ipmitool process with commands: " + 
StringUtils.join(cleanedCommands, ", ") +
                       "\nIpmitool execution standard output: " + 
result.getStdOutput() +
                       "\nIpmitool execution error output: " + 
result.getStdError());
         }
         return new OutOfBandManagementDriverResponse(result.getStdOutput(), 
result.getStdError(), result.isSuccess());
     }
+
+    @NotNull
+    List<String> getSanatisedCommandStrings(List<String> commands) {
+        List<String> cleanedCommands = new ArrayList<String>();
+        int maskNextCommand = 0;
+        for (String command : commands) {
+            if (maskNextCommand > 0) {
+                cleanedCommands.add("**** ");
+                maskNextCommand--;
+                continue;
+            }
+            if (command.equalsIgnoreCase("-P")) {
+                maskNextCommand = 1;
+            } else if (command.toLowerCase().endsWith("password")) {
+                maskNextCommand = 2;
+            }
+            cleanedCommands.add(command);
+        }
+        return cleanedCommands;
+    }
 }

Reply via email to