From 9b002108176677e1521518f5f8c8fa5f09163081 Mon Sep 17 00:00:00 2001 From: zjm <1076115376@qq.com> Date: Tue, 21 Jun 2022 15:00:37 +0800 Subject: [PATCH] v1/packages interface add community query --- cve-vulner-manager/controllers/packages.go | 113 +++++++++++++--- cve-vulner-manager/models/packages.go | 144 +++++++++++++++++++++ 2 files changed, 237 insertions(+), 20 deletions(-) diff --git a/cve-vulner-manager/controllers/packages.go b/cve-vulner-manager/controllers/packages.go index c712e37..088d75f 100644 --- a/cve-vulner-manager/controllers/packages.go +++ b/cve-vulner-manager/controllers/packages.go @@ -1,11 +1,13 @@ package controllers import ( + "strings" + "cvevulner/errcode" "cvevulner/models" + "github.com/astaxie/beego" "github.com/astaxie/beego/logs" - "strings" ) // Operations about Packages @@ -37,6 +39,7 @@ type PackageData struct { ReleaseTime string `json:"releaseTime"` LatestVersion string `json:"latestVersion"` LatestVersionTime string `json:"latestVersionTime"` + Repo string `json:"repo"` } type Provide struct { @@ -138,7 +141,21 @@ func (u *PackagesController) Get() { logs.Info("Query data: ", QueryPkgName, ", Information about the package") } - totalNum := models.GetPackageNum(QueryPkgName) + organizateId, err := u.GetInt64("organizateId", 1) + if err != nil { + organizateId = 1 + } + + var totalNum int64 + if organizateId == 1 { + totalNum = models.GetPackageNum(QueryPkgName) + } else if organizateId == 2 { + totalNum = models.GetPackageNumForGauss(QueryPkgName) + } else if organizateId == 3 { + totalNum = models.GetPackageNumForMindSpore(QueryPkgName) + } else if organizateId == 4 { + totalNum = models.GetPackageNumForOpenLook(QueryPkgName) + } if totalNum > 0 { if PageSize >= totalNum { resp["totalPage"] = 1 @@ -152,25 +169,81 @@ func (u *PackagesController) Get() { } } resp["totalCount"] = totalNum - ge, num, err := models.GetPackageList(PageSize, PageNum, QueryPkgName) - if num > 0 && err == nil { - for _, g := range ge { - var pg PackageData - pg.Id = g.GitId - pg.Release = g.Release - pg.Version = g.Version - pg.CpeName = g.CpePackName - pg.LatestVersion = g.LatestVersion - pg.LatestVersionTime = g.LatestVersionTime - pg.Name = g.PackageName - pg.OriginUrl = g.OriginUrl - pg.ReleaseTime = g.ReleaseTime - pd = append(pd, pg) + if organizateId == 1 { + ge, num, err := models.GetPackageList(PageSize, PageNum, QueryPkgName) + if num > 0 && err == nil { + for _, g := range ge { + var pg PackageData + pg.Id = g.GitId + pg.Release = g.Release + pg.Version = g.Version + pg.CpeName = g.CpePackName + pg.LatestVersion = g.LatestVersion + pg.LatestVersionTime = g.LatestVersionTime + pg.Name = g.PackageName + pg.OriginUrl = g.OriginUrl + pg.ReleaseTime = g.ReleaseTime + pd = append(pd, pg) + } + resp["body"] = pd + resp["errno"] = errcode.RecodeOk + resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) + u.RetData(resp) + } + } else if organizateId == 2 { + ge, num, err := models.GetPackageListForGauss(PageSize, PageNum, QueryPkgName) + if num > 0 && err == nil { + for _, g := range ge { + var pg PackageData + pg.Id = g.Id + pg.Version = g.Version + pg.CpeName = g.CpeName + pg.Name = g.PackageName + pg.OriginUrl = g.OriginUrl + pg.Repo = g.Repo + pd = append(pd, pg) + } + resp["body"] = pd + resp["errno"] = errcode.RecodeOk + resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) + u.RetData(resp) + } + } else if organizateId == 3 { + ge, num, err := models.GetPackageListForMindSpore(PageSize, PageNum, QueryPkgName) + if num > 0 && err == nil { + for _, g := range ge { + var pg PackageData + pg.Id = g.Id + pg.Version = g.Version + pg.CpeName = g.CpeName + pg.Name = g.PackageName + pg.OriginUrl = g.OriginUrl + pg.Repo = g.Repo + pd = append(pd, pg) + } + resp["body"] = pd + resp["errno"] = errcode.RecodeOk + resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) + u.RetData(resp) + } + } else if organizateId == 4 { + ge, num, err := models.GetPackageListForOpenLook(PageSize, PageNum, QueryPkgName) + if num > 0 && err == nil { + for _, g := range ge { + var pg PackageData + pg.Id = g.Id + pg.Version = g.Version + pg.CpeName = g.CpeName + pg.Name = g.PackageName + pg.OriginUrl = g.OriginUrl + pg.Repo = g.Repo + pd = append(pd, pg) + } + resp["body"] = pd + resp["errno"] = errcode.RecodeOk + resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) + u.RetData(resp) } - resp["body"] = pd - resp["errno"] = errcode.RecodeOk - resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) - u.RetData(resp) } } else { resp["errno"] = errcode.RecodeNodata diff --git a/cve-vulner-manager/models/packages.go b/cve-vulner-manager/models/packages.go index 78b556d..0847f02 100644 --- a/cve-vulner-manager/models/packages.go +++ b/cve-vulner-manager/models/packages.go @@ -146,3 +146,147 @@ func GetPackageNum(QueryPkgName string) int64 { } } } + +func GetPackageNumForGauss(QueryPkgName string) int64 { + o := orm.NewOrm() + cg := o.QueryTable("cve_open_guss_yaml") + var ge []OpenGussYaml + if QueryPkgName != "" { + num, err := cg.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } else { + num, err := cg.Filter("id__gt", 0).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } +} + +func GetPackageNumForMindSpore(QueryPkgName string) int64 { + o := orm.NewOrm() + cg := o.QueryTable("cve_mind_spore_yaml") + var ge []MindSporeYaml + if QueryPkgName != "" { + num, err := cg.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } else { + num, err := cg.Filter("id__gt", 0).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } +} + +func GetPackageNumForOpenLook(QueryPkgName string) int64 { + o := orm.NewOrm() + cg := o.QueryTable("cve_open_lookeng_yaml") + var ge []OpenLookengYaml + if QueryPkgName != "" { + num, err := cg.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } else { + num, err := cg.Filter("id__gt", 0).Filter("status", 1).All(&ge) + if err == nil { + return num + } else { + return 0 + } + } +} + +func GetPackageListForGauss(pagesize int64, pagenum int64, QueryPkgName string) (ge []OpenGussYaml, num int64, err error) { + o := orm.NewOrm() + qs := o.QueryTable("cve_open_guss_yaml") + var us []OpenGussYaml + if QueryPkgName != "" { + cnt, err := qs.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_open_guss_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_open_guss_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } else { + cnt, err := qs.Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_open_guss_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_open_guss_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } +} + +func GetPackageListForMindSpore(pagesize int64, pagenum int64, QueryPkgName string) (ge []MindSporeYaml, num int64, err error) { + o := orm.NewOrm() + qs := o.QueryTable("cve_mind_spore_yaml") + var us []MindSporeYaml + if QueryPkgName != "" { + cnt, err := qs.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_mind_spore_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_mind_spore_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } else { + cnt, err := qs.Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_mind_spore_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_mind_spore_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } +} + +func GetPackageListForOpenLook(pagesize int64, pagenum int64, QueryPkgName string) (ge []OpenLookengYaml, num int64, err error) { + o := orm.NewOrm() + qs := o.QueryTable("cve_open_lookeng_yaml") + var us []OpenLookengYaml + if QueryPkgName != "" { + cnt, err := qs.Filter("package_name__icontains", QueryPkgName).Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_open_lookeng_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_open_lookeng_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } else { + cnt, err := qs.Filter("status", 1).Limit(pagesize, (pagenum-1)*pagesize).All(&us) + if err == nil { + logs.Info("GetPackageList, cve_open_lookeng_yaml, count: ", cnt, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } else { + logs.Error("GetPackageList, cve_open_lookeng_yaml, err: ", err, ",pagesize ", + pagesize, ",pagenum ", pagenum, ", QueryPkgName ", QueryPkgName) + } + return us, cnt, err + } +} -- Gitee