diff --git a/cve-vulner-manager/controllers/login.go b/cve-vulner-manager/controllers/login.go index 3b91a92c2727b12c574c8541367224df7f255ab3..69bae4f19bbdbf72b70acef603cb9e8a8ff53f60 100644 --- a/cve-vulner-manager/controllers/login.go +++ b/cve-vulner-manager/controllers/login.go @@ -1,14 +1,16 @@ package controllers import ( + "encoding/json" + "fmt" + "time" + "cvevulner/common" "cvevulner/errcode" "cvevulner/models" - "encoding/json" - "fmt" + "github.com/astaxie/beego" "github.com/astaxie/beego/logs" - "time" ) type UserLoginController struct { @@ -66,21 +68,32 @@ func (u *UserLoginController) Post() { } var strc Result username := fmt.Sprintf("%s", req["userName"]) - resp_model, err := models.GetCveUserByUser(username, password) - logs.Info(resp_model) - if resp_model != nil && err == nil { + respModel, err := models.GetCveUserByUser(username, password) + logs.Info(respModel) + if respModel != nil && err == nil { + if exp, ok := respModel[0]["expiration_time"].(string); ok && exp > models.Time2Str() { + if k, kok := respModel[0]["aes_key"].(string); kok { + strc.Key = k + strc.UserId = respModel[0]["user_id"] + resp["body"] = strc + resp["errno"] = errcode.RecodeOk + resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) + u.RetData(resp) + return + } + } token, terr := common.GenToken(username, password) if terr == nil { strc.Key = token - logs.Info(resp_model[0]["user_id"]) - user_id := resp_model[0]["user_id"] - strc.UserId = user_id + logs.Info(respModel[0]["user_id"]) + userId := respModel[0]["user_id"] + strc.UserId = userId resp["body"] = strc resp["errno"] = errcode.RecodeOk resp["errmsg"] = errcode.RecodeText(errcode.RecodeOk) expirTime := common.GetTokenExpirTime() newTime := time.Now().AddDate(0, 0, expirTime) - models.UpdateToken(resp_model[0]["user_id"], token, newTime) + models.UpdateToken(respModel[0]["user_id"], token, newTime) u.RetData(resp) return } diff --git a/cve-vulner-manager/controllers/packages.go b/cve-vulner-manager/controllers/packages.go index 088d75f5aa17dce3ea7fe2e2031f45046f671495..10708e9f041efc21a4f8230e48a2518f02e3e3fe 100644 --- a/cve-vulner-manager/controllers/packages.go +++ b/cve-vulner-manager/controllers/packages.go @@ -40,6 +40,7 @@ type PackageData struct { LatestVersion string `json:"latestVersion"` LatestVersionTime string `json:"latestVersionTime"` Repo string `json:"repo"` + PackageId int64 `json:"package_id"` } type Provide struct { @@ -183,6 +184,7 @@ func (u *PackagesController) Get() { pg.Name = g.PackageName pg.OriginUrl = g.OriginUrl pg.ReleaseTime = g.ReleaseTime + pg.PackageId = g.PackageId pd = append(pd, pg) } resp["body"] = pd diff --git a/cve-vulner-manager/models/cve.go b/cve-vulner-manager/models/cve.go index e3d9febdc755e21e71fba3bc56d109867f03a5b1..a04db43295ff110ce7bbc9ab8fe55091d5193d02 100644 --- a/cve-vulner-manager/models/cve.go +++ b/cve-vulner-manager/models/cve.go @@ -1106,9 +1106,23 @@ is_export in (0,3) and pack_name in ('%s') and organizate_id = 1)` + ` and cve_n return } -func GetUnffectIssueNumber(startTime string) (issueTemp []IssueTemplate, err error) { - sql := `SELECT * FROM cve_issue_template WHERE cve_id IN (SELECT DISTINCT cve_id FROM cve_vuln_center WHERE cve_status = 2 AND +func GetUnffectIssueNumber(startTime string, cves []string) (issueTemp []IssueTemplate, err error) { + var sql string + if len(cves) == 0 { + sql = `SELECT * FROM cve_issue_template WHERE cve_id IN (SELECT DISTINCT cve_id FROM cve_vuln_center WHERE cve_status = 2 AND is_export IN (0,3) and organizate_id = 1) AND create_time >= '%s'` + } else { + var s string + for _, v := range cves { + s += "'" + v + "'," + } + if len(s) > 1 { + s = s[:len(s)-1] + } + sql = `SELECT * FROM cve_issue_template WHERE cve_id IN (SELECT DISTINCT cve_id FROM cve_vuln_center WHERE cve_status = 2 AND +is_export IN (0,3) and organizate_id = 1) AND create_time >= '%s'` + ` AND cve_num in (` + s + `)` + } + sql = fmt.Sprintf(sql, startTime) o := orm.NewOrm() _, err = o.Raw(sql).QueryRows(&issueTemp) diff --git a/cve-vulner-manager/models/login.go b/cve-vulner-manager/models/login.go index 62dcd79360008093912dba596c0bf9372527a85d..b8523465e4dc0664874e200d51ab6b1c964fbab6 100644 --- a/cve-vulner-manager/models/login.go +++ b/cve-vulner-manager/models/login.go @@ -1,14 +1,15 @@ package models import ( - "github.com/astaxie/beego/orm" "time" + + "github.com/astaxie/beego/orm" ) func GetCveUserByUser(username, pwd string) (maps []orm.Params, err error) { o := orm.NewOrm() var num int64 - num, err = o.Raw("select user_id FROM cve_other_user WHERE user_name=? and pass_word=?", + num, err = o.Raw("select user_id,expiration_time,aes_key FROM cve_other_user WHERE user_name=? and pass_word=?", username, pwd).Values(&maps) if err == nil && num > 0 { return maps, nil diff --git a/cve-vulner-manager/models/uploadcve.go b/cve-vulner-manager/models/uploadcve.go index 9530fa374cd9db6813fa61e72890f8168f79539e..2af55db38e10d4a865536eb711afb66d65345673 100644 --- a/cve-vulner-manager/models/uploadcve.go +++ b/cve-vulner-manager/models/uploadcve.go @@ -883,7 +883,7 @@ func CreateOriginCve(CveData common.CveOriginData, ou *OriginUpstream, od *Origi typ := osv[k] typ.CveId = num } - if osvnum, err := o.Insert(osv); err == nil { + if osvnum, err := o.InsertMulti(len(osv), osv); err == nil { logs.Info("CreateOriginCve, insert cve_origin_upstream_vul_type success, "+ "osvnum:", osvnum, ", cveNum: ", ou.Ids) } else { diff --git a/cve-vulner-manager/taskhandler/excel.go b/cve-vulner-manager/taskhandler/excel.go index 744466c515d1d95dfc959b25941e8c8db36c1cec..b8624a8bc28f356258677937cd37dd7566ec6892 100644 --- a/cve-vulner-manager/taskhandler/excel.go +++ b/cve-vulner-manager/taskhandler/excel.go @@ -1099,8 +1099,8 @@ func ExtractPackageData(lp string) (pkgList []models.ExcelPackage, err error) { return } -func getDataUnaffect(startTime string) ([]models.IssueTemplate, error) { - issueTemp, err := models.GetUnffectIssueNumber(startTime) +func getDataUnaffect(startTime string, cves []string) ([]models.IssueTemplate, error) { + issueTemp, err := models.GetUnffectIssueNumber(startTime, cves) if err != nil || issueTemp == nil { logs.Info("No unaffected data needs to be processed, startTime: ", startTime) return issueTemp, err @@ -1132,6 +1132,9 @@ func getDateByGite(pkgList []models.ExcelPackage, startTime string, c chan<- []I logs.Info("No need to deal with ", v.Repo) continue } + if len(cves) != 0 { + rt = 0 + } for _, isTemp := range issueTemp { if len(cves) != 0 && !filterDataInSlice(isTemp.CveNum, cves) { continue @@ -1175,7 +1178,7 @@ func (ec *CveExcel) handleGiteData(c <-chan []IssueAndPkg, affectBranch string, func UnaffectIssueProc(affectBranch string, cvrfFileList map[string][]string, componentMap map[string]ComponentInfo, startTime, accessToken, owner string, unaffectcvrf *UnaffectCvrfSa, unaffectYear int, cves []string) { - data, err := getDataUnaffect(startTime) + data, err := getDataUnaffect(startTime, cves) if len(data) > 0 { for _, v := range data { issueExist, _ := GetCveSecurityNotice(v.CveNum, v.Repo, true)