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