diff --git a/cve-vulner-manager/controllers/cve.go b/cve-vulner-manager/controllers/cve.go index ac39ff1e8f8256e8397d1edb25bff2909d103265..c672824810cb2bce1a3057269241b833554730cd 100644 --- a/cve-vulner-manager/controllers/cve.go +++ b/cve-vulner-manager/controllers/cve.go @@ -390,12 +390,10 @@ type UpdateAffectedBranchController struct { func (u *UpdateAffectedBranchController) Post() { branch := u.Ctx.Request.Form.Get("branch") - date := u.Ctx.Request.Form.Get("date") cveNum := u.Ctx.Request.Form.Get("cve_num") token := u.Ctx.Request.Header.Get("token") resp := make(map[string]interface{}) - if token == "" || !models.CheckToken(token) { resp["errno"] = errcode.RecodeSessionErr resp["errmsg"] = errcode.RecodeText(errcode.RecodeSessionErr) @@ -408,56 +406,61 @@ func (u *UpdateAffectedBranchController) Post() { u.paramError(resp) } - _, err := time.Parse("2006-01-02", date) - if err != nil { - u.paramError(resp) - } - - issues, err := models.QueryIssueToUpdateAffected(date, cveNum) + issues, err := models.QueryIssueToUpdateAffected(cveNum) if err != nil { resp["errno"] = errcode.RecodeDbErr resp["errmsg"] = errcode.RecodeText(errcode.RecodeDbErr) u.response(resp) } - o := orm.NewOrm() - for _, issue := range issues { - if strings.Contains(issue.AffectedVersion, branch) { - continue - } + go func() { + defer func() { + if e := recover(); e != nil { + updateAffectedLog(fmt.Sprintf("panic %s", e), nil) + } + }() - appendStr := fmt.Sprintf(",%s:", branch) - issue.AffectedVersion += appendStr - issue.AbiVersion += appendStr + o := orm.NewOrm() + for _, issue := range issues { + if strings.Contains(issue.AffectedVersion, branch) { + continue + } - var vuln models.VulnCenter - err = models.GetVulnCenterByCVEID(&vuln, issue.CveId) - if err != nil { - updateAffectedLog("get vuln", err) - continue - } + appendStr := fmt.Sprintf(",%s:", branch) + issue.AffectedVersion += appendStr + issue.AbiVersion += appendStr - _, err = taskhandler.UpdateIssueToGit("", "", vuln.PackName, vuln, issue) - if err != nil { - updateAffectedLog("update gitee", err) - continue - } + var vuln models.VulnCenter + err = models.GetVulnCenterByCVEID(&vuln, issue.CveId) + if err != nil { + updateAffectedLog("get vuln", err) + continue + } - err = models.UpdateIssueTemplate(&issue, "AffectedVersion", "AbiVersion") - if err != nil { - updateAffectedLog("update issue template", err) - continue - } + _, err = taskhandler.UpdateIssueToGit("", "", vuln.PackName, vuln, issue) + if err != nil { + updateAffectedLog("update gitee", err) + continue + } - o.Insert(&models.UpdatedAffectedBranch{ - IssueNum: issue.IssueNum, - CveNum: issue.CveNum, - Package: vuln.PackName, - Branch: branch, - CreateTime: time.Now().Format(common.DATE_FORMAT), - UpdateTime: time.Now().Format(common.DATE_FORMAT), - }) - } + err = models.UpdateIssueTemplate(&issue, "AffectedVersion", "AbiVersion") + if err != nil { + updateAffectedLog("update issue template", err) + continue + } + + o.Insert(&models.UpdatedAffectedBranch{ + IssueNum: issue.IssueNum, + CveNum: issue.CveNum, + Package: vuln.PackName, + Branch: branch, + CreateTime: time.Now().Format(common.DATE_FORMAT), + UpdateTime: time.Now().Format(common.DATE_FORMAT), + }) + + time.Sleep(time.Second * 1) + } + }() resp["errno"] = errcode.RecodeOk resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) diff --git a/cve-vulner-manager/models/cve.go b/cve-vulner-manager/models/cve.go index eea28a46784ce4065b1b5fdb60db0de7ff3daf05..22c2214a141a47e00393fdef9f6fbf673eb2962e 100644 --- a/cve-vulner-manager/models/cve.go +++ b/cve-vulner-manager/models/cve.go @@ -1428,13 +1428,13 @@ func QueryCveIssueForSbom(pkgname, version string) (data []sbomIssue, err error) return } -func QueryIssueToUpdateAffected(date, cveNum string) (data []IssueTemplate, err error) { +func QueryIssueToUpdateAffected(cveNum string) (data []IssueTemplate, err error) { o := orm.NewOrm() var sql string if cveNum != "" { - sql = fmt.Sprintf(`select * from cve_issue_template where owner = "%s" and status < 3 and cve_num = "%s"`, "src-openeuler", cveNum) + sql = fmt.Sprintf(`select * from cve_issue_template where owner = "%s" and status in (1,2,5) and cve_num = "%s"`, "src-openeuler", cveNum) } else { - sql = fmt.Sprintf(`select * from cve_issue_template where owner = "%s" and status < 3 and create_time > "%s"`, "src-openeuler", date) + sql = fmt.Sprintf(`select * from cve_issue_template where owner = "%s" and status in (1,2,5) and`, "src-openeuler") } _, err = o.Raw(sql).QueryRows(&data)