diff --git a/cve-vulner-manager/controllers/cve.go b/cve-vulner-manager/controllers/cve.go index 6da093b5db24d6d6596a893168065be5786f83fc..661cad8a8bd5f3f79c8b25b5d80551abf9496856 100644 --- a/cve-vulner-manager/controllers/cve.go +++ b/cve-vulner-manager/controllers/cve.go @@ -4,6 +4,7 @@ import ( "cvevulner/errcode" "cvevulner/models" "cvevulner/taskhandler" + "github.com/astaxie/beego" "github.com/astaxie/beego/logs" ) @@ -169,7 +170,7 @@ func (u *CveAllIssueController) Get() { irda.CveLevel = issues.CveLevel irda.CveVtopicPublicTime = issues.FirstPerTime irda.CveVtopicRecTime = issues.FirstGetTime - irda.PlanClosedTime = taskhandler.CvePlanCloseTime(issues.CreateTime, issues.CveLevel, false) + irda.PlanClosedTime = taskhandler.CvePlanCloseTime(issues.CreateTime, issues.CveLevel,false, false) if len(issues.CpublicTime) > 10 { irda.CvePublicTime = issues.CpublicTime[:10] } else { @@ -281,7 +282,7 @@ func (u *KanbanCveAllIssueController) Get() { } irda.CveVtopicPublicTime = issues.FirstPerTime irda.CveVtopicRecTime = issues.FirstGetTime - irda.PlanClosedTime = taskhandler.CvePlanCloseTime(issues.CreateTime, issues.CveLevel, false) + irda.PlanClosedTime = taskhandler.CvePlanCloseTime(issues.CreateTime, issues.CveLevel,false, false) if len(issues.CpublicTime) > 10 { irda.CvePublicTime = issues.CpublicTime[:10] } else { diff --git a/cve-vulner-manager/controllers/hook.go b/cve-vulner-manager/controllers/hook.go index 3118ef863c2e1d5fc481cbab304106cf5ca8cb5b..d08e25154039faf14e933ee5b9b5135ecee3de03 100644 --- a/cve-vulner-manager/controllers/hook.go +++ b/cve-vulner-manager/controllers/hook.go @@ -1789,7 +1789,7 @@ func PostTriggerGetCve(issueTmp models.IssueTemplate, owner, accessToken, cuAcco return } models.UpdateIssueStatus(vc, 1) - issueErr := task.SyncCreateIssue(nil) + issueErr := task.SyncCreateIssue([]string{issueTmp.CveNum}) if issueErr != nil { logs.Error("SyncCveAndIssue, SyncCreateIssue, err: ", issueErr) } diff --git a/cve-vulner-manager/cve-timed-task/db_models/db_operations.go b/cve-vulner-manager/cve-timed-task/db_models/db_operations.go index 739360c85a19104c3fce96078a1f6ac363e2a685..ba64e87ba841b300448df59b423f26f29a7a4086 100644 --- a/cve-vulner-manager/cve-timed-task/db_models/db_operations.go +++ b/cve-vulner-manager/cve-timed-task/db_models/db_operations.go @@ -245,10 +245,8 @@ func UpdateCveScore(score models.Score, ORM orm.Ormer) error { func GetIssueTemplateTypeOne(issueTemplate models.IssueTemplate, ORM orm.Ormer) (models.IssueTemplate, error) { var issueTemplateResp models.IssueTemplate - sqlString := "select template_id,nvd_score,nvd_vector,cve_brief from cve_issue_template where " + - "(nvd_score = ? or nvd_vector = ? or cve_brief = ?) and cve_id = ? and cve_num = ?" - err := ORM.Raw(sqlString, issueTemplate.NVDScore, issueTemplate.NVDVector, issueTemplate.CveBrief, - issueTemplate.CveId, issueTemplate.CveNum).QueryRow(&issueTemplateResp) + sqlString := "select template_id,nvd_score,nvd_vector,cve_brief from cve_issue_template where cve_id = ? and cve_num = ?" + err := ORM.Raw(sqlString, issueTemplate.CveId, issueTemplate.CveNum).QueryRow(&issueTemplateResp) return issueTemplateResp, err } diff --git a/cve-vulner-manager/cve-timed-task/tabletask/supplement_cve.go b/cve-vulner-manager/cve-timed-task/tabletask/supplement_cve.go index c92f62dcec299ededf23b9472b7632598d5bb026..ae920160b2cf66edfa4bbc0d468c06f4c5d44408 100644 --- a/cve-vulner-manager/cve-timed-task/tabletask/supplement_cve.go +++ b/cve-vulner-manager/cve-timed-task/tabletask/supplement_cve.go @@ -9,6 +9,7 @@ import ( "cvevulner/cve-timed-task/db_models" "cvevulner/cve-timed-task/util" "cvevulner/models" + "github.com/astaxie/beego/logs" "github.com/astaxie/beego/orm" "github.com/pkg/errors" @@ -152,7 +153,7 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error } } - if listx.CveDesc != "" && len(listx.CveDesc) > 2 && cveDesc == "" { + if listx.CveDesc != "" && len(listx.CveDesc) > 2 && cveDesc != listx.CveDesc { err = db_models.UpdateVulnCenterTypeTwo(models.VulnCenter{ Description: listx.CveDesc, UpdateTime: updateTime, @@ -182,7 +183,7 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error return err } } else { - if score.NVDScore == 0 { + if score.NVDScore != nvdScore { err := db_models.UpdateCveScore(models.Score{ NVDScore: nvdScore, NvectorVule: listx.VectorValue, @@ -210,9 +211,6 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error } templateResult, err := db_models.GetIssueTemplateTypeOne(models.IssueTemplate{ - NVDScore: 0, - NVDVector: "", - CveBrief: "", CveId: cveId, CveNum: cveNum, }, ormModel) @@ -222,7 +220,7 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error } flag := false - if templateResult.NVDScore == 0 && listx.NvdScore != "" && nvdScore > 0 { + if listx.NvdScore != "" && nvdScore > 0 && templateResult.NVDScore != nvdScore { err = db_models.UpdateCveIssueTemplateTypeOne(models.IssueTemplate{ NVDScore: nvdScore, UpdateTime: updateTime, @@ -235,8 +233,8 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error flag = true } - if (templateResult.NVDVector == "" || len(templateResult.NVDVector) < 2) && - (listx.VectorValue != "" && len(listx.VectorValue) > 2) { + if (listx.VectorValue != "" && len(listx.VectorValue) > 2) && + (templateResult.NVDVector != listx.VectorValue) { err = db_models.UpdateCveIssueTemplateTypeTwo(models.IssueTemplate{ NVDVector: listx.VectorValue, UpdateTime: updateTime, @@ -249,8 +247,8 @@ func UpdateCveVuln(url string, cve models.VulnCenter, ormModel orm.Ormer) error flag = true } - if (templateResult.CveBrief == "" || len(templateResult.CveBrief) < 2) && - (listx.CveDesc != "" && len(listx.CveDesc) > 2) { + if (listx.CveDesc != "" && len(listx.CveDesc) > 2) && + (templateResult.CveBrief != listx.CveDesc) { err = db_models.UpdateCveIssueTemplateTypeThree(models.IssueTemplate{ CveBrief: listx.CveDesc, UpdateTime: updateTime, diff --git a/cve-vulner-manager/task/issue.go b/cve-vulner-manager/task/issue.go index c9431d322f18a588a860d679c4d9db502621ecf9..71e7ddb8258a60fad61bda0878551c38c9d52777 100644 --- a/cve-vulner-manager/task/issue.go +++ b/cve-vulner-manager/task/issue.go @@ -263,9 +263,19 @@ func SetIssueProcParams() error { } if its.NVDScore > 0 { cveLevel := models.OpenEulerScoreProc(its.NVDScore) - deadLine := taskhandler.CvePlanCloseTime(its.CreateTime, cveLevel, true) + deadLine := taskhandler.CvePlanCloseTime(its.CreateTime, cveLevel, false,true) planAt := common.GetSpecifiedTime(its.CreateTime, 0, false, true) priority := taskhandler.GetIssuePriority(cveLevel) + owner, accessToken := common.GetOwnerAndToken(vl.OrganizationID) + issueErr, issueBody := taskhandler.GetGiteeIssue(accessToken, owner, its.Repo, its.IssueNum) + if issueErr == nil && issueBody != nil { + if s, ok := issueBody["created_at"].(string); ok { + if t, err := time.Parse("2006-01-02T15:04:05+08:00", s); err == nil { + planAt = common.GetSpecifiedTime(t, 0, true, true) + deadLine = taskhandler.CvePlanCloseTime(t, cveLevel, true,true) + } + } + } taskhandler.UpdateEntIssueDetail(authToken.EnId, its.IssueId, authToken.AccessToken, planAt, deadLine, priority) } diff --git a/cve-vulner-manager/taskhandler/createissue.go b/cve-vulner-manager/taskhandler/createissue.go index 2653e7f2ea7b654e4db9082bc93964f14538aed3..72a8381871f5cc397e52273e044d61be9354d847 100644 --- a/cve-vulner-manager/taskhandler/createissue.go +++ b/cve-vulner-manager/taskhandler/createissue.go @@ -332,7 +332,7 @@ func CreateIssueToGit(accessToken, owner, path, assignee string, if models.FilterOldData(cve.CveNum) { return "",nil } - if cve.OrganizationID == 1 && models.QueryCveOrigin(cve.CveNum, "update"){ + if models.QueryCveOrigin(cve.CveNum, "update"){ logs.Info("update cve is not create issue , cveNum :", cve.CveNum) return "", nil } diff --git a/cve-vulner-manager/taskhandler/cve.go b/cve-vulner-manager/taskhandler/cve.go index cfd1dd70a9c2ee70f69deb4d7e91a4422f6beb92..3ab37b9ffd053ff8a51c32c046d88a4b55f33ea0 100644 --- a/cve-vulner-manager/taskhandler/cve.go +++ b/cve-vulner-manager/taskhandler/cve.go @@ -2634,17 +2634,17 @@ func GiteeDownCsv(localPath, branch string) (error) { return nil } -func CvePlanCloseTime(startTime time.Time, cveLevel string, isTparam bool) string { +func CvePlanCloseTime(startTime time.Time, cveLevel string, isLocalFlag, isTparam bool) string { endLocal := "" switch cveLevel { case "Critical": - endLocal = common.GetSpecifiedTime(startTime, 7, false, isTparam) + endLocal = common.GetSpecifiedTime(startTime, 7, isLocalFlag, isTparam) case "High": - endLocal = common.GetSpecifiedTime(startTime, 14, false, isTparam) + endLocal = common.GetSpecifiedTime(startTime, 14, isLocalFlag, isTparam) case "Medium", "Low": - endLocal = common.GetSpecifiedTime(startTime, 30, false, isTparam) + endLocal = common.GetSpecifiedTime(startTime, 30, isLocalFlag, isTparam) default: - endLocal = common.GetSpecifiedTime(startTime, 60, false, isTparam) + endLocal = common.GetSpecifiedTime(startTime, 60, isLocalFlag, isTparam) } return endLocal }