[BreakingChange]Remove models.ScanHistory
This commit is contained in:
@@ -397,8 +397,7 @@ func (p *ReportCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}
|
||||
}
|
||||
}
|
||||
|
||||
var history models.ScanHistory
|
||||
history, err = loadOneScanHistory(dir)
|
||||
rs, err := loadScanResults(dir)
|
||||
if err != nil {
|
||||
util.Log.Error(err)
|
||||
return subcommands.ExitFailure
|
||||
@@ -406,7 +405,7 @@ func (p *ReportCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}
|
||||
util.Log.Infof("Loaded: %s", dir)
|
||||
|
||||
var results []models.ScanResult
|
||||
for _, r := range history.ScanResults {
|
||||
for _, r := range rs {
|
||||
if p.refreshCve || needToRefreshCve(r) {
|
||||
util.Log.Debugf("need to refresh")
|
||||
if c.Conf.CveDBType == "sqlite3" && c.Conf.CveDBURL == "" {
|
||||
@@ -442,20 +441,19 @@ func (p *ReportCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}
|
||||
}
|
||||
|
||||
if p.diff {
|
||||
currentHistory := models.ScanHistory{ScanResults: results}
|
||||
previousHistory, err := loadPreviousScanHistory(currentHistory)
|
||||
previous, err := loadPrevious(results)
|
||||
if err != nil {
|
||||
util.Log.Error(err)
|
||||
return subcommands.ExitFailure
|
||||
}
|
||||
|
||||
history, err = diff(currentHistory, previousHistory)
|
||||
diff, err := diff(results, previous)
|
||||
if err != nil {
|
||||
util.Log.Error(err)
|
||||
return subcommands.ExitFailure
|
||||
}
|
||||
results = []models.ScanResult{}
|
||||
for _, r := range history.ScanResults {
|
||||
for _, r := range diff {
|
||||
filled, _ := r.FillCveDetail()
|
||||
results = append(results, *filled)
|
||||
}
|
||||
|
||||
@@ -152,14 +152,14 @@ func (p *TuiCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) s
|
||||
return subcommands.ExitFailure
|
||||
}
|
||||
|
||||
history, err := loadOneScanHistory(jsonDir)
|
||||
results, err := loadScanResults(jsonDir)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to read from JSON: %s", err)
|
||||
return subcommands.ExitFailure
|
||||
}
|
||||
|
||||
var results []models.ScanResult
|
||||
for _, r := range history.ScanResults {
|
||||
var filledResults []models.ScanResult
|
||||
for _, r := range results {
|
||||
if p.refreshCve || needToRefreshCve(r) {
|
||||
if c.Conf.CveDBType == "sqlite3" {
|
||||
if _, err := os.Stat(c.Conf.CveDBPath); os.IsNotExist(err) {
|
||||
@@ -179,11 +179,10 @@ func (p *TuiCmd) Execute(_ context.Context, f *flag.FlagSet, _ ...interface{}) s
|
||||
log.Errorf("Failed to write JSON: %s", err)
|
||||
return subcommands.ExitFailure
|
||||
}
|
||||
results = append(results, *filled)
|
||||
filledResults = append(filledResults, *filled)
|
||||
} else {
|
||||
results = append(results, r)
|
||||
filledResults = append(filledResults, r)
|
||||
}
|
||||
}
|
||||
history.ScanResults = results
|
||||
return report.RunTui(history)
|
||||
return report.RunTui(filledResults)
|
||||
}
|
||||
|
||||
@@ -136,13 +136,11 @@ func loadOneServerScanResult(jsonFile string) (result models.ScanResult, err err
|
||||
return
|
||||
}
|
||||
|
||||
// loadOneScanHistory read JSON data
|
||||
func loadOneScanHistory(jsonDir string) (scanHistory models.ScanHistory, err error) {
|
||||
var results []models.ScanResult
|
||||
// loadScanResults read JSON data
|
||||
func loadScanResults(jsonDir string) (results models.ScanResults, err error) {
|
||||
var files []os.FileInfo
|
||||
if files, err = ioutil.ReadDir(jsonDir); err != nil {
|
||||
err = fmt.Errorf("Failed to read %s: %s", jsonDir, err)
|
||||
return
|
||||
return nil, fmt.Errorf("Failed to read %s: %s", jsonDir, err)
|
||||
}
|
||||
for _, f := range files {
|
||||
if filepath.Ext(f.Name()) != ".json" || strings.HasSuffix(f.Name(), "_diff.json") {
|
||||
@@ -152,18 +150,13 @@ func loadOneScanHistory(jsonDir string) (scanHistory models.ScanHistory, err err
|
||||
var r models.ScanResult
|
||||
path := filepath.Join(jsonDir, f.Name())
|
||||
if r, err = loadOneServerScanResult(path); err != nil {
|
||||
return
|
||||
return nil, err
|
||||
}
|
||||
|
||||
results = append(results, r)
|
||||
}
|
||||
if len(results) == 0 {
|
||||
err = fmt.Errorf("There is no json file under %s", jsonDir)
|
||||
return
|
||||
}
|
||||
|
||||
scanHistory = models.ScanHistory{
|
||||
ScanResults: results,
|
||||
return nil, fmt.Errorf("There is no json file under %s", jsonDir)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -201,13 +194,13 @@ func fillCveInfoFromOvalDB(r *models.ScanResult) (*models.ScanResult, error) {
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func loadPreviousScanHistory(current models.ScanHistory) (previous models.ScanHistory, err error) {
|
||||
func loadPrevious(current models.ScanResults) (previous models.ScanResults, err error) {
|
||||
var dirs jsonDirs
|
||||
if dirs, err = lsValidJSONDirs(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, result := range current.ScanResults {
|
||||
for _, result := range current {
|
||||
for _, dir := range dirs[1:] {
|
||||
var r models.ScanResult
|
||||
path := filepath.Join(dir, result.ServerName+".json")
|
||||
@@ -215,7 +208,8 @@ func loadPreviousScanHistory(current models.ScanHistory) (previous models.ScanHi
|
||||
continue
|
||||
}
|
||||
if r.Family == result.Family && r.Release == result.Release {
|
||||
previous.ScanResults = append(previous.ScanResults, r)
|
||||
previous = append(previous, r)
|
||||
util.Log.Infof("Privious json found: %s", path)
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -223,11 +217,11 @@ func loadPreviousScanHistory(current models.ScanHistory) (previous models.ScanHi
|
||||
return previous, nil
|
||||
}
|
||||
|
||||
func diff(currentHistory, previousHistory models.ScanHistory) (diffHistory models.ScanHistory, err error) {
|
||||
for _, currentResult := range currentHistory.ScanResults {
|
||||
func diff(current, previous models.ScanResults) (diff models.ScanResults, err error) {
|
||||
for _, currentResult := range current {
|
||||
found := false
|
||||
var previousResult models.ScanResult
|
||||
for _, previousResult = range previousHistory.ScanResults {
|
||||
for _, previousResult = range previous {
|
||||
if currentResult.ServerName == previousResult.ServerName {
|
||||
found = true
|
||||
break
|
||||
@@ -247,9 +241,9 @@ func diff(currentHistory, previousHistory models.ScanHistory) (diffHistory model
|
||||
currentResult.Packages = currentResult.Packages.UniqByName()
|
||||
}
|
||||
|
||||
diffHistory.ScanResults = append(diffHistory.ScanResults, currentResult)
|
||||
diff = append(diff, currentResult)
|
||||
}
|
||||
return diffHistory, err
|
||||
return diff, err
|
||||
}
|
||||
|
||||
func getNewCves(previousResult, currentResult models.ScanResult) (newVulninfos []models.VulnInfo) {
|
||||
|
||||
Reference in New Issue
Block a user