mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-12 07:40:48 -08:00
feat(cli): add javadb metadata to version info (#3835)
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -15,6 +16,7 @@ import (
|
||||
|
||||
awsScanner "github.com/aquasecurity/defsec/pkg/scanners/cloud/aws"
|
||||
"github.com/aquasecurity/trivy-db/pkg/metadata"
|
||||
javadb "github.com/aquasecurity/trivy-java-db/pkg/db"
|
||||
awscommands "github.com/aquasecurity/trivy/pkg/cloud/aws/commands"
|
||||
"github.com/aquasecurity/trivy/pkg/commands/artifact"
|
||||
"github.com/aquasecurity/trivy/pkg/commands/server"
|
||||
@@ -32,6 +34,7 @@ import (
|
||||
type VersionInfo struct {
|
||||
Version string `json:",omitempty"`
|
||||
VulnerabilityDB *metadata.Metadata `json:",omitempty"`
|
||||
JavaDB *metadata.Metadata `json:",omitempty"`
|
||||
PolicyBundle *policy.Metadata `json:",omitempty"`
|
||||
}
|
||||
|
||||
@@ -1073,6 +1076,7 @@ func NewVersionCommand(globalFlags *flag.GlobalFlagGroup) *cobra.Command {
|
||||
|
||||
func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer) {
|
||||
var dbMeta *metadata.Metadata
|
||||
var javadbMeta *metadata.Metadata
|
||||
|
||||
mc := metadata.NewClient(cacheDir)
|
||||
meta, _ := mc.Get() // nolint: errcheck
|
||||
@@ -1085,6 +1089,17 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
|
||||
}
|
||||
}
|
||||
|
||||
mcJava := javadb.NewMetadata(filepath.Join(cacheDir, "java-db"))
|
||||
metaJava, _ := mcJava.Get() // nolint: errcheck
|
||||
if !metaJava.UpdatedAt.IsZero() && !metaJava.NextUpdate.IsZero() && metaJava.Version != 0 {
|
||||
javadbMeta = &metadata.Metadata{
|
||||
Version: metaJava.Version,
|
||||
NextUpdate: metaJava.NextUpdate.UTC(),
|
||||
UpdatedAt: metaJava.UpdatedAt.UTC(),
|
||||
DownloadedAt: metaJava.DownloadedAt.UTC(),
|
||||
}
|
||||
}
|
||||
|
||||
var pbMeta *policy.Metadata
|
||||
pc, err := policy.NewClient(cacheDir, false)
|
||||
if pc != nil && err == nil {
|
||||
@@ -1096,6 +1111,7 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
|
||||
b, _ := json.Marshal(VersionInfo{
|
||||
Version: version,
|
||||
VulnerabilityDB: dbMeta,
|
||||
JavaDB: javadbMeta,
|
||||
PolicyBundle: pbMeta,
|
||||
})
|
||||
fmt.Fprintln(outputWriter, string(b))
|
||||
@@ -1110,6 +1126,15 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
|
||||
`, dbMeta.Version, dbMeta.UpdatedAt.UTC(), dbMeta.NextUpdate.UTC(), dbMeta.DownloadedAt.UTC())
|
||||
}
|
||||
|
||||
if javadbMeta != nil {
|
||||
output += fmt.Sprintf(`Java DB:
|
||||
Version: %d
|
||||
UpdatedAt: %s
|
||||
NextUpdate: %s
|
||||
DownloadedAt: %s
|
||||
`, javadbMeta.Version, javadbMeta.UpdatedAt.UTC(), javadbMeta.NextUpdate.UTC(), javadbMeta.DownloadedAt.UTC())
|
||||
}
|
||||
|
||||
if pbMeta != nil {
|
||||
output += fmt.Sprintf(`Policy Bundle:
|
||||
Digest: %s
|
||||
|
||||
@@ -32,6 +32,11 @@ Vulnerability DB:
|
||||
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
|
||||
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
||||
DownloadedAt: 2022-03-02 10:03:38.383312 +0000 UTC
|
||||
Java DB:
|
||||
Version: 1
|
||||
UpdatedAt: 2023-03-14 00:47:02.774253754 +0000 UTC
|
||||
NextUpdate: 2023-03-17 00:47:02.774253254 +0000 UTC
|
||||
DownloadedAt: 2023-03-14 03:04:55.058541039 +0000 UTC
|
||||
Policy Bundle:
|
||||
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
||||
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
|
||||
@@ -65,11 +70,16 @@ Vulnerability DB:
|
||||
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
|
||||
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
||||
DownloadedAt: 2022-03-02 10:03:38.383312 +0000 UTC
|
||||
Java DB:
|
||||
Version: 1
|
||||
UpdatedAt: 2023-03-14 00:47:02.774253754 +0000 UTC
|
||||
NextUpdate: 2023-03-17 00:47:02.774253254 +0000 UTC
|
||||
DownloadedAt: 2023-03-14 03:04:55.058541039 +0000 UTC
|
||||
Policy Bundle:
|
||||
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
||||
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
|
||||
`
|
||||
jsonOutput := `{"Version":"test","VulnerabilityDB":{"Version":2,"NextUpdate":"2022-03-02T12:07:07.99504023Z","UpdatedAt":"2022-03-02T06:07:07.99504083Z","DownloadedAt":"2022-03-02T10:03:38.383312Z"},"PolicyBundle":{"Digest":"sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd","DownloadedAt":"2023-03-01T17:06:08.191725-08:00"}}
|
||||
jsonOutput := `{"Version":"test","VulnerabilityDB":{"Version":2,"NextUpdate":"2022-03-02T12:07:07.99504023Z","UpdatedAt":"2022-03-02T06:07:07.99504083Z","DownloadedAt":"2022-03-02T10:03:38.383312Z"},"JavaDB":{"Version":1,"NextUpdate":"2023-03-17T00:47:02.774253254Z","UpdatedAt":"2023-03-14T00:47:02.774253754Z","DownloadedAt":"2023-03-14T03:04:55.058541039Z"},"PolicyBundle":{"Digest":"sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd","DownloadedAt":"2023-03-01T17:06:08.191725-08:00"}}
|
||||
`
|
||||
|
||||
tests := []struct {
|
||||
|
||||
1
pkg/commands/testdata/java-db/metadata.json
vendored
Normal file
1
pkg/commands/testdata/java-db/metadata.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"Version":1,"NextUpdate":"2023-03-17T00:47:02.774253254Z","UpdatedAt":"2023-03-14T00:47:02.774253754Z","DownloadedAt":"2023-03-14T03:04:55.058541039Z"}
|
||||
Reference in New Issue
Block a user