Skip to content

Commit 289ced2

Browse files
LordofAvernusffffwh
authored and
ffffwh
committed
fix #756 reverse job does not support encryption mode
1 parent 76b8b56 commit 289ced2

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

drivers/api/handler/v2/job.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -1549,20 +1549,29 @@ func ReverseJob(c echo.Context) error {
15491549
reverseJobParam.SrcTask.MysqlConnectionConfig.MysqlPassword = reqParam.ReverseConfig.SrcPwd
15501550
reverseJobParam.DestTask.MysqlConnectionConfig.MysqlUser = reqParam.ReverseConfig.DestUser
15511551
reverseJobParam.DestTask.MysqlConnectionConfig.MysqlPassword = reqParam.ReverseConfig.DstPwd
1552-
reverseJobParam.IsMysqlPasswordEncrypted = reqParam.ReverseConfig.IsMysqlPasswordEncrypted
15531552
}
15541553
reverseJobParam.Retry = originalJob.BasicTaskProfile.Configuration.RetryTimes
15551554

1555+
// IsMysqlPasswordEncrypted is set to default false then decrypt pwd
1556+
if reqParam.ReverseConfig.IsMysqlPasswordEncrypted {
1557+
err := decryptPwd(reverseJobParam.SrcTask, reverseJobParam.DestTask)
1558+
if nil != err {
1559+
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err))
1560+
}
1561+
reverseJobParam.IsMysqlPasswordEncrypted = false
1562+
}
15561563
// validate job
15571564
validationTasks, err := validateTaskConfig(reverseJobParam.SrcTask, reverseJobParam.DestTask)
15581565
if nil != err {
15591566
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("validate task config failed: %v", err)))
15601567
}
15611568
for i := range validationTasks {
1562-
if validationTasks[i].PrivilegesValidation.Error != "" ||
1563-
validationTasks[i].ConnectionValidation.Error != "" {
1569+
if validationTasks[i].ConnectionValidation.Error != "" {
15641570
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("validate task config fail,check Mysql connection info")))
15651571
}
1572+
if validationTasks[i].PrivilegesValidation.Error != "" {
1573+
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("validate task config fail,check Mysql privileges info")))
1574+
}
15661575
}
15671576

15681577
user, err := getCurrentUser(c)

drivers/api/handler/v2/validation.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,9 @@ func ValidateJobV2(c echo.Context) error {
5050
logger.Info("validate task config")
5151
// decrypt mysql password
5252
if jobConfig.IsMysqlPasswordEncrypted {
53-
jobConfig.SrcTaskConfig.MysqlConnectionConfig.MysqlPassword, err = handler.DecryptMysqlPassword(jobConfig.SrcTaskConfig.MysqlConnectionConfig.MysqlPassword, g.RsaPrivateKey)
53+
err := decryptPwd(jobConfig.SrcTaskConfig, jobConfig.DestTaskConfig)
5454
if nil != err {
55-
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("decrypt src mysql password failed: %v", err)))
56-
}
57-
jobConfig.DestTaskConfig.MysqlConnectionConfig.MysqlPassword, err = handler.DecryptMysqlPassword(jobConfig.DestTaskConfig.MysqlConnectionConfig.MysqlPassword, g.RsaPrivateKey)
58-
if nil != err {
59-
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(fmt.Errorf("decrypt src mysql password failed: %v", err)))
55+
return c.JSON(http.StatusInternalServerError, models.BuildBaseResp(err))
6056
}
6157
}
6258

@@ -91,6 +87,19 @@ func apiJobConfigToNomadJobJson(apiJobConfig *models.ValidateJobReqV2) (resJson
9187
return resJson, nil
9288
}
9389

90+
func decryptPwd(apiSrcTask *models.MysqlSrcTaskConfig, apiDestTask *models.MysqlDestTaskConfig) (err error) {
91+
// decrypt mysql password
92+
apiSrcTask.MysqlConnectionConfig.MysqlPassword, err = handler.DecryptMysqlPassword(apiSrcTask.MysqlConnectionConfig.MysqlPassword, g.RsaPrivateKey)
93+
if nil != err {
94+
return fmt.Errorf("decrypt src mysql password failed: %v", err)
95+
}
96+
apiDestTask.MysqlConnectionConfig.MysqlPassword, err = handler.DecryptMysqlPassword(apiDestTask.MysqlConnectionConfig.MysqlPassword, g.RsaPrivateKey)
97+
if nil != err {
98+
return fmt.Errorf("decrypt src mysql password failed: %v", err)
99+
}
100+
return
101+
}
102+
94103
func validateTaskConfig(apiSrcTask *models.MysqlSrcTaskConfig, apiDestTask *models.MysqlDestTaskConfig) ([]*models.MysqlTaskValidationReport, error) {
95104
taskValidationRes := []*models.MysqlTaskValidationReport{}
96105
// validate src task

0 commit comments

Comments
 (0)