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

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 49cbf96ba2 [INLONG-8813][Manager] Replacing whitespace characters in 
MySQL JDBC URL (#8814)
49cbf96ba2 is described below

commit 49cbf96ba228b99590cab733011462139b2fea69
Author: Hao <1780095+hnrai...@users.noreply.github.com>
AuthorDate: Wed Aug 30 17:36:12 2023 +0800

    [INLONG-8813][Manager] Replacing whitespace characters in MySQL JDBC URL 
(#8814)
---
 .../inlong/manager/common/consts/InlongConstants.java      |  6 ++++++
 .../inlong/manager/pojo/sink/mysql/MySQLSinkDTO.java       | 14 +++++++-------
 .../inlong/manager/pojo/sink/mysql/MySQLSinkDTOTest.java   |  6 ++++++
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/consts/InlongConstants.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/consts/InlongConstants.java
index 1f45d451d4..3683280c6d 100644
--- 
a/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/consts/InlongConstants.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/consts/InlongConstants.java
@@ -46,6 +46,8 @@ public class InlongConstants {
 
     public static final String BLANK = " ";
 
+    public static final String EMPTY = "";
+
     public static final String SLASH = "/";
 
     public static final String COLON = ":";
@@ -64,8 +66,12 @@ public class InlongConstants {
 
     public static final String QUESTION_MARK = "?";
 
+    public static final String AMPERSAND = "&";
+
     public static final String NEW_LINE = "\n";
 
+    public static final String REGEX_WHITESPACE = "\\s";
+
     public static final String ADMIN_USER = "admin";
 
     public static final Integer AFFECTED_ONE_ROW = 1;
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTO.java
 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTO.java
index b4b485d629..983d5da3ef 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTO.java
+++ 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTO.java
@@ -232,7 +232,7 @@ public class MySQLSinkDTO {
             while (resultUrl.contains(InlongConstants.PERCENT)) {
                 resultUrl = URLDecoder.decode(resultUrl, "UTF-8");
             }
-            resultUrl = resultUrl.replaceAll(InlongConstants.BLANK, "");
+            resultUrl = resultUrl.replaceAll(InlongConstants.REGEX_WHITESPACE, 
InlongConstants.EMPTY);
 
             if (resultUrl.contains(InlongConstants.QUESTION_MARK)) {
                 StringBuilder builder = new StringBuilder();
@@ -241,19 +241,19 @@ public class MySQLSinkDTO {
 
                 List<String> paramList = new ArrayList<>();
                 String queryString = StringUtils.substringAfter(resultUrl, 
InlongConstants.QUESTION_MARK);
-                for (String param : queryString.split("&")) {
-                    String key = StringUtils.substringBefore(param, "=");
-                    String value = StringUtils.substringAfter(param, "=");
+                for (String param : 
queryString.split(InlongConstants.AMPERSAND)) {
+                    String key = StringUtils.substringBefore(param, 
InlongConstants.EQUAL);
+                    String value = StringUtils.substringAfter(param, 
InlongConstants.EQUAL);
 
                     if (SENSITIVE_REMOVE_PARAM_MAP.contains(key) || 
SENSITIVE_REPLACE_PARAM_MAP.containsKey(key)) {
                         continue;
                     }
 
-                    paramList.add(key + "=" + value);
+                    paramList.add(key + InlongConstants.EQUAL + value);
                 }
-                SENSITIVE_REPLACE_PARAM_MAP.forEach((key, value) -> 
paramList.add(key + "=" + value));
+                SENSITIVE_REPLACE_PARAM_MAP.forEach((key, value) -> 
paramList.add(key + InlongConstants.EQUAL + value));
 
-                String params = StringUtils.join(paramList, "&");
+                String params = StringUtils.join(paramList, 
InlongConstants.AMPERSAND);
                 builder.append(params);
                 resultUrl = builder.toString();
             }
diff --git 
a/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTOTest.java
 
b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTOTest.java
index fe6d4f7dd1..3955a1538c 100644
--- 
a/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTOTest.java
+++ 
b/inlong-manager/manager-pojo/src/test/java/org/apache/inlong/manager/pojo/sink/mysql/MySQLSinkDTOTest.java
@@ -91,6 +91,12 @@ public class MySQLSinkDTOTest {
         Assertions.assertEquals(
                 
"jdbc:mysql://127.0.0.1:3306?autoDeserialize=false&allowUrlInLocalInfile=false&allowLoadLocalInfile=false",
                 originUrl);
+
+        originUrl = MySQLSinkDTO.filterSensitive(
+                
"jdbc:mysql://127.0.0.1:3306?autoDeserialize\t\t=%59%65%73&allowLoa\r\rdLocalInfile
 = 
yes&allowUrlInLocalInfil%65+\t=%74%72%75%45&allowLoadLocalInfileInPath\n=%2F");
+        Assertions.assertEquals(
+                
"jdbc:mysql://127.0.0.1:3306?autoDeserialize=false&allowUrlInLocalInfile=false&allowLoadLocalInfile=false",
+                originUrl);
     }
 
     @Test

Reply via email to