diff --git a/.gitignore b/.gitignore index a622d5070dd2ad5c0b19b15ff4985bb99842f44f..bac04964914eb0747b738f04849c819b8195d8da 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,3 @@ __pycache__ go.sum logs/ lastupdate.tmp -*.xlsx \ No newline at end of file diff --git a/conf/app.conf b/conf/app.conf index 31e3b0da7e372a58a8a6769c57299d6f939cbe15..2f539474d4bd9f6b1ab6dd6e1e72b5aab06128e1 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -46,7 +46,7 @@ maxsize=204800 [crontab] ymalflag = 2 getymal = 00 00 23 * * * -cveflag = 2 +cveflag = 1 getcve = 00 00 01 * * * oricveflag = 2 oricvecheck = 00 00 05 * * * @@ -57,22 +57,22 @@ createissue = * * 05 * * * test = 0/10 * * * * * gittokenflag = 2 issueoath = * * */20 * * * -genexcelflag = 2 -genexcel = 00 00 04 * * * +genexcelflag = 1 +genexcel = 0 */10 * * * * days = -30 prcnum = 50 -printlogflag = 1 -printlog = 0 */10 * * * * +printlogflag = 2 +printlog = 0 */20 * * * * [gitee] #owner = cve-test -#owner = src-openeuler -#path = test +owner = src-openeuler +path = test #email = 1499273991@qq.com #redirect_uri = http://119.8.126.102:80/v1/issue/oauth/callback # -------jianjun gitee 配置 -------- -owner = cve-test +#owner = cve-test #path = jasper email = 7844966+zhangjianjun_code@user.noreply.gitee.com redirect_uri = http://159.138.2.2:80/v1/issue/oauth/callback diff --git a/conf/product_app.conf b/conf/product_app.conf index 2667c657c7a8069a43501ead31020e705b8c6074..4e7f56556bd0fda230a74005ff23c9c61f93fadf 100644 --- a/conf/product_app.conf +++ b/conf/product_app.conf @@ -25,7 +25,6 @@ fileDir = "download" rpUrl = "http://119.3.219.20:88/mkb/obs_update_info/openEuler-20.03-LTS.csv" [mysql] -#dbhost = 172.16.1.73 dbhost = "${DB_URI||***}" dbport = 3306 dbuser = "${DB_USER||cve}" @@ -44,20 +43,20 @@ maxlines=50000 maxsize=204800 [crontab] -ymalflag = 2 -getymal = 00 00 01 * * * -cveflag = 2 +ymalflag = 1 +getymal = 00 00 01 * * 1 +cveflag = 1 getcve = 00 00 03 * * * -oricveflag = 2 +oricveflag = 1 oricvecheck = 00 00 05 * * * -getissueflag = 2 +getissueflag = 1 getissue = 00 00 05 * * * -issueflag = 2 +issueflag = 1 createissue = * * 05 * * * test = 0/10 * * * * * gittokenflag = 2 issueoath = * * */20 * * * -genexcelflag = 2 +genexcelflag = 1 genexcel = 00 00 04 * * * days = -30 prcnum = 50 diff --git a/controllers/file.go b/controllers/file.go index 44598a48138e1a3ed7b53fcb20b131bf4a8d7c0b..1fdc2fdac2ba004808e2e52365883883e8e34f64 100644 --- a/controllers/file.go +++ b/controllers/file.go @@ -40,20 +40,20 @@ func (f *FileController) DownloadLastExcel() { //DownLoadExcelByFileCode download excel file by code //@router /downloadExcel -func (f *FileController) DownLoadExcelByFileCode() { +func (f *FileController) DownLoadExcelByFileCode() { fd := beego.AppConfig.DefaultString("fileDir", "download") fc := f.GetString("fileCode") - if fc == ""{ + if fc == "" { _ = f.Ctx.Output.Body([]byte("err: fileCode is a required parameter ")) return } er := models.ExportRecord{FileCode: fc} err := er.Read("file_code") if err != nil { - _ = f.Ctx.Output.Body([]byte(fmt.Sprintf("err: %v",err))) + _ = f.Ctx.Output.Body([]byte(fmt.Sprintf("err: %v", err))) return } - if er.FileName == ""{ + if er.FileName == "" { _ = f.Ctx.Output.Body([]byte("err: Can not find excel file by fileCode! ")) return } @@ -75,6 +75,7 @@ func (f *FileController) DownLoadExcelByFileCode() { //TriggerCveData touch off generate cve data excel and get cve package //@router /triggerCveData [get] func (f *FileController) TriggerCveData() { + timeUnix := time.Now().Unix() startTime := f.GetString("startTime") if startTime == "" { f.Ctx.WriteString("Error:start time cannot be empty") @@ -83,15 +84,17 @@ func (f *FileController) TriggerCveData() { //It is time-consuming to generate excel, here is the current limit processing er := models.ExportRecord{} err := er.QueryLast() - if err == nil { - if er.State == 0 { - eng := fmt.Sprintf("There is currently a file being generated, file information: file name %s fileCode=%s; you can use fileCode to download the file.", - er.FileName,er.FileCode) - cha := fmt.Sprintf("\n当前有一个文件正在生成,文件信息:文件名 %s fileCode= %s ;你可以使用fileCode去下载文件。",er.FileName,er.FileCode) - f.Ctx.WriteString(eng+cha) + if err == nil { + if er.State == 0 && (timeUnix-er.CreateTime < 300) { + eng := fmt.Sprintf("There is currently a file being generated, "+ + "file information: file name %s fileCode=%s; you can use fileCode to download the file.", + er.FileName, er.FileCode) + cha := fmt.Sprintf("\n当前有一个文件正在生成,文件信息:文件名 %s fileCode= %s ;"+ + "你可以使用fileCode去下载文件。", er.FileName, er.FileCode) + f.Ctx.WriteString(eng + cha) return } - }else { + } else { logs.Error(err) } rt := regexp.MustCompile(`^(\d{4})-\d{2}-(\d{2})$`) @@ -104,14 +107,15 @@ func (f *FileController) TriggerCveData() { en := fmt.Sprintf("cve与安全公告%v.xlsx", now) fileCode := common.EncryptMd5(en) //call the generate excel task by new thread - go taskhandler.GenerateExcelTrigger(en, startTime,fileCode) - er = models.ExportRecord{FileName: en, FileCode: fileCode, State: 0} + er = models.ExportRecord{FileName: en, FileCode: fileCode, State: 0, CreateTime: timeUnix} err = er.Insert() if err != nil { f.Ctx.WriteString(fmt.Sprintf("error:%v", err)) } else { //return the success notice - f.Ctx.WriteString(fmt.Sprintf("Success:The name of the excel file generated this time is: %s. It takes some time to generate the excel file. "+ + go taskhandler.GenerateExcelTrigger(en, startTime, fileCode) + f.Ctx.WriteString(fmt.Sprintf("Success:The name of the excel file generated this time is: %s. "+ + "It takes some time to generate the excel file. "+ "You can try to call the download file interface and pass in the param fileCode=%s to be downloaded.", en, fileCode)) } } diff --git a/cve-py/controller/timertaskcontroller.py b/cve-py/controller/timertaskcontroller.py index 37264de2213b99b43ac7d7ba52c7c63ae76f21e7..9c04eea823235d4ee85665c56e6d389be4b3925d 100644 --- a/cve-py/controller/timertaskcontroller.py +++ b/cve-py/controller/timertaskcontroller.py @@ -42,11 +42,3 @@ def timertask(): print("Err:", err) -def InitTask(): - """ - 1. Initialize the verification task for the first time; - 2. Shield after verification - """ - taskcontroller.gwcontroller() - taskcontroller.runtabletask() - taskcontroller.runmappeingtask() diff --git a/cve-py/main.py b/cve-py/main.py index 8d12273f7e265831db8304502b56b06fb763a541..966cf7eb2bc011cb5f3096efdd223c95bff60f94 100644 --- a/cve-py/main.py +++ b/cve-py/main.py @@ -20,8 +20,6 @@ from controller import timertaskcontroller if __name__ == '__main__': - print("Initialize the verification task for the first time and execute it immediately:") - timertaskcontroller.InitTask() print("The program starts, waiting for the timing task to execute") timertaskcontroller.timertask() diff --git a/cve-py/newexcels/20.03-CVE-10-10.xlsx b/cve-py/newexcels/20.03-CVE-10-10.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..67c3c08c98677dac89f2f5f3e30f53f8679c1f26 Binary files /dev/null and b/cve-py/newexcels/20.03-CVE-10-10.xlsx differ diff --git a/cve-py/newexcels/test.xls b/cve-py/newexcels/test.xls deleted file mode 100644 index a7f371ad8fadc9ed3a23cb494ec850371d390000..0000000000000000000000000000000000000000 Binary files a/cve-py/newexcels/test.xls and /dev/null differ diff --git a/models/cve.go b/models/cve.go index f6f7bee1b2df5f9b0503f2e0193c3132a2cfc8cf..7de90add36f891e8a5e34743348a07da993c692d 100644 --- a/models/cve.go +++ b/models/cve.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/astaxie/beego/logs" "github.com/astaxie/beego/orm" + "strings" ) func QueryOriginCveExcel(days string, prcnum int) ([]OriginExcel, int64, error) { @@ -138,8 +139,7 @@ func QueryCveByNum(cveNum, packName, version string) (VulnCenter, bool) { 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) - if err != nil { - logs.Error(cveNum, packName, version, "cve_vuln_center 查询不到, err: ", err) + if err != nil || cve.CveId == 0 { return cve, false } else { return cve, true @@ -149,7 +149,8 @@ func QueryCveByNum(cveNum, packName, version string) (VulnCenter, bool) { func UpdateCveStatusExportByNum(updatetime, cveNum string, status, isExport int, repoPath string) bool { o := orm.NewOrm() res, err := o.Raw("UPDATE cve_vuln_center SET "+ - "is_export = ?, cve_status = ?, update_time = ? where cve_num = ? and pack_name = ?", isExport, status, updatetime, cveNum, repoPath).Exec() + "is_export = ?, cve_status = ?, update_time = ? where cve_num = ? and pack_name = ?", + isExport, status, updatetime, cveNum, repoPath).Exec() if err == nil { num, _ := res.RowsAffected() if num > 0 { @@ -302,7 +303,8 @@ func InsertScoreRecord(sc *ScoreRecord) (int64, error) { return 0, nil } -func CreateCveRelat(cve *VulnCenter, sec *SecurityNotice, score *Score, op *OpenEulerSA, sc *ScoreRecord) (cveid int64, err error) { +func CreateCveRelat(cve *VulnCenter, sec *SecurityNotice, score *Score, + op *OpenEulerSA, sc *ScoreRecord) (cveid int64, err error) { o := orm.NewOrm() errs := o.Begin() if errs == nil { @@ -571,16 +573,19 @@ func QueryOpenSaById(cveId int64) (OpenEulerSA, error) { func UpdateOriginStatus(updateTime, pakName, version string, cveId int64, status int) bool { o := orm.NewOrm() res, err := o.Raw("UPDATE cve_origin_upstream SET "+ - "cve_status = ?, update_time = ? where cve_id = ? and git_packname = ? and version = ?", status, updateTime, cveId, pakName, version).Exec() + "cve_status = ?, update_time = ? where cve_id = ? and git_packname = ? and version = ?", + status, updateTime, cveId, pakName, version).Exec() if err == nil { num, _ := res.RowsAffected() if num > 0 { - logs.Info("cve_origin_upstream row affected nums: ", num, ",cveId: ", cveId, ",", updateTime, pakName, version) + logs.Info("cve_origin_upstream row affected nums: ", + num, ",cveId: ", cveId, ",", updateTime, pakName, version) return true } return false } else { - logs.Error("更新失败, cve_origin_upstream, ", ",cveId: ", cveId, ",", updateTime, pakName, version, ", err: ", err) + logs.Error("更新失败, cve_origin_upstream, ", ",cveId: ", + cveId, ",", updateTime, pakName, version, ", err: ", err) return false } } @@ -648,6 +653,40 @@ func GetCanExportVulnCenterCount() (count int64) { return res.Total } +func GetCanExportTheme(cveNums, component string) (string, error) { + if cveNums == "" || component == "" { + return "", errors.New("param is empty") + } + s := strings.Split(cveNums, ";\n") + for k, v := range s { + s[k] = "'" + v + "'" + } + cveNums = strings.Join(s, ",") + type tmp = struct { + OpenEulerScore float64 `orm:"column(openeuler_score)"` + Theme string + } + res := make([]tmp,0) + sql := fmt.Sprintf(`SELECT b.openeuler_score,a.theme FROM cve_issue_template b +JOIN cve_security_notice a ON a.cve_id = b.cve_id +WHERE b.cve_num IN (%s) +AND b.owned_component = '%s'`,cveNums,component) + o := orm.NewOrm() + _, err := o.Raw(sql).QueryRows(&res) + if err != nil { + return "", err + } + max := float64(0) + resStr := "" + for _,v :=range res { + if max < v.OpenEulerScore { + max = v.OpenEulerScore + resStr = v.Theme + } + } + return resStr,nil +} + func GetCanExportCveData(page int64, pageSize int) (list []ExcelExport, err error) { sql := `SELECT b.num,c.*,a.owned_component,a.cve_brief, d.sec_id,d.introduction,d.summary,d.theme,d.description,d.influence_component, @@ -670,7 +709,7 @@ ON b.cve_id = e.cve_id } //GetCanExportExcelData Get exportable data -func GetCanExportExcelData(cveNum,issueNum string) (list []ExcelExport, err error) { +func GetCanExportExcelData(cveNum, issueNum string) (list []ExcelExport, err error) { if cveNum == "" { return list, errors.New("cve number can not empty") } @@ -691,12 +730,13 @@ ON b.cve_id = e.cve_id WHERE a.issue_num = ? ` o := orm.NewOrm() - _, err = o.Raw(sql, cveNum, cveNum,issueNum).QueryRows(&list) + _, err = o.Raw(sql, cveNum, cveNum, issueNum).QueryRows(&list) return } func GetCanExportCveDataSameNum(cId string) (list []ExcelExport, err error) { - sql := `SELECT a.cve_id,a.owned_component,a.cve_brief,c.*,d.sec_id,d.introduction,d.summary,d.theme,d.description,d.influence_component, + sql := `SELECT a.cve_id,a.owned_component,a.cve_brief,c.*,d.sec_id, +d.introduction,d.summary,d.theme,d.description,d.influence_component, d.affect_product,d.reference_link,d.affect_status,e.public_date,e.openeuler_sa_num FROM cve_issue_template a LEFT JOIN cve_score c diff --git a/models/issue.go b/models/issue.go index 393a6a2872f095d04cc69c1970b59e9b6c879d3c..6120afa0923ee6fd4287b6a258f52bb8e2f6ce25 100644 --- a/models/issue.go +++ b/models/issue.go @@ -192,7 +192,7 @@ func ReplacePackageByCveId(pkgList []string,cveId int64) error { delPkgSql := `DELETE FROM cve_package WHERE sec_id = ?` _, err = o.Raw(delPkgSql, sec.SecId).Exec() if err != nil { - return err + logs.Error("delete cve_package error:",err) } pkgData := make([]Package, 0) for _, v := range pkgList { diff --git a/models/modeldb.go b/models/modeldb.go index 92954c2d2ea001d76210fe7330bd07044c03f90f..d925465f987703c4815d0cf8980c9f7bf34207f3 100644 --- a/models/modeldb.go +++ b/models/modeldb.go @@ -551,7 +551,7 @@ type ExportRecord struct { FileName string `orm:"unique"` FileCode string State int8 ` description:"0:文件生成中;1 文件可下载;2 文件不可下载"` - CreateTime time.Time `orm:"auto_now_add;type(datetime);column(create_time)"` + CreateTime int64 `orm:"column(create_time)" description:"时间戳"` } type PackageCpe struct { diff --git a/taskhandler/createissue.go b/taskhandler/createissue.go index e6358af6714455193415c4aa778011d41acec24e..4f1dc7a1c27f7855b59ad825399f3533507d96f2 100644 --- a/taskhandler/createissue.go +++ b/taskhandler/createissue.go @@ -115,7 +115,7 @@ func CreateIssueToGit(accessToken string, owner string, path string, assignee st } } else { issueType := "CVE和安全问题" - labels := beego.AppConfig.String("labelFixed") + labels := beego.AppConfig.String("labelUnFix") if accessToken != "" && owner != "" && path != "" { url := "https://gitee.com/api/v5/repos/" + owner + "/issues" score := strconv.FormatFloat(sc.NVDScore, 'f', 1, 64) @@ -505,7 +505,7 @@ func CreateSecNoticeData(sec *models.SecurityNotice, iss models.VulnCenter, path sec.CveNum = iss.CveNum opScoreLeve := openEulerScoreProc(opScore) sec.Introduction = "An update for " + path + " is now available for " + branchs + "." - sec.Theme = sec.Introduction + ";\n\n" + "openEuler Security has rated this" + + sec.Theme = sec.Introduction[:len(sec.Introduction) - 1] + ";\n\n" + "openEuler Security has rated this" + " update as having a security impact of " + opScoreLeve + ". A Common Vunlnerability" + " Scoring System(CVSS)base score,which gives a detailed severity rating," + " is available for each vulnerability from the CVElink(s) in the References section." @@ -518,7 +518,7 @@ func CreateIssueLabel(accessToken string, owner string, path string, url := "https://gitee.com/api/v5/repos/" + owner + "/" + path + "/issues/" + issNum + "/labels" body := make(map[string]interface{}) body["access_token"] = accessToken - body["body"] = fmt.Sprintf(`[%s,%s]`, beego.AppConfig.String("labelUnFix"), beego.AppConfig.String("labelFixed")) + body["body"] = fmt.Sprintf(`[%s,%s]`, beego.AppConfig.String("labelUnFix"), beego.AppConfig.String("labelUnFix")) requestBody, _ := json.Marshal(body) logs.Info("create issue label: ", string(requestBody)) resp, err := util.HTTPPost1(url, string(requestBody)) diff --git a/taskhandler/cve.go b/taskhandler/cve.go index 65853ca1cae66e6bd4c5d6f7e783b2c5db19c777..c37cca07ecdd068bc3dbd6428e74d2f15ac489e5 100644 --- a/taskhandler/cve.go +++ b/taskhandler/cve.go @@ -945,7 +945,7 @@ func InsertIssueCveGroups(cveData models.GiteOriginIssue, lop models.Loophole, c } sec.ReferenceLink = cveRef + cveData.CveNumber sec.Introduction = "An update for " + lop.Components + " is now available for " + lop.InfProduct + "." - sec.Theme = sec.Introduction + ";\n\n" + "openEuler Security has rated this" + + sec.Theme = sec.Introduction[:len(sec.Introduction)-1] + ";\n\n" + "openEuler Security has rated this" + " update as having a security impact of " + opScoreLeve + ". A Common Vunlnerability" + " Scoring System(CVSS)base score,which gives a detailed severity rating," + " is available for each vulnerability from the CVElink(s) in the References section." @@ -1107,7 +1107,7 @@ func UpdateIssueCveGroups(cveData models.GiteOriginIssue, lop models.Loophole, c opScoreLeve = openEulerScoreProc(opScore) } sec.Introduction = "An update for " + lop.Components + " is now available for " + lop.InfProduct + "." - sec.Theme = sec.Introduction + ";\n\n" + "openEuler Security has rated this" + + sec.Theme = sec.Introduction[:len(sec.Introduction) - 1] + ";\n\n" + "openEuler Security has rated this" + " update as having a security impact of "+ opScoreLeve + ". A Common Vunlnerability" + " Scoring System(CVSS)base score,which gives a detailed severity rating," + " is available for each vulnerability from the CVElink(s) in the References section." @@ -1263,6 +1263,11 @@ func UpdateIssueCveGroups(cveData models.GiteOriginIssue, lop models.Loophole, c if openError == nil { issueTemp.OpenEulerScore = openEulerScore } + issueTemp.NVDVector = lop.CvsVector + nvdScore, nvdError := strconv.ParseFloat(lop.CvsScore, 64) + if nvdError == nil { + issueTemp.NVDScore = nvdScore + } issueTemp.OpenEulerVector = lop.OpVector issueTemp.CveBrief = RemoveSubstring(lop.BriefIntroduction, specCharList) issueTemp.CveAnalysis = lop.Influences @@ -1303,6 +1308,11 @@ func UpdateIssueCveGroups(cveData models.GiteOriginIssue, lop models.Loophole, c issueTemp.OpenEulerScore = openEulerScore } issueTemp.NVDVector = lop.CvsVector + nvdScore, nvdError := strconv.ParseFloat(lop.CvsScore, 64) + if nvdError == nil { + issueTemp.NVDScore = nvdScore + } + issueTemp.NVDVector = lop.CvsVector issueTemp.OpenEulerVector = lop.OpVector issueTemp.CveBrief = RemoveSubstring(lop.BriefIntroduction, specCharList) issueTemp.CveAnalysis = lop.Influences @@ -1524,6 +1534,11 @@ func FilterCveExported() { } func GenerateExcelTask() error { + FilterCveExported() + return nil +} + +func GenerateExcelTask1() error { FilterCveExported() tn := time.Now().Format("2006-01-02") dir := beego.AppConfig.DefaultString("fileDir", "download") @@ -1542,7 +1557,8 @@ func GenerateExcelTask() error { } //GenerateExcelTrigger generate cve&security notice excel file by pr merge and influence package release. func GenerateExcelTrigger(fileName, startTime,fileCode string) { - FilterCveExported() + //FilterCveExported() + logs.Error("start。。。。。") dir := beego.AppConfig.DefaultString("fileDir", "download") err := util.MakeDir(dir) if err != nil { @@ -1551,7 +1567,7 @@ func GenerateExcelTrigger(fileName, startTime,fileCode string) { fr := models.ExportRecord{FileName: fileName} err = fr.Read("file_name") if err != nil { - logs.Error(err) + logs.Error("sddds",err) return } fileName = filepath.Join(dir, fileName) @@ -1574,6 +1590,7 @@ func GenerateExcelTrigger(fileName, startTime,fileCode string) { snPrefix := "openEuler-" + su snSuffix := int64(1001) err = GenerateCveExcelByTrigger(fileName, snPrefix, startTime, snSuffix, true, pkgList) + logs.Error("end....") if err != nil { logs.Error(err) fr.State = 2 diff --git a/taskhandler/excel.go b/taskhandler/excel.go index 7a9d3061533acdee59c25f7724e5e99a76387517..95b356e1be59ed364002ed2dd4aba19adc7e8c33 100644 --- a/taskhandler/excel.go +++ b/taskhandler/excel.go @@ -41,6 +41,7 @@ type CveExcel struct { type IssueAndPkg struct { IssueMap map[int64]models.PullRequestIssue IssuePkg string + Repo string } var fillLock sync.Mutex @@ -401,6 +402,7 @@ func (ec *CveExcel) FillContentTrigger(pkgList []models.ExcelPackage, startTime go ec.handleGiteData(cd) } wgTrigger.Wait() + logs.Error("cve_gen_finish") } func (ec *CveExcel) handleWriteContent(off int64, size int) (err error) { @@ -511,9 +513,7 @@ func (ec *CveExcel) handleWriteContentSync(list []models.ExcelExport) (err error ep.OwnedComponent = ep.OwnedComponent + "\n" + ex.OwnedComponent m[ex.OwnedComponent] = struct{}{} } - } - } fillLock.Lock() ec.setContentRow(ep) @@ -572,6 +572,12 @@ func (ec *CveExcel) setContentRow(v models.ExcelExport) { vd += dSplit[1] } _ = ec.ExcelHandel.SetCellValue(ec.SecNoticeSheetName, rd, vd) + //Get the highest-rated theme + rd = "E" + row + theme, err := models.GetCanExportTheme(vcn, v.OwnedComponent) + if err == nil { + _ = ec.ExcelHandel.SetCellValue(ec.SecNoticeSheetName, rd, theme) + } } cve := []interface{}{v.CveNum, v.CveBrief, v.NVDScore, v.OpenEulerScore, v.NattackVector, v.OattackVector, v.NattackComplexity, v.OattackComplexity, v.NprivilegeRequired, v.OprivilegeRequired, v.NuserInteraction, @@ -729,7 +735,7 @@ func getDateByGite(pkgList []models.ExcelPackage, startTime string, c chan<- []I getPRRelatedAllIssue(token, owner, v.Repo, st, rt, p.Number, repoIssue) } if len(repoIssue) > 0 { - chData = append(chData, IssueAndPkg{IssueMap: repoIssue, IssuePkg: v.Packages}) + chData = append(chData, IssueAndPkg{IssueMap: repoIssue, IssuePkg: v.Packages, Repo: v.Repo}) } } c <- chData @@ -750,7 +756,7 @@ func (ec *CveExcel) handleGiteData(c <-chan []IssueAndPkg) { tpl := models.IssueTemplate{IssueNum: iv.Number, Repo: iv.Repo} err := models.GetIssueTemplateByColName(&tpl, "issue_num", "repo") if err != nil { - logs.Error(err) + logs.Error("----",err) continue } err = models.ReplacePackageByCveId(pkgList, tpl.CveId) @@ -786,7 +792,7 @@ func getRepoAllPR(token, owner, repo string, startTime, releaseTime int64) (prLi q.Add("sort", "created") q.Add("state", "merged") q.Add("per_page", strconv.Itoa(pageSize)) - q.Add("base","openEuler-20.03-LTS") //target branch is openEuler-20.03-LTS + q.Add("base", "openEuler-20.03-LTS") //target branch is openEuler-20.03-LTS for { q.Del("page") q.Add("page", strconv.Itoa(pageCount)) @@ -892,18 +898,18 @@ func isLegallyIssue(i models.HookIssue, startTime int64, releaseTime int64) (pri } tt := strings.Trim(i.Title, " ") regCveNum := regexp.MustCompile(`(?mi)CVE-[\d]{1,}-([\d]{1,})$`) - if tt != "" && regCveNum.Match([]byte(tt)) { + /*if tt != "" && regCveNum.Match([]byte(tt)) { ok = true - } else { - sm := util.RegexpCveNumber.FindAllStringSubmatch(i.Body, -1) - if len(sm) > 0 && len(sm[0]) > 0 { - val := sm[0][1] - tt = util.GetCveNumber(util.TrimString(val)) - if tt != "" && regCveNum.Match([]byte(tt)) { - ok = true - } + } else {*/ + sm := util.RegexpCveNumber.FindAllStringSubmatch(i.Body, -1) + if len(sm) > 0 && len(sm[0]) > 0 { + val := sm[0][1] + tt = util.GetCveNumber(util.TrimString(val)) + if tt != "" && regCveNum.Match([]byte(tt)) { + ok = true } } + //} if ok { pri.Id = i.Id pri.Number = i.Number