diff --git a/conf/app.conf b/conf/app.conf index 197d709547637c34ae7714ae7dc8c7e6cd833741..c104096adbd3e805e75bbbe914adfb2c83dd2c86 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -50,7 +50,7 @@ maxsize=204800 [crontab] ymalflag = 2 getymal = 0 53 17 * * * -eulerymalflag = 1 +eulerymalflag = 2 eulergetymal = 0 50 11 * * * cveflag = 2 getcve = 0 14 11 * * * diff --git a/controllers/hook.go b/controllers/hook.go index cfb935337c9d8fe4563439bcb9f05c4b6f1e6579..b011503edcb713509f308d349a5abd33e5329c86 100644 --- a/controllers/hook.go +++ b/controllers/hook.go @@ -855,7 +855,7 @@ func isNormalCloseIssue(cveID int64, issueState int8) bool { // update data func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCenter, token, owner string) bool { appearErr := 0 - isAffectFlag := true + affectBrandFlag := false uNaffected := beego.AppConfig.String("labeUnaffected") labelFixed := beego.AppConfig.String("labelFixed") labelUnFix := beego.AppConfig.String("labelUnFix") @@ -865,9 +865,13 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen logs.Error("err: ", snErr) } else { if issueTmp.Status > 2 { - affectBrandFlag := false affectBranchsxList := make([]string, 0) - affectedBranchs := beego.AppConfig.String("cve::affected_branchs") + affectedBranchs := "" + if cveCenter.OrganizationID == 2 { + affectedBranchs = beego.AppConfig.String("opengauss::gauss_version") + } else { + affectedBranchs = beego.AppConfig.String("cve::affected_branchs") + } if affectedBranchs != "" && len(affectedBranchs) > 0 { affectBranchsxList = strings.Split(affectedBranchs, ",") } @@ -879,21 +883,16 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen for _, affectBranch := range affectBranchsxList { if affectBranch == brands { affectBrandFlag = true - isAffectFlag = false break } } } + if affectBrandFlag { + break + } } } } - if affectBrandFlag { - issueTmp.IssueLabel = labelFixed - } else { - if issueTmp.Status == 3 { - issueTmp.IssueLabel = uNaffected - } - } } switch issueTmp.IssueStatus { case 2: @@ -914,11 +913,11 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen logs.Error("update vulnCenter fail ") appearErr += 1 } - if strings.Contains(issueTmp.IssueLabel, uNaffected) && isAffectFlag { - issueTmp.IssueLabel = uNaffected + if affectBrandFlag { + issueTmp.IssueLabel = labelFixed } else { - if strings.Contains(issueTmp.IssueLabel, labelFixed) && issueTmp.Status == 3 { - issueTmp.IssueLabel = labelFixed + if issueTmp.Status == 3 { + issueTmp.IssueLabel = uNaffected } else { issueTmp.IssueLabel = labelUnFix } @@ -927,16 +926,11 @@ func updateTempAndCenter(issueTmp models.IssueTemplate, cveCenter models.VulnCen if cveCenter.OrganizationID == 2 { gaussIssuePath := beego.AppConfig.String("opengauss::gauss_issue_path") path = gaussIssuePath - if issueTmp.Status == 3 { - issueTmp.IssueLabel = labelFixed - } else { - issueTmp.IssueLabel = labelUnFix - } } else { path = issueTmp.Repo } tpErr := models.UpdateIssueTemplate(&issueTmp, "status", "issue_status", - "status_name", "issue_label", "mt_audit_flag", "sa_audit_flag", "issue_label") + "status_name", "issue_label", "mt_audit_flag", "sa_audit_flag") if tpErr != nil { logs.Error(tpErr) appearErr += 1 diff --git a/cve-py/tabletask/gauss_yaml.py b/cve-py/tabletask/gauss_yaml.py index 50cacceee6974a9394b547bb663e8b1ae571ff5d..927ee9ec1baf7794e8e5814c90da17d0db0a6b5d 100644 --- a/cve-py/tabletask/gauss_yaml.py +++ b/cve-py/tabletask/gauss_yaml.py @@ -96,10 +96,10 @@ def store_yaml_data(yaml_data): last_id = insert_yaml_data(packg_id, yaml_key, yaml_value, mysql) insert_yaml_detail_data(last_id, yaml_key, yaml_value, mysql) mysql.dispose() - # except pymysql.err.IntegrityError: - # print(pymysql.err.IntegrityError) - except Exception as e: - print(e) + except pymysql.err.IntegrityError: + print(pymysql.err.IntegrityError) + # except Exception as e: + # print(e) mysql.dispose(2) mysql.close() diff --git a/models/cve.go b/models/cve.go index 2eb9926c934ef7955b4377a03018a4f46b8c199c..fdcb49ee72506ebb689080bcecadd8b9c8850cee 100644 --- a/models/cve.go +++ b/models/cve.go @@ -185,8 +185,6 @@ func QueryCveCvssV2(scoreId int64) (OriginUpstreamImpactScoreV2, bool) { func QueryCveByNum(cveNum, packName, version string, organizateId int8) (VulnCenter, bool) { o := orm.NewOrm() var cve VulnCenter - //err := o.Raw("select * from cve_vuln_center where cve_num = ? and pack_name = ? and cve_version = ?", - // cveNum, packName, version).QueryRow(&cve) err := o.Raw("select * from cve_vuln_center where cve_num = ? and "+ "pack_name = ? and organizate_id = ? order by cve_id desc limit 1", cveNum, packName, organizateId).QueryRow(&cve) diff --git a/models/issue.go b/models/issue.go index b647ee57b2c993127acdd0eb1b5a4e39cd9fe3fa..0770ffa7beb7916ff060cd58a9b5e71a82742b44 100644 --- a/models/issue.go +++ b/models/issue.go @@ -640,3 +640,13 @@ func UpdateTempleteError(errDesc, cveNum string, cveId int64) (id int64) { errDesc, common.GetCurTime(), cveId, cveNum).QueryRow() return 0 } + +func QueryGiteOriginIssue(cveNum, path string) (gi []GiteOriginIssue) { + o := orm.NewOrm() + _, err := o.Raw("select * from cve_gite_origin_issue where cve_number = ? and repo_path = ?", + cveNum, path).QueryRows(&gi) + if err != nil { + logs.Error("QueryGiteOriginIssue, err: ", err) + } + return +} diff --git a/task/issuetask.go b/task/issuetask.go index b38a204cd5c21223726888420a054d8c1cf951a5..7edff8b41e225f68f1214504fd32a2a8b2063603 100644 --- a/task/issuetask.go +++ b/task/issuetask.go @@ -116,7 +116,7 @@ func addUnlimitedIssue(beforeTime string, prcnum int, years, toolYears, manYears for ; ; { cveData, err := models.QueryIssue(beforeTime, prcnum) if err == nil && len(cveData) > 0 { - logs.Info(cveData) + logs.Info("cveData: ", cveData) //ss := rand.Int31n(10) //time.Sleep(time.Second * time.Duration(ss)) } else { diff --git a/taskhandler/createissue.go b/taskhandler/createissue.go index 4a67be9b8309a087e3a759970a3bd6e8dc7423e7..37f131ddfdf924329bfd84ecb9ce87e507153f05 100644 --- a/taskhandler/createissue.go +++ b/taskhandler/createissue.go @@ -111,7 +111,7 @@ func CreateIssueToGit(accessToken, owner, path, assignee string, var it models.IssueTemplate it.CveId = cve.CveId it.CveNum = cve.CveNum - templateErr := models.GetIssueTemplateByColName(&it, "cve_id", "cve_num") + templateErr := models.GetIssueTemplateByColName(&it, "CveId", "CveNum") if cve.OrganizationID == 1 { sia := models.SpecIssueAssigness{PackageName: cve.PackName, Status: 1} specError := models.GetSpecIssueAssignee(&sia, "package_name", "status") @@ -120,15 +120,17 @@ func CreateIssueToGit(accessToken, owner, path, assignee string, assignee = sia.Assignee } } - if templateErr == nil && it.IssueNum != "" && len(it.IssueNum) > 0 { + if it.TemplateId > 0 && len(it.IssueNum) > 1 { issueErr, _ := GetGiteeIssue(accessToken, owner, path, it.IssueNum) if issueErr != nil { models.DeleteIssueTemplate(it.TemplateId) models.UpdateIssueStatus(cve, 0) return "", errors.New("Recreate issue") } + } else { + logs.Error("CreateIssueToGit, GetIssueTemplateByColName, templateErr: ", templateErr, ",it: ", it) } - if templateErr == nil && it.IssueNum != "" && len(it.IssueNum) > 0 { + if it.TemplateId > 0 && len(it.IssueNum) > 1 { if it.Assignee == "" || len(it.Assignee) == 0 { it.Assignee = assignee } @@ -203,6 +205,18 @@ func CreateIssueToGit(accessToken, owner, path, assignee string, models.UpdateIssueScoreRe(cve, 1) } } else { + // Determine whether an issue has been created + if cve.OrganizationID == 1 { + gi := models.QueryGiteOriginIssue(cve.CveNum, cve.PackName) + if len(gi) > 0 { + for _, g := range gi { + issueErr, _ := GetGiteeIssue(accessToken, owner, path, g.Number) + if issueErr == nil { + return "", errors.New("Recreate issue") + } + } + } + } issueType := CIssueType labels := beego.AppConfig.String("labelUnFix") if accessToken != "" && owner != "" && path != "" { diff --git a/taskhandler/cve.go b/taskhandler/cve.go index 177b9cfc327470f4e5a544c6f47d88ea91c6602a..fd889dbb906b7920380b34ee9c1341a49fae2051 100644 --- a/taskhandler/cve.go +++ b/taskhandler/cve.go @@ -27,7 +27,7 @@ var GetCveDetailUrl = "https://openeuler.org/api-cve/cve-security-notice-server/ var ( pkgLock sync.Mutex lockx sync.Mutex - dbLock sync.Mutex + dbLock sync.Mutex ) var ewg sync.WaitGroup @@ -716,7 +716,7 @@ func InsertCveGroups(cveData models.OriginUpstream, cveRef string, // Synchronize the data returned by the Chinese Academy of Sciences func GenCveVuler(cveData models.OriginUpstream, cveRef string, openeulernum int) (bool, error) { if cveData.Ids == "" || cveData.CveNum == "" { - logs.Error("GenCveVuler, The current data cveNum is empty " + + logs.Error("GenCveVuler, The current data cveNum is empty "+ "and will not be processed temporarily, data: ", cveData) models.UpdateOriginStatus(common.GetCurTime(), cveData.PackName, cveData.Version, cveData.CveId, 3) @@ -858,7 +858,7 @@ func GenCveVuler(cveData models.OriginUpstream, cveRef string, openeulernum int) } else if !versionFlag && gaussFlag { organizationID = 3 orgId = 2 - } else { + } else if versionFlag && !gaussFlag { organizationID = 2 } for ix := orgId; ix < organizationID; ix++ { @@ -973,7 +973,7 @@ func SyncCveVuler(cveData models.OriginExcel, cveRef string, openeulerNum, manYe } else if organizationID == 2 { organizationID = 3 orgId = 2 - } else if organizationID == 2 { + } else if organizationID == 1 { organizationID = 2 orgId = 1 } @@ -1067,16 +1067,16 @@ func GetCveOriginExcelData(prcnum, days, openeulerNum int, cveRef string) (bool, for { osx, num, err := models.QueryOriginCveExcel(beforeTime, prcnum) if err != nil || num == 0 { - logs.Info("当前无excel导入的cve原始数据处理, err: ", err, - ", 处理时间范围: beforetime: ", beforeTime, + logs.Info("There is currently no cve raw data processing imported by excel, err: ", err, + ", beforetime: ", beforeTime, "curtime: ", common.GetCurTime()) break } - logs.Info("excel总共有: ", num, "条的数据需要处理, ", osx) + logs.Info("Excel has a total of: ", num, "Articles of data need to be processed,", osx) ch := make(chan int, len(osx)) for i, cveOrg := range osx { count = count + 1 - logs.Info("当前正常解析第: ", count, "条数据,i:", i, ", cvenum: ", cveOrg.CveNum) + logs.Info("The current normal analysis: ", count, "Pieces of data, i:", i, ", cvenum: ", cveOrg.CveNum) // add mutex lockOk := models.LockUpdateOriginExcelStatus(common.GetCurTime(), cveOrg.CveId, 15) if !lockOk { @@ -1087,7 +1087,7 @@ func GetCveOriginExcelData(prcnum, days, openeulerNum int, cveRef string) (bool, go func(idx, manYears, locOpeneulerNum int, cveData models.OriginExcel, locCveRef string) { ok, err := SyncCveVuler(cveData, locCveRef, openeulerNum, manYears) if !ok { - logs.Error("SyncCveVuler, 处理失败, err: ", err, "cveData: ", cveData) + logs.Error("SyncCveVuler, err: ", err, "cveData: ", cveData) } ch <- idx }(i, manYears, openeulerNum, cveOrg, cveRef) @@ -1979,8 +1979,6 @@ func GetCveSecurityNotice(cveNumber string) (bool, models.RespCveDetail) { } req.URL.EscapedPath() - //body, err := util.HTTPGetCom(req.URL.String()) - //resp, err := http.Get(fmt.Sprintf(GetCveDetailUrl, cveNumber)) resp, err := http.Get(req.URL.String()) if err != nil { logs.Error("Get, url: ", req.URL.String(), err)