You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/09/09 06:29:29 UTC

[camel] branch main updated: Change DefaultMaskingFormatter to preserve quotes in keyValue data (#6061)

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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new c0ce500  Change DefaultMaskingFormatter to preserve quotes in keyValue data (#6061)
c0ce500 is described below

commit c0ce500254a9f86d37888c888c5f3da9c8a08c96
Author: Christoph Deppisch <cd...@redhat.com>
AuthorDate: Thu Sep 9 08:29:05 2021 +0200

    Change DefaultMaskingFormatter to preserve quotes in keyValue data (#6061)
    
    Log masking formatter preserves the quotes used in the source data when masking keyValue pairs. Supported are no quotes, single quotes and normal quotes.
---
 .../camel/support/processor/DefaultMaskingFormatterTest.java | 12 ++++++------
 .../camel/support/processor/DefaultMaskingFormatter.java     |  8 ++++----
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/core/camel-core/src/test/java/org/apache/camel/support/processor/DefaultMaskingFormatterTest.java b/core/camel-core/src/test/java/org/apache/camel/support/processor/DefaultMaskingFormatterTest.java
index fe51812..7041572 100644
--- a/core/camel-core/src/test/java/org/apache/camel/support/processor/DefaultMaskingFormatterTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/support/processor/DefaultMaskingFormatterTest.java
@@ -27,7 +27,7 @@ public class DefaultMaskingFormatterTest {
         DefaultMaskingFormatter formatter = new DefaultMaskingFormatter();
         String answer
                 = formatter.format("key=value, myPassword=foo,\n myPassphrase=\"foo bar\", secretKey='!@#$%^&*() -+[]{};:'");
-        assertEquals("key=value, myPassword=\"xxxxx\",\n myPassphrase=\"xxxxx\", secretKey=\"xxxxx\"", answer);
+        assertEquals("key=value, myPassword=xxxxx,\n myPassphrase=\"xxxxx\", secretKey='xxxxx'", answer);
 
         answer = formatter.format("<xmlPassword>\n foo bar \n</xmlPassword>\n<user password=\"asdf qwert\"/>");
         assertEquals("<xmlPassword>\n xxxxx \n</xmlPassword>\n<user password=\"xxxxx\"/>", answer);
@@ -61,7 +61,7 @@ public class DefaultMaskingFormatterTest {
         DefaultMaskingFormatter formatter = new DefaultMaskingFormatter(true, false, true);
         String answer
                 = formatter.format("key=value, myPassword=foo,\n myPassphrase=\"foo bar\", secretKey='!@#$%^&*() -+[]{};:'");
-        assertEquals("key=value, myPassword=\"xxxxx\",\n myPassphrase=\"xxxxx\", secretKey=\"xxxxx\"", answer);
+        assertEquals("key=value, myPassword=xxxxx,\n myPassphrase=\"xxxxx\", secretKey='xxxxx'", answer);
 
         answer = formatter.format("<xmlPassword>\n foo bar \n</xmlPassword>\n<user password=\"asdf qwert\"/>");
         assertEquals("<xmlPassword>\n foo bar \n</xmlPassword>\n<user password=\"xxxxx\"/>", answer);
@@ -78,7 +78,7 @@ public class DefaultMaskingFormatterTest {
         DefaultMaskingFormatter formatter = new DefaultMaskingFormatter(true, true, false);
         String answer
                 = formatter.format("key=value, myPassword=foo,\n myPassphrase=\"foo bar\", secretKey='!@#$%^&*() -+[]{};:'");
-        assertEquals("key=value, myPassword=\"xxxxx\",\n myPassphrase=\"xxxxx\", secretKey=\"xxxxx\"", answer);
+        assertEquals("key=value, myPassword=xxxxx,\n myPassphrase=\"xxxxx\", secretKey='xxxxx'", answer);
 
         answer = formatter.format("<xmlPassword>\n foo bar \n</xmlPassword>\n<user password=\"asdf qwert\"/>");
         assertEquals("<xmlPassword>\n xxxxx \n</xmlPassword>\n<user password=\"xxxxx\"/>", answer);
@@ -96,7 +96,7 @@ public class DefaultMaskingFormatterTest {
         formatter.setMaskString("**********");
         String answer
                 = formatter.format("key=value, myPassword=foo,\n myPassphrase=\"foo bar\", secretKey='!@#$%^&*() -+[]{};:'");
-        assertEquals("key=value, myPassword=\"**********\",\n myPassphrase=\"**********\", secretKey=\"**********\"", answer);
+        assertEquals("key=value, myPassword=**********,\n myPassphrase=\"**********\", secretKey='**********'", answer);
 
         answer = formatter.format("<xmlPassword>\n foo bar \n</xmlPassword>\n<user password=\"asdf qwert\"/>");
         assertEquals("<xmlPassword>\n ********** \n</xmlPassword>\n<user password=\"**********\"/>", answer);
@@ -113,7 +113,7 @@ public class DefaultMaskingFormatterTest {
         DefaultMaskingFormatter formatter = new DefaultMaskingFormatter();
         String answer
                 = formatter.format("key=value, myAccessKey=foo,\n authkey=\"foo bar\", refreshtoken='!@#$%^&*() -+[]{};:'");
-        assertEquals("key=value, myAccessKey=\"xxxxx\",\n authkey=\"xxxxx\", refreshtoken=\"xxxxx\"", answer);
+        assertEquals("key=value, myAccessKey=xxxxx,\n authkey=\"xxxxx\", refreshtoken='xxxxx'", answer);
 
         answer = formatter.format("<subscribeKey>\n foo bar \n</subscribeKey>\n<user verificationCode=\"asdf qwert\"/>");
         assertEquals("<subscribeKey>\n xxxxx \n</subscribeKey>\n<user verificationCode=\"xxxxx\"/>", answer);
@@ -134,7 +134,7 @@ public class DefaultMaskingFormatterTest {
                 = formatter.format(
                         "key=value, Cheese=gauda, myPassword=foo,\n myPassphrase=\"foo bar\", secretKey='!@#$%^&*() -+[]{};:'");
         assertEquals(
-                "key=value, Cheese=\"**********\", myPassword=\"**********\",\n myPassphrase=\"**********\", secretKey=\"**********\"",
+                "key=value, Cheese=**********, myPassword=**********,\n myPassphrase=\"**********\", secretKey='**********'",
                 answer);
 
         answer = formatter
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultMaskingFormatter.java b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultMaskingFormatter.java
index d1de9bc..bd28f16 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultMaskingFormatter.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/processor/DefaultMaskingFormatter.java
@@ -36,7 +36,7 @@ public class DefaultMaskingFormatter implements MaskingFormatter {
 
     private static final Logger LOG = LoggerFactory.getLogger(DefaultMaskingFormatter.class);
 
-    private Set<String> keywords;
+    private final Set<String> keywords;
     private boolean maskKeyValue;
     private boolean maskXmlElement;
     private boolean maskJson;
@@ -109,13 +109,13 @@ public class DefaultMaskingFormatter implements MaskingFormatter {
             answer = xmlElementMaskPattern.matcher(answer).replaceAll("$1" + maskString + "$3");
             if (maskKeyValue) {
                 // used for the attributes in the XML tags
-                answer = keyValueMaskPattern.matcher(answer).replaceAll("$1\"" + maskString + "\"");
+                answer = keyValueMaskPattern.matcher(answer).replaceAll("$1" + maskString);
             }
         } else if (json) {
             answer = jsonMaskPattern.matcher(answer).replaceAll("\"$1\"$2:$3\"" + maskString + "\"");
         } else if (maskKeyValue) {
             // key=value paris
-            answer = keyValueMaskPattern.matcher(answer).replaceAll("$1\"" + maskString + "\"");
+            answer = keyValueMaskPattern.matcher(answer).replaceAll("$1" + maskString);
         }
 
         return answer;
@@ -169,7 +169,7 @@ public class DefaultMaskingFormatter implements MaskingFormatter {
             return null;
         }
         regex.insert(0, "([\\w]*(?:");
-        regex.append(")[\\w]*[\\s]*?=[\\s]*?)([\\S&&[^'\",\\}\\]\\)]]+[\\S&&[^,\\}\\]\\)>]]*?|\"[^\"]*?\"|'[^']*?')");
+        regex.append(")[\\w]*[\\s]*?=[\\s]*?['\"]?)([^'\",]+)");
 
         if (LOG.isDebugEnabled()) {
             LOG.debug("KeyValue Pattern: {}", regex);