diff --git a/cve-vulner-manager/conf/app.conf b/cve-vulner-manager/conf/app.conf index 770de909c456f8a8eca1217bd5c2eead44fdaa85..00799b93c5931854d427caf8b3d09f45fe282bd6 100644 --- a/cve-vulner-manager/conf/app.conf +++ b/cve-vulner-manager/conf/app.conf @@ -23,6 +23,7 @@ autoPrCmd = "/find-patch" labelFixed = "CVE/FIXED" labelUnFix = "CVE/UNFIXED" labeUnaffected = "CVE/UNAFFECTED" +totallabel = "CVE/FIXED,CVE/UNFIXED,CVE/UNAFFECTED" labeAbiChanged = "abi-changed" fileDir = "download" saFileDir = "download/sa" diff --git a/cve-vulner-manager/conf/product_app.conf b/cve-vulner-manager/conf/product_app.conf index 602311eef536997f41717effe4ba63e1adae9b10..cc0ab6234fbbda92f8ec5b9a86385f700b17581e 100644 --- a/cve-vulner-manager/conf/product_app.conf +++ b/cve-vulner-manager/conf/product_app.conf @@ -23,6 +23,7 @@ autoPrCmd = "/find-patch" labelFixed = "CVE/FIXED" labelUnFix = "CVE/UNFIXED" labeUnaffected = "CVE/UNAFFECTED" +totallabel = "CVE/FIXED,CVE/UNFIXED,CVE/UNAFFECTED" labeAbiChanged = "abi-changed" fileDir = "download" saFileDir = "download/sa" diff --git a/cve-vulner-manager/controllers/hook.go b/cve-vulner-manager/controllers/hook.go index 29b48293fd9ef224aa73a3dbc88c8ef1dcd0b588..4bd5ba171fe7ca858d27ab473604a54adcd4b081 100644 --- a/cve-vulner-manager/controllers/hook.go +++ b/cve-vulner-manager/controllers/hook.go @@ -1152,11 +1152,11 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen } } labelSlice := make([]string, 0) - if len(issueTmp.IssueNum) > 1 { - labelSlice, _ = taskhandler.QueryIssueLabels(token, path, issueTmp.IssueNum, owner) + labelSlice = taskhandler.AddLabelValue(token, path, issueTmp.IssueNum, owner, issueTmp.IssueLabel) + //labelSlice = append(labelSlice, issueTmp.IssueLabel) + if len(labelSlice) > 0 { + issueTmp.IssueLabel = strings.Join(labelSlice, ",") } - labelSlice = append(labelSlice, issueTmp.IssueLabel) - issueTmp.IssueLabel = strings.Join(labelSlice, ",") if issueTmp.Status == 3 && cveCenter.OrganizationID == 1 && AbiAffectedVersionBool(issueTmp.AbiVersion) && !strings.Contains(issueTmp.IssueLabel, labeAbiChanged) { issueTmp.IssueLabel = issueTmp.IssueLabel + "," + labeAbiChanged diff --git a/cve-vulner-manager/taskhandler/common.go b/cve-vulner-manager/taskhandler/common.go index b63f3313d6b6b3e40ab51b3846e71e099d9a1f6e..ab7005293f728ec6cbd84a8779d838a4e3972dd4 100644 --- a/cve-vulner-manager/taskhandler/common.go +++ b/cve-vulner-manager/taskhandler/common.go @@ -673,6 +673,33 @@ func updateTemplateAbi(brandArray []string, its models.IssueTemplate) { } } +func AddLabelValue(accessToken, path, issueNum, owner, issueLabel string) []string { + labelSlice := make([]string, 0) + if len(issueNum) > 1 { + labelSlice, _ = QueryIssueLabels(accessToken, path, issueNum, owner) + } + if len(issueLabel) > 1 { + issueLabel := strings.Split(issueLabel, ",") + for _, lab := range issueLabel { + if len(labelSlice) > 0 { + labFlag := false + for _, labs := range labelSlice { + if labs == lab { + labFlag = true + break + } + } + if !labFlag { + labelSlice = append(labelSlice, lab) + } + } else { + labelSlice = append(labelSlice, lab) + } + } + } + return labelSlice +} + func CreateIssueBody(accessToken, owner, path, assignee string, cve models.VulnCenter, sc models.Score, openEulerScore, score, labels string, its models.IssueTemplate, flag int, issueType, pkgLink string, brandArray []string) string { @@ -756,11 +783,14 @@ func CreateIssueBody(accessToken, owner, path, assignee string, } } labelSlice := make([]string, 0) - if len(its.IssueNum) > 1 { - labelSlice, _ = QueryIssueLabels(accessToken, path, its.IssueNum, owner) - } - labelSlice = append(labelSlice, labels) + labelSlice = AddLabelValue(accessToken, path, its.IssueNum, owner, labels) + //labelSlice = append(labelSlice, labels) labels = strings.Join(labelSlice, ",") + its.IssueLabel = labels + tpErr := models.UpdateIssueTemplate(&its, "IssueLabel") + if tpErr != nil { + logs.Error(tpErr) + } bodyUpTplx := bodyUpTpl bodyTplx := bodyTpl if cve.OrganizationID == 2 { @@ -1069,6 +1099,8 @@ func GetOrganizationId(nameSpace string) (organizationID int8) { func QueryIssueLabels(token, repo, issueNum, owner string) ([]string, []string) { allLabelSlice := make([]string, 0) labelSlice := make([]string, 0) + totalLabel := beego.AppConfig.String("totallabel") + totalLabelList := strings.Split(totalLabel, ",") url := fmt.Sprintf("https://gitee.com/api/v5/repos/%v/%v/issues/%v/labels?access_token=%v", owner, repo, issueNum, token) labelData, err := util.HTTPGet(url) if err == nil && labelData != nil { @@ -1079,7 +1111,14 @@ func QueryIssueLabels(token, repo, issueNum, owner string) ([]string, []string) } labelStr := value["name"].(string) allLabelSlice = append(allLabelSlice, labelStr) - if !strings.HasPrefix(labelStr, "CVE/") { + labFlag := false + for _, lab := range totalLabelList { + if labelStr == lab { + labFlag = true + break + } + } + if !labFlag { labelSlice = append(labelSlice, labelStr) } }