mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-21 14:50:53 -08:00
feat(cli): add javadb metadata to version info (#3835)
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ import (
|
|||||||
|
|
||||||
awsScanner "github.com/aquasecurity/defsec/pkg/scanners/cloud/aws"
|
awsScanner "github.com/aquasecurity/defsec/pkg/scanners/cloud/aws"
|
||||||
"github.com/aquasecurity/trivy-db/pkg/metadata"
|
"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"
|
awscommands "github.com/aquasecurity/trivy/pkg/cloud/aws/commands"
|
||||||
"github.com/aquasecurity/trivy/pkg/commands/artifact"
|
"github.com/aquasecurity/trivy/pkg/commands/artifact"
|
||||||
"github.com/aquasecurity/trivy/pkg/commands/server"
|
"github.com/aquasecurity/trivy/pkg/commands/server"
|
||||||
@@ -32,6 +34,7 @@ import (
|
|||||||
type VersionInfo struct {
|
type VersionInfo struct {
|
||||||
Version string `json:",omitempty"`
|
Version string `json:",omitempty"`
|
||||||
VulnerabilityDB *metadata.Metadata `json:",omitempty"`
|
VulnerabilityDB *metadata.Metadata `json:",omitempty"`
|
||||||
|
JavaDB *metadata.Metadata `json:",omitempty"`
|
||||||
PolicyBundle *policy.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) {
|
func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer) {
|
||||||
var dbMeta *metadata.Metadata
|
var dbMeta *metadata.Metadata
|
||||||
|
var javadbMeta *metadata.Metadata
|
||||||
|
|
||||||
mc := metadata.NewClient(cacheDir)
|
mc := metadata.NewClient(cacheDir)
|
||||||
meta, _ := mc.Get() // nolint: errcheck
|
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
|
var pbMeta *policy.Metadata
|
||||||
pc, err := policy.NewClient(cacheDir, false)
|
pc, err := policy.NewClient(cacheDir, false)
|
||||||
if pc != nil && err == nil {
|
if pc != nil && err == nil {
|
||||||
@@ -1096,6 +1111,7 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
|
|||||||
b, _ := json.Marshal(VersionInfo{
|
b, _ := json.Marshal(VersionInfo{
|
||||||
Version: version,
|
Version: version,
|
||||||
VulnerabilityDB: dbMeta,
|
VulnerabilityDB: dbMeta,
|
||||||
|
JavaDB: javadbMeta,
|
||||||
PolicyBundle: pbMeta,
|
PolicyBundle: pbMeta,
|
||||||
})
|
})
|
||||||
fmt.Fprintln(outputWriter, string(b))
|
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())
|
`, 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 {
|
if pbMeta != nil {
|
||||||
output += fmt.Sprintf(`Policy Bundle:
|
output += fmt.Sprintf(`Policy Bundle:
|
||||||
Digest: %s
|
Digest: %s
|
||||||
|
|||||||
@@ -32,6 +32,11 @@ Vulnerability DB:
|
|||||||
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
|
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
|
||||||
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
||||||
DownloadedAt: 2022-03-02 10:03:38.383312 +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:
|
Policy Bundle:
|
||||||
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
||||||
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
|
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
|
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
|
||||||
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
|
||||||
DownloadedAt: 2022-03-02 10:03:38.383312 +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:
|
Policy Bundle:
|
||||||
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
|
||||||
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
|
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 {
|
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