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