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

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new cb5317f7ca [bug] Exception when using host in ipv6 format (#14040)
cb5317f7ca is described below

commit cb5317f7ca154e84280086839c5b2a3a5db0765b
Author: AliceXiaoLu <[email protected]>
AuthorDate: Mon Jan 15 09:33:08 2024 +0800

    [bug] Exception when using host in ipv6 format (#14040)
    
    * DB2 edit again, no username.
    
    * [bug] db2's jdbcUrl should be like this 
"jdbc:db2://localhost:50000/sample:currentSchema=DB2INST1;characterEncoding=UTF-8;".should
 be ":"
    
    * Update Db2DataSourceProcessor.java
    
    * Update Db2DataSourceProcessorTest.java
    
    * 【Bug】OracleSource edit again, ConnectionType is null
    
    * when user inputs ipv6,checkhost will return 
"!IPV4_PATTERN.matcher(host).matches()";
    I think we should use isInetAddress to check the host is isValid
    
    * Update AbstractDataSourceProcessor.java
    
    * Update DatabendDataSourceProcessorTest.java
    
    last week other modified this
    
    * Update MySQLDataSourceProcessorTest.java
    
    * Update DataSourceUtilsTest.java
    
    * Update MySQLDataSourceProcessorTest.java
    
    * Update KyuubiDataSourceProcessorTest.java
    
    * Update AbstractDataSourceProcessor.java
    
    if host is ipv6 or ipv4 will OK; if not check other
    
    * Update AbstractDataSourceProcessor.java
    
    * Update AbstractDataSourceProcessor.java
    
    * Update DataSourceUtilsTest.java
    
    增加ipv6数据源验证
    
    * [Bug] [dolphinscheduler-api] queryDataSource'password should be hidden.
    
    ---------
    
    Co-authored-by: xiangzihao <[email protected]>
    Co-authored-by: Rick Cheng <[email protected]>
---
 .../api/service/impl/DataSourceServiceImpl.java          |  1 +
 .../api/datasource/AbstractDataSourceProcessor.java      |  3 ++-
 .../datasource/mysql/utils/DataSourceUtilsTest.java      | 16 ++++++++++++++--
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataSourceServiceImpl.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataSourceServiceImpl.java
index 0ac7763ba7..a030762457 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataSourceServiceImpl.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/DataSourceServiceImpl.java
@@ -213,6 +213,7 @@ public class DataSourceServiceImpl extends BaseServiceImpl 
implements DataSource
         baseDataSourceParamDTO.setId(dataSource.getId());
         baseDataSourceParamDTO.setName(dataSource.getName());
         baseDataSourceParamDTO.setNote(dataSource.getNote());
+        baseDataSourceParamDTO.setPassword(getHiddenPassword());
 
         return baseDataSourceParamDTO;
     }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
index 856ae1c9e9..db357e9d5c 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
@@ -69,7 +69,8 @@ public abstract class AbstractDataSourceProcessor implements 
DataSourceProcessor
      * @param host datasource host
      */
     protected void checkHost(String host) {
-        if (!IPV4_PATTERN.matcher(host).matches() || 
!IPV6_PATTERN.matcher(host).matches()) {
+        if (com.google.common.net.InetAddresses.isInetAddress(host)) {
+        } else if (!IPV4_PATTERN.matcher(host).matches() || 
!IPV6_PATTERN.matcher(host).matches()) {
             throw new IllegalArgumentException("datasource host illegal");
         }
     }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/test/java/org/apache/dolphinscheduler/plugin/datasource/mysql/utils/DataSourceUtilsTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/test/java/org/apache/dolphinscheduler/plugin/datasource/mysql/utils/DataSourceUtilsTest.java
index 71f1b77449..7f3133d170 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/test/java/org/apache/dolphinscheduler/plugin/datasource/mysql/utils/DataSourceUtilsTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/test/java/org/apache/dolphinscheduler/plugin/datasource/mysql/utils/DataSourceUtilsTest.java
@@ -47,7 +47,20 @@ public class DataSourceUtilsTest {
     @Test
     public void testCheckDatasourceParam() {
         MySQLDataSourceParamDTO mysqlDatasourceParamDTO = new 
MySQLDataSourceParamDTO();
-        mysqlDatasourceParamDTO.setHost("localhost");
+        mysqlDatasourceParamDTO.setHost("0.0.0.0");
+        mysqlDatasourceParamDTO.setDatabase("default");
+        Map<String, String> other = new HashMap<>();
+        other.put("serverTimezone", "Asia/Shanghai");
+        other.put("queryTimeout", "-1");
+        other.put("characterEncoding", "utf8");
+        mysqlDatasourceParamDTO.setOther(other);
+        DataSourceUtils.checkDatasourceParam(mysqlDatasourceParamDTO);
+        Assertions.assertTrue(true);
+    }
+    @Test
+    public void testCheckIpv6DatasourceParam() {
+        MySQLDataSourceParamDTO mysqlDatasourceParamDTO = new 
MySQLDataSourceParamDTO();
+        mysqlDatasourceParamDTO.setHost("0000:0000:0000::0000");
         mysqlDatasourceParamDTO.setDatabase("default");
         Map<String, String> other = new HashMap<>();
         other.put("serverTimezone", "Asia/Shanghai");
@@ -57,7 +70,6 @@ public class DataSourceUtilsTest {
         DataSourceUtils.checkDatasourceParam(mysqlDatasourceParamDTO);
         Assertions.assertTrue(true);
     }
-
     @Test
     public void testBuildConnectionParams() {
         MySQLDataSourceParamDTO mysqlDatasourceParamDTO = new 
MySQLDataSourceParamDTO();

Reply via email to