You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by am...@apache.org on 2019/10/14 04:01:05 UTC

svn commit: r1868419 - in /jackrabbit/oak/trunk/oak-run/src: main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java

Author: amitj
Date: Mon Oct 14 04:01:05 2019
New Revision: 1868419

URL: http://svn.apache.org/viewvc?rev=1868419&view=rev
Log:
OAK-8697: Filter sensitive information when logging parameters for 'datastore' command

Removed mongo URI and azure blob connection string from logging args

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
    jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java

Modified: jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java?rev=1868419&r1=1868418&r2=1868419&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/run/DataStoreCommand.java Mon Oct 14 04:01:05 2019
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.run;
 import java.io.File;
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
@@ -218,7 +219,9 @@ public class DataStoreCommand implements
     }
 
     private static void logCliArgs(String[] args) {
-        log.info("Command line arguments used for datastore command [{}]", Joiner.on(' ').join(args));
+        String [] filteredArgs = Arrays.stream(args).filter(
+            str -> !str.startsWith("az:") && !str.startsWith("mongodb:")).toArray(String[]::new);
+        log.info("Command line arguments used for datastore command [{}]", Joiner.on(' ').join(filteredArgs));
         List<String> inputArgs = ManagementFactory.getRuntimeMXBean().getInputArguments();
         if (!inputArgs.isEmpty()) {
             log.info("System properties and vm options passed {}", inputArgs);

Modified: jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java?rev=1868419&r1=1868418&r2=1868419&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java (original)
+++ jackrabbit/oak/trunk/oak-run/src/test/java/org/apache/jackrabbit/oak/run/DataStoreCommandTest.java Mon Oct 14 04:01:05 2019
@@ -87,7 +87,6 @@ import org.junit.After;
 import org.junit.Assert;
 import org.junit.Assume;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -231,6 +230,38 @@ public class DataStoreCommandTest {
     }
 
     @Test
+    public void testNoSensitiveParams() throws Exception {
+        storeFixture.close();
+        File dump = temporaryFolder.newFolder();
+        List<String> argsList = Lists
+            .newArrayList("--check-consistency", "--" + getOption(blobFixture.getType()), blobFixture.getConfigPath(), "--out-dir",
+                dump.getAbsolutePath(), storeFixture.getConnectionString(), "--reset-log-config", "false", "--work-dir",
+                temporaryFolder.newFolder().getAbsolutePath());
+        if (!Strings.isNullOrEmpty(additionalParams)) {
+            argsList.add(additionalParams);
+        }
+
+        log.info("Running testNoSensitiveParams: {}", argsList);
+        LogCustomizer customLogs = LogCustomizer
+            .forLogger(DataStoreCommand.class.getName())
+            .enable(Level.INFO)
+            .filter(Level.INFO)
+            .matchesRegex(".*mongodb:.*|.*az:.*")
+            .create();
+        customLogs.starting();
+
+        DataStoreCommand cmd = new DataStoreCommand();
+        try {
+            cmd.execute(argsList.toArray(new String[0]));
+        } catch (Exception e) {
+            log.error("", e);
+        }
+
+        Assert.assertEquals(0, customLogs.getLogs().size());
+        customLogs.finished();
+    }
+
+    @Test
     public void testMissingOpParams() throws Exception {
         storeFixture.close();
         File dump = temporaryFolder.newFolder();