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

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


The following commit(s) were added to refs/heads/dev by this push:
     new 1c15345  fix: Improve the security of datasource management (#2844)
1c15345 is described below

commit 1c153454423f4b967f3fcd8fb906a4626799872f
Author: 如梦技术 <[email protected]>
AuthorDate: Sat May 30 15:03:10 2020 +0800

    fix: Improve the security of datasource management (#2844)
    
    Closes 2638
    
    Co-authored-by: dailidong <[email protected]>
---
 .../dolphinscheduler/api/service/DataSourceService.java  | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/DataSourceService.java
 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/DataSourceService.java
index afa13b7..f4e846f 100644
--- 
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/DataSourceService.java
+++ 
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/DataSourceService.java
@@ -21,6 +21,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang.StringUtils;
 import org.apache.dolphinscheduler.api.enums.Status;
 import org.apache.dolphinscheduler.api.utils.PageInfo;
 import org.apache.dolphinscheduler.api.utils.Result;
@@ -159,8 +160,18 @@ public class DataSourceService extends BaseService{
             putMsg(result, Status.DATASOURCE_EXIST);
             return result;
         }
+        //check password,if the password is not updated, set to the old 
password.
+        JSONObject paramObject = JSON.parseObject(parameter);
+        String password = paramObject.getString(Constants.PASSWORD);
+        if (StringUtils.isBlank(password)) {
+            String oldConnectionParams = dataSource.getConnectionParams();
+            JSONObject oldParams = JSON.parseObject(oldConnectionParams);
+            paramObject.put(Constants.PASSWORD, 
oldParams.getString(Constants.PASSWORD));
+        }
+        // connectionParams json
+        String connectionParams = paramObject.toJSONString();
 
-        Boolean isConnection = checkConnection(type, parameter);
+        Boolean isConnection = checkConnection(type, connectionParams);
         if (!isConnection) {
             logger.info("connect failed, type:{}, parameter:{}", type, 
parameter);
             putMsg(result, Status.DATASOURCE_CONNECT_FAILED);
@@ -172,7 +183,7 @@ public class DataSourceService extends BaseService{
         dataSource.setNote(desc);
         dataSource.setUserName(loginUser.getUserName());
         dataSource.setType(type);
-        dataSource.setConnectionParams(parameter);
+        dataSource.setConnectionParams(connectionParams);
         dataSource.setUpdateTime(now);
         dataSourceMapper.updateById(dataSource);
         putMsg(result, Status.SUCCESS);
@@ -257,7 +268,6 @@ public class DataSourceService extends BaseService{
         map.put(PRINCIPAL, datasourceForm.getPrincipal());
         map.put(DATABASE, database);
         map.put(USER_NAME, datasourceForm.getUser());
-        map.put(PASSWORD, datasourceForm.getPassword());
         map.put(OTHER, otherMap);
         result.put(Constants.DATA_LIST, map);
         putMsg(result, Status.SUCCESS);

Reply via email to