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 <cdeppi...@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);

Reply via email to