From bb320e42bf2cf862b9c4b438c1517547b53ed67b Mon Sep 17 00:00:00 2001 From: taojinlong Date: Thu, 25 Sep 2025 12:02:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20jdbc=20=E6=BC=8F?= =?UTF-8?q?=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/dataease/datasource/type/Db2.java | 19 ++++++++++--------- .../java/io/dataease/datasource/type/H2.java | 4 ++-- .../io/dataease/datasource/type/Mongo.java | 19 ++++++++++--------- .../dataease/datasource/type/Sqlserver.java | 12 ++++++++++-- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/type/Db2.java b/core/core-backend/src/main/java/io/dataease/datasource/type/Db2.java index c8123e6c6a..9ce3b790bb 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/type/Db2.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/type/Db2.java @@ -35,31 +35,32 @@ public class Db2 extends DatasourceConfiguration { } return getJdbcUrl(); } + String url = ""; if (StringUtils.isEmpty(extraParams.trim())) { if (StringUtils.isEmpty(getSchema())) { - return "jdbc:db2://HOSTNAME:PORT/DATABASE" + url = "jdbc:db2://HOSTNAME:PORT/DATABASE" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()); } else { - return "jdbc:db2://HOSTNAME:PORT/DATABASE:currentSchema=SCHEMA;" + url = "jdbc:db2://HOSTNAME:PORT/DATABASE:currentSchema=SCHEMA;" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("SCHEMA", getSchema().trim()); } } else { - String url = "jdbc:db2://HOSTNAME:PORT/DATABASE:EXTRA_PARAMS" + url = "jdbc:db2://HOSTNAME:PORT/DATABASE:EXTRA_PARAMS" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("EXTRA_PARAMS", getExtraParams().trim()); - for (String illegalParameter : illegalParameters) { - if (url.toLowerCase().contains(illegalParameter.toLowerCase())) { - DEException.throwException("Illegal parameter: " + illegalParameter); - } - } - return url; } + for (String illegalParameter : illegalParameters) { + if (url.toLowerCase().contains(illegalParameter.toLowerCase())) { + DEException.throwException("Illegal parameter: " + illegalParameter); + } + } + return url; } } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/type/H2.java b/core/core-backend/src/main/java/io/dataease/datasource/type/H2.java index b9fab0538d..5b9ac19da7 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/type/H2.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/type/H2.java @@ -22,8 +22,8 @@ public class H2 extends DatasourceConfiguration { DEException.throwException("Has illegal parameter: " + jdbc); } } - if (StringUtils.isNotEmpty(getJdbcUrl()) && !getJdbcUrl().startsWith("jdbc:h2")) { - DEException.throwException("Illegal jdbcUrl: " + getJdbcUrl()); + if (StringUtils.isNotEmpty(jdbc) && !jdbc.startsWith("jdbc:h2")) { + DEException.throwException("Illegal jdbcUrl: " + jdbc); } return jdbc; } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/type/Mongo.java b/core/core-backend/src/main/java/io/dataease/datasource/type/Mongo.java index 6e90420094..c77dfaf747 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/type/Mongo.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/type/Mongo.java @@ -18,29 +18,30 @@ public class Mongo extends DatasourceConfiguration { private List showTableSqls = Arrays.asList("show tables"); public String getJdbc() { - if(StringUtils.isNoneEmpty(getUrlType()) && !getUrlType().equalsIgnoreCase("hostName")){ + if (StringUtils.isNoneEmpty(getUrlType()) && !getUrlType().equalsIgnoreCase("hostName")) { if (!getJdbcUrl().startsWith("jdbc:mysql")) { DEException.throwException("Illegal jdbcUrl: " + getJdbcUrl()); } return getJdbcUrl(); } + String jdbcUrl = ""; if (StringUtils.isEmpty(extraParams.trim())) { - return "jdbc:mysql://HOSTNAME:PORT/DATABASE" + jdbcUrl = "jdbc:mysql://HOSTNAME:PORT/DATABASE" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()); } else { - for (String illegalParameter : illegalParameters) { - if (getExtraParams().contains(illegalParameter)) { - throw new RuntimeException("Illegal parameter: " + illegalParameter); - } - } - - return "jdbc:mysql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS" + jdbcUrl = "jdbc:mysql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("EXTRA_PARAMS", getExtraParams().trim()); } + for (String illegalParameter : illegalParameters) { + if (jdbcUrl.contains(illegalParameter)) { + throw new RuntimeException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; } } diff --git a/core/core-backend/src/main/java/io/dataease/datasource/type/Sqlserver.java b/core/core-backend/src/main/java/io/dataease/datasource/type/Sqlserver.java index 26eaa6a8e1..16d7939e95 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/type/Sqlserver.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/type/Sqlserver.java @@ -6,6 +6,7 @@ import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import java.net.URLDecoder; import java.util.Arrays; import java.util.List; import java.util.regex.Pattern; @@ -25,18 +26,25 @@ public class Sqlserver extends DatasourceConfiguration { } return getJdbcUrl(); } + String jdbcUrl = ""; if (StringUtils.isEmpty(extraParams.trim())) { - return "jdbc:sqlserver://HOSTNAME:PORT;DatabaseName=DATABASE" + jdbcUrl = "jdbc:sqlserver://HOSTNAME:PORT;DatabaseName=DATABASE" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()); } else { - return "jdbc:sqlserver://HOSTNAME:PORT;DatabaseName=DATABASE;EXTRA_PARAMS" + jdbcUrl = "jdbc:sqlserver://HOSTNAME:PORT;DatabaseName=DATABASE;EXTRA_PARAMS" .replace("HOSTNAME", getLHost().trim()) .replace("PORT", getLPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("EXTRA_PARAMS", getExtraParams().trim()); } + for (String illegalParameter : illegalParameters) { + if (URLDecoder.decode(jdbcUrl).toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(jdbcUrl).contains(illegalParameter.toLowerCase())) { + DEException.throwException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; } private static final Pattern DB_NAME_PATTERN = Pattern.compile(";databaseName=([^;]+)");