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);