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();