3737import org .apache .seatunnel .app .service .ITableSchemaService ;
3838import org .apache .seatunnel .app .thirdparty .datasource .DataSourceClientFactory ;
3939import org .apache .seatunnel .app .thirdparty .framework .SeaTunnelOptionRuleWrapper ;
40+ import org .apache .seatunnel .app .utils .ConfigShadeUtil ;
4041import org .apache .seatunnel .common .utils .JsonUtils ;
4142import org .apache .seatunnel .datasource .plugin .api .DataSourcePluginInfo ;
4243import org .apache .seatunnel .datasource .plugin .api .DatasourcePluginTypeEnum ;
5354import org .springframework .beans .BeansException ;
5455import org .springframework .beans .factory .annotation .Autowired ;
5556import org .springframework .beans .factory .annotation .Qualifier ;
57+ import org .springframework .beans .factory .annotation .Value ;
5658import org .springframework .context .ApplicationContext ;
5759import org .springframework .context .ApplicationContextAware ;
5860import org .springframework .stereotype .Service ;
@@ -93,6 +95,9 @@ public class DatasourceServiceImpl extends SeatunnelBaseServiceImpl
9395
9496 protected static final String DEFAULT_DATASOURCE_PLUGIN_VERSION = "1.0.0" ;
9597
98+ @ Value ("${datasource.encryption.type:default}" )
99+ private String datasourceEncryptionType ;
100+
96101 @ Override
97102 public String createDatasource (
98103 Integer userId ,
@@ -113,6 +118,7 @@ public String createDatasource(
113118 throw new SeatunnelException (
114119 SeatunnelErrorEnum .DATASOURCE_PRAM_NOT_ALLOWED_NULL , "datasourceConfig" );
115120 }
121+ ConfigShadeUtil .encryptData (datasourceConfig , datasourceEncryptionType );
116122 String datasourceConfigStr = JsonUtils .toJsonString (datasourceConfig );
117123 Datasource datasource =
118124 Datasource .builder ()
@@ -171,6 +177,7 @@ public boolean updateDatasource(
171177 datasource .setUpdateTime (new Date ());
172178 datasource .setDescription (description );
173179 if (MapUtils .isNotEmpty (datasourceConfig )) {
180+ ConfigShadeUtil .encryptData (datasourceConfig , datasourceEncryptionType );
174181 String configJson = JsonUtils .toJsonString (datasourceConfig );
175182 datasource .setDatasourceConfig (configJson );
176183 }
@@ -208,6 +215,7 @@ public boolean testDatasourceConnectionAble(
208215 String pluginVersion ,
209216 Map <String , String > datasourceConfig ) {
210217 funcPermissionCheck (SeatunnelFuncPermissionKeyConstant .DATASOURCE_TEST_CONNECT , userId );
218+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
211219 return DataSourceClientFactory .getDataSourceClient ()
212220 .checkDataSourceConnectivity (pluginName , datasourceConfig );
213221 }
@@ -227,6 +235,7 @@ public boolean testDatasourceConnectionAble(Integer userId, Long datasourceId) {
227235 String configJson = datasource .getDatasourceConfig ();
228236 Map <String , String > datasourceConfig =
229237 JsonUtils .toMap (configJson , String .class , String .class );
238+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
230239 String pluginName = datasource .getPluginName ();
231240 return DataSourceClientFactory .getDataSourceClient ()
232241 .checkDataSourceConnectivity (pluginName , datasourceConfig );
@@ -276,6 +285,7 @@ public List<String> queryDatabaseByDatasourceName(String datasourceName) {
276285 Map <String , String > datasourceConfig =
277286 JsonUtils .toMap (config , String .class , String .class );
278287
288+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
279289 return DataSourceClientFactory .getDataSourceClient ()
280290 .getDatabases (pluginName , datasourceConfig );
281291 }
@@ -435,6 +445,7 @@ public PageInfo<DatasourceRes> queryDatasourceList(
435445 datasource .getDatasourceConfig (),
436446 String .class ,
437447 String .class );
448+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
438449 datasourceRes .setDatasourceConfig (datasourceConfig );
439450 datasourceRes .setCreateUserId (datasource .getCreateUserId ());
440451 datasourceRes .setUpdateUserId (datasource .getUpdateUserId ());
@@ -504,7 +515,10 @@ public Map<String, String> queryDatasourceConfigById(String datasourceId) {
504515 throw new SeatunnelException (SeatunnelErrorEnum .DATASOURCE_NOT_FOUND , datasourceId );
505516 }
506517 String configJson = datasource .getDatasourceConfig ();
507- return JsonUtils .toMap (configJson , String .class , String .class );
518+ Map <String , String > datasourceConfig =
519+ JsonUtils .toMap (configJson , String .class , String .class );
520+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
521+ return datasourceConfig ;
508522 }
509523
510524 @ Override
@@ -604,6 +618,7 @@ private static DatasourceDetailRes getDatasourceDetailRes(Datasource datasource)
604618
605619 Map <String , String > datasourceConfig =
606620 JsonUtils .toMap (datasource .getDatasourceConfig (), String .class , String .class );
621+ ConfigShadeUtil .decryptData (datasourceConfig , datasourceEncryptionType );
607622 // convert option rule
608623 datasourceDetailRes .setDatasourceConfig (datasourceConfig );
609624 return datasourceDetailRes ;
0 commit comments