From bc52e142a123feaecbc2158b7b21de4d1268a28c Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 16 Dec 2024 17:50:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=95=B0=E6=8D=AE=E6=BA=90=E4=BF=AE?= =?UTF-8?q?=E5=A4=8Dmysql=E3=80=81Redshift=E8=BF=9C=E7=A8=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=89=A7=E8=A1=8C=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/datasource/MysqlConfiguration.java | 21 ++++++++++--------- .../dto/datasource/PgConfiguration.java | 20 ++++++++++-------- .../dto/datasource/RedshiftConfiguration.java | 18 +++++++++++++--- 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/core/backend/src/main/java/io/dataease/dto/datasource/MysqlConfiguration.java b/core/backend/src/main/java/io/dataease/dto/datasource/MysqlConfiguration.java index 75bdc07f55..3b875f2dc8 100644 --- a/core/backend/src/main/java/io/dataease/dto/datasource/MysqlConfiguration.java +++ b/core/backend/src/main/java/io/dataease/dto/datasource/MysqlConfiguration.java @@ -19,24 +19,25 @@ public class MysqlConfiguration extends JdbcConfiguration { private List illegalParameters = Arrays.asList("autoDeserialize", "queryInterceptors", "statementInterceptors", "detectCustomCollations", "allowloadlocalinfile", "allowUrlInLocalInfile", "allowLoadLocalInfileInPath"); public String getJdbc() { + String jdbcUrl = ""; if (StringUtils.isEmpty(extraParams.trim())) { - return "jdbc:mysql://HOSTNAME:PORT/DATABASE".replace("HOSTNAME", getHost().trim()).replace("PORT", getPort().toString().trim()).replace("DATABASE", getDataBase().trim()); + jdbcUrl = "jdbc:mysql://HOSTNAME:PORT/DATABASE".replace("HOSTNAME", getHost().trim()).replace("PORT", getPort().toString().trim()).replace("DATABASE", getDataBase().trim()); } else { - for (String illegalParameter : getIllegalParameters()) { - if (getExtraParams().toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(getExtraParams()).contains(illegalParameter.toLowerCase())) { - throw new RuntimeException("Illegal parameter: " + illegalParameter); - } - } - - return "jdbc:mysql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS".replace("HOSTNAME", getHost().trim()).replace("PORT", getPort().toString().trim()).replace("DATABASE", getDataBase().trim()).replace("EXTRA_PARAMS", getExtraParams().trim()); + jdbcUrl = "jdbc:mysql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS".replace("HOSTNAME", getHost().trim()).replace("PORT", getPort().toString().trim()).replace("DATABASE", getDataBase().trim()).replace("EXTRA_PARAMS", getExtraParams().trim()); } + for (String illegalParameter : getIllegalParameters()) { + if (jdbcUrl.toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(jdbcUrl).contains(illegalParameter.toLowerCase())) { + throw new RuntimeException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; } - public List getIllegalParameters(){ + public List getIllegalParameters() { List newIllegalParameters = new ArrayList<>(); newIllegalParameters.addAll(illegalParameters); newIllegalParameters.addAll(Arrays.asList("allowloadlocalinfile", "allowUrlInLocalInfile", "allowLoadLocalInfileInPath")); return newIllegalParameters; } -} \ No newline at end of file +} diff --git a/core/backend/src/main/java/io/dataease/dto/datasource/PgConfiguration.java b/core/backend/src/main/java/io/dataease/dto/datasource/PgConfiguration.java index 400af7852f..279748cdc7 100644 --- a/core/backend/src/main/java/io/dataease/dto/datasource/PgConfiguration.java +++ b/core/backend/src/main/java/io/dataease/dto/datasource/PgConfiguration.java @@ -19,31 +19,33 @@ public class PgConfiguration extends JdbcConfiguration { public String getJdbc() { + String jdbcUrl = ""; if (StringUtils.isEmpty(extraParams.trim())) { if (StringUtils.isEmpty(getSchema())) { - return "jdbc:postgresql://HOSTNAME:PORT/DATABASE" + jdbcUrl = "jdbc:postgresql://HOSTNAME:PORT/DATABASE" .replace("HOSTNAME", getHost().trim()) .replace("PORT", getPort().toString().trim()) .replace("DATABASE", getDataBase().trim()); } else { - return "jdbc:postgresql://HOSTNAME:PORT/DATABASE?currentSchema=SCHEMA" + jdbcUrl = "jdbc:postgresql://HOSTNAME:PORT/DATABASE?currentSchema=SCHEMA" .replace("HOSTNAME", getHost().trim()) .replace("PORT", getPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("SCHEMA", getSchema().trim()); } } else { - for (String illegalParameter : illegalParameters) { - if (getExtraParams().toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(getExtraParams()).contains(illegalParameter.toLowerCase())) { - throw new RuntimeException("Illegal parameter: " + illegalParameter); - } - } - return "jdbc:postgresql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS" + jdbcUrl = "jdbc:postgresql://HOSTNAME:PORT/DATABASE?EXTRA_PARAMS" .replace("HOSTNAME", getHost().trim()) .replace("PORT", getPort().toString().trim()) .replace("DATABASE", getDataBase().trim()) .replace("EXTRA_PARAMS", getExtraParams().trim()); - } + + for (String illegalParameter : illegalParameters) { + if (jdbcUrl.toLowerCase().contains(illegalParameter.toLowerCase()) || URLDecoder.decode(jdbcUrl).contains(illegalParameter.toLowerCase())) { + throw new RuntimeException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; } } diff --git a/core/backend/src/main/java/io/dataease/dto/datasource/RedshiftConfiguration.java b/core/backend/src/main/java/io/dataease/dto/datasource/RedshiftConfiguration.java index 6a335ff6ec..34a5409226 100644 --- a/core/backend/src/main/java/io/dataease/dto/datasource/RedshiftConfiguration.java +++ b/core/backend/src/main/java/io/dataease/dto/datasource/RedshiftConfiguration.java @@ -4,17 +4,29 @@ import io.dataease.plugins.datasource.entity.JdbcConfiguration; import lombok.Getter; import lombok.Setter; +import java.net.URLDecoder; +import java.util.Arrays; +import java.util.List; + @Getter @Setter public class RedshiftConfiguration extends JdbcConfiguration { private String driver = "com.amazon.redshift.jdbc42.Driver"; + private List illegalParameters = Arrays.asList("socketFactory", "socketFactoryArg", "sslfactory", "sslfactoryarg", "loggerLevel", "loggerFile", "allowUrlInLocalInfile", "allowLoadLocalInfileInPath"); + public String getJdbc() { - // 连接参数先写死,后边要把编码、时区等参数放到数据源的设置中 - return "jdbc:redshift://HOSTNAME:PORT/DATABASE" + + String jdbcUrl = "jdbc:redshift://HOSTNAME:PORT/DATABASE" .replace("HOSTNAME", getHost().trim()) .replace("PORT", getPort().toString().trim()) .replace("DATABASE", getDataBase().trim()); + for (String illegalParameter : illegalParameters) { + if (jdbcUrl.toLowerCase().contains(illegalParameter.toLowerCase())) { + throw new RuntimeException("Illegal parameter: " + illegalParameter); + } + } + return jdbcUrl; } -} \ No newline at end of file +}