diff --git a/cve-vulner-manager/conf/product_app.conf b/cve-vulner-manager/conf/product_app.conf index 801e5ae92f272e54bc219814cf7a8519d15a3061..5eb136c85b2967290866ca0cb332ef212f2793a2 100644 --- a/cve-vulner-manager/conf/product_app.conf +++ b/cve-vulner-manager/conf/product_app.conf @@ -112,7 +112,7 @@ cvecredit = 0 0 5 * * * urgenttaskflag = 1 urgenttask = 0 0 9-20 * * * seclinkflag = 1 -seclinktask = 0 0 9,12,18 * * * +seclinktask = 0 0 12 * * * checkissuedelflag = 1 checkissuedel = 0 30 3 * * 1,3,5 # Statistics of issues created in different communities diff --git a/cve-vulner-manager/controllers/hook.go b/cve-vulner-manager/controllers/hook.go index 183908952b88edc900c09c7d53dea9344f0d5110..a79d7af5759e72efe42c543b0867de28a197b6c4 100644 --- a/cve-vulner-manager/controllers/hook.go +++ b/cve-vulner-manager/controllers/hook.go @@ -195,16 +195,6 @@ func (c *HookEventControllers) handleIssue() { nameSpace := util.TrimString(issueHook.Repository.NameSpace) organizationID := int8(1) organizationID = taskhandler.GetOrganizationId(nameSpace) - botCuAccountStr := beego.AppConfig.String("cve::bot_cu_account") - botCuAccountList := strings.Split(botCuAccountStr, ",") - if len(botCuAccountList) > 0 { - for _, botCu := range botCuAccountList { - if cuAccount == botCu { - logs.Error(cuAccount, ", Ignore this comment") - return - } - } - } hookPwd := beego.AppConfig.String("hook::hookpwd") issueHook.Password = util.TrimString(issueHook.Password) if issueHook.Password != hookPwd { @@ -1163,11 +1153,23 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen AbiAffectedVersionBool(issueTmp.AbiVersion) && !strings.Contains(issueTmp.IssueLabel, labeAbiChanged) { issueTmp.IssueLabel = issueTmp.IssueLabel + "," + labeAbiChanged } - update = taskhandler.UpdateIssueLabels(token, path, issueTmp.IssueNum, owner, issueTmp.IssueLabel) - if !update { - logs.Error("update gitee issue label fail ,", issueTmp.IssueNum, issueTmp.IssueLabel) - appearErr++ + + updateLabels := true + templateInDB := models.IssueTemplate{TemplateId: issueTmp.TemplateId} + if err := models.GetIssueTemplateByColName(&templateInDB, "template_id"); err == nil { + if templateInDB.IssueLabel == issueTmp.IssueLabel { + updateLabels = false + } + } + + if updateLabels { + update = taskhandler.UpdateIssueLabels(token, path, issueTmp.IssueNum, owner, issueTmp.IssueLabel) + if !update { + logs.Error("update gitee issue label fail ,", issueTmp.IssueNum, issueTmp.IssueLabel) + appearErr++ + } } + issueTmp.CveLevel = models.OpenEulerScoreProc(issueTmp.OpenEulerScore) tpErr := models.UpdateIssueTemplate(&issueTmp, "status", "issue_status", "status_name", "issue_label", "mt_audit_flag", "sa_audit_flag", "cve_level") @@ -1465,15 +1467,7 @@ func handleIssueComment(payload models.CommentPayload) { models.UpdateIssueTemplate(&issueTmp, "Repo") path = repoPath } - if payload.Issue.StateName == "已挂起" { - logs.Error("The current issue has been suspended and will not be processed, payload: ", payload) - issueTmp.Status = 5 - issueTmp.StatusName = "suspended" - models.UpdateIssueTemplate(&issueTmp, "Status", "StatusName") - taskhandler.AddCommentToIssue(fmt.Sprintf(CommentRejectedState, cuAccount, payload.Issue.StateName), - issueTmp.IssueNum, owner, path, accessToken) - return - } + if payload.Issue.StateName == "已拒绝" { logs.Error("The current issue has been rejected and will not be processed, payload: ", payload) issueTmp.Status = 4 @@ -1871,12 +1865,6 @@ func analysisComment(owner, accessToken, path string, cuAccount string, cBody st if err = SetIssueStateByReason(&issueTmp, payload.Issue.StateName); err != nil { logs.Error(webhookCommentLogTag, "SetIssueStateByReason, err: ", err, ",issueTmp: ", issueTmp.IssueNum) } - - if issueTmp.IsIssueComplete() { - issueTmp.ResetLabel() - } - - updateTempAndCenter(issueTmp, v, accessToken, owner) } } else { na := "\n**请确认分析内容的准确性, 确认无误后, 您可以进行后续步骤, 否则您可以继续分析.**" @@ -2431,13 +2419,6 @@ func SetIssueStateByReason(issue *models.IssueTemplate, remoteStateName string) return err } - // issue本身的状态和计算后的状态一致,则不做任何操作 - stateNameMap := common.GetStateNameMap() - stateName, ok := stateNameMap[state] - if !ok || stateName == remoteStateName { - return nil - } - issue.StatusName = state switch state { case common.StateOpen: @@ -2452,6 +2433,13 @@ func SetIssueStateByReason(issue *models.IssueTemplate, remoteStateName string) models.UpdateIssueTemplate(issue, "Status", "StatusName") + // issue本身的状态和计算后的状态一致,则不做任何操作 + stateNameMap := common.GetStateNameMap() + stateName, ok := stateNameMap[state] + if !ok || stateName == remoteStateName { + return nil + } + stateIdMap := common.GetStateIdMap() stateId, ok := stateIdMap[state] if !ok { diff --git a/cve-vulner-manager/cve-ddd/infrastructure/hotpatchimpl/impl.go b/cve-vulner-manager/cve-ddd/infrastructure/hotpatchimpl/impl.go index 64f29b7bff8456c442af7f127b6461d38ebe3383..28a16a9027e63d39bedb2f67504dfaa5b8f7358d 100644 --- a/cve-vulner-manager/cve-ddd/infrastructure/hotpatchimpl/impl.go +++ b/cve-vulner-manager/cve-ddd/infrastructure/hotpatchimpl/impl.go @@ -55,7 +55,7 @@ func (impl hotPatchImpl) GetIssueInfo() ([]domain.HotPatchIssue, error) { for _, v := range issues { pat, err1 := impl.toPatchIssue(v.Body) if err1 != nil { - impl.log.Errorf("issue number %s toPatchIssue error: %v", v.Number, err) + impl.log.Errorf("issue number %s toPatchIssue error: %v", v.Number, err1) continue } pat.HotIssueNum = v.Number diff --git a/cve-vulner-manager/cve-ddd/infrastructure/updateinfoimpl/repodata.go b/cve-vulner-manager/cve-ddd/infrastructure/updateinfoimpl/repodata.go index c978b7bc1d1b0e73e7b8f631e24cd3f7fe1c1148..0fadcc5e89106a49e2986d55b8b7c1295345d7aa 100644 --- a/cve-vulner-manager/cve-ddd/infrastructure/updateinfoimpl/repodata.go +++ b/cve-vulner-manager/cve-ddd/infrastructure/updateinfoimpl/repodata.go @@ -1,21 +1,19 @@ package updateinfoimpl import ( - "bytes" - "compress/gzip" "encoding/xml" "errors" "fmt" - "io" "net/http" "regexp" "strings" "github.com/astaxie/beego" + "github.com/klauspost/compress/zstd" "github.com/opensourceways/server-common-lib/utils" ) -var primaryRegexp = regexp.MustCompile(`title="(\w+-primary.xml.gz)"`) +var primaryRegexp = regexp.MustCompile(`title="(\w+-primary.xml.zst)"`) type PrimaryXml struct { XMLName xml.Name `xml:"metadata,omitempty"` @@ -117,11 +115,6 @@ func (impl updateInfoImpl) getPrimaryXmlOfRepoData(urlOfDir string) (content []b return } - gz, err := gzip.NewReader(bytes.NewBuffer(fileContent)) - if err != nil { - err = fmt.Errorf("read file %s failed: %s", urlOfPrimaryFile, err.Error()) - return - } - - return io.ReadAll(gz) + d, _ := zstd.NewReader(nil) + return d.DecodeAll(fileContent, content) } diff --git a/cve-vulner-manager/go.mod b/cve-vulner-manager/go.mod index 790f23cc0e4b878503537a1e8574185ce359ef15..6b0c846583973e3b43c2c63b3f05f504f92f6eeb 100644 --- a/cve-vulner-manager/go.mod +++ b/cve-vulner-manager/go.mod @@ -29,6 +29,7 @@ require ( github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/klauspost/compress v1.17.3 // indirect github.com/lib/pq v1.8.0 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect diff --git a/cve-vulner-manager/go.sum b/cve-vulner-manager/go.sum index 2f4d025aae50fef91c34129b57e752e648476e5f..d138219aeb79d6e2c52dacf9123e3772abb0ec01 100644 --- a/cve-vulner-manager/go.sum +++ b/cve-vulner-manager/go.sum @@ -889,6 +889,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.17.3 h1:qkRjuerhUU1EmXLYGkSH6EZL+vPSxIrYjLNAK4slzwA= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= diff --git a/cve-vulner-manager/models/issue.go b/cve-vulner-manager/models/issue.go index c3987ac52a65cb57ce212d00cfc382512d07a7b0..a9214408ce7114be715db781fb36a13787107550 100644 --- a/cve-vulner-manager/models/issue.go +++ b/cve-vulner-manager/models/issue.go @@ -609,7 +609,7 @@ func QueryIssueTemplateByLink(beforeTime string, prcnum int, o := orm.NewOrm() var it []IssueTemplate num, err := o.Raw("select *"+ - " from cve_issue_template where status in (1,2,3) "+ + " from cve_issue_template where status in (1,2,3,5) "+ "and template_id > ? "+ "order by template_id asc limit ?", templateId, prcnum).QueryRows(&it) if err == nil && num > 0 {