Files
trivy/pkg/cloud/cache/load.go
Liam Galvin b259b25ce4 feat: Add AWS Cloud scanning (#2493)
* feat: Added AWS Cloud scanning

Co-authored-by: Owen Rumney <owen.rumney@aquasec.com>
2022-08-11 14:59:32 +01:00

60 lines
1.2 KiB
Go

package cache
import (
"encoding/json"
"os"
"github.com/aquasecurity/trivy/pkg/cloud/report"
)
func (c *Cache) loadMetadata() (*Metadata, error) {
metadataFile := c.getMetadataPath()
m, err := os.Open(metadataFile)
if err != nil {
return nil, ErrCacheNotFound
}
var metadata Metadata
if err := json.NewDecoder(m).Decode(&metadata); err != nil {
return nil, err
}
return &metadata, nil
}
func (c *Cache) LoadReport(services ...string) (*report.Report, error) {
metadata, err := c.loadMetadata()
if err != nil {
return nil, err
}
base := report.New(c.provider, c.accountID, c.region, nil, nil)
for _, service := range services {
if !contains(metadata.ServicesInScope, service) {
continue
}
serviceFile := c.getServicePath(service)
s, err := os.Open(serviceFile)
if err != nil {
return nil, err
}
var serviceRecord Record
if err := json.NewDecoder(s).Decode(&serviceRecord); err != nil {
return nil, err
}
base.AddResultsForService(service, serviceRecord.Results, serviceRecord.CreationTime)
}
return base, nil
}
func contains(s []string, e string) bool {
for _, a := range s {
if a == e {
return true
}
}
return false
}