Skip to content

Commit 2017948

Browse files
committed
Merge remote-tracking branch 'upstream/dev' into pr/eranturgeman/241
2 parents c390cd1 + 63e89a6 commit 2017948

File tree

8 files changed

+52
-50
lines changed

8 files changed

+52
-50
lines changed

cli/scancommands.go

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func ScanCmd(c *components.Context) error {
206206
if err != nil {
207207
return err
208208
}
209-
xrayVersion, xscVersion, err := GetJfrogServicesVersion(serverDetails)
209+
xrayVersion, xscVersion, err := xsc.GetJfrogServicesVersion(serverDetails)
210210
if err != nil {
211211
return err
212212
}
@@ -453,7 +453,7 @@ func CreateAuditCmd(c *components.Context) (string, string, *coreConfig.ServerDe
453453
if err != nil {
454454
return "", "", nil, nil, err
455455
}
456-
xrayVersion, xscVersion, err := GetJfrogServicesVersion(serverDetails)
456+
xrayVersion, xscVersion, err := xsc.GetJfrogServicesVersion(serverDetails)
457457
if err != nil {
458458
return "", "", nil, nil, err
459459
}
@@ -715,7 +715,7 @@ func DockerScan(c *components.Context, image string) error {
715715
if err != nil {
716716
return err
717717
}
718-
xrayVersion, xscVersion, err := GetJfrogServicesVersion(serverDetails)
718+
xrayVersion, xscVersion, err := xsc.GetJfrogServicesVersion(serverDetails)
719719
if err != nil {
720720
return err
721721
}
@@ -749,26 +749,3 @@ func DockerScan(c *components.Context, image string) error {
749749
}
750750
return progressbar.ExecWithProgress(containerScanCommand)
751751
}
752-
753-
func GetJfrogServicesVersion(serverDetails *coreConfig.ServerDetails) (xrayVersion, xscVersion string, err error) {
754-
xrayManager, err := xray.CreateXrayServiceManager(serverDetails)
755-
if err != nil {
756-
return
757-
}
758-
xrayVersion, err = xrayManager.GetVersion()
759-
if err != nil {
760-
return
761-
}
762-
log.Debug("Xray version: " + xrayVersion)
763-
xscService, err := xsc.CreateXscService(xrayVersion, serverDetails)
764-
if err != nil {
765-
return
766-
}
767-
xscVersion, e := xscService.GetVersion()
768-
if e != nil {
769-
log.Debug("Using Xray: " + e.Error())
770-
return
771-
}
772-
log.Debug("XSC version: " + xscVersion)
773-
return
774-
}

commands/enrich/enrich.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package enrich
22

33
import (
4-
"encoding/json"
54
"encoding/xml"
65
"errors"
76
"fmt"
7+
"github.com/jfrog/jfrog-cli-security/utils/results/output"
88
"os"
99
"os/exec"
1010
"path/filepath"
@@ -18,7 +18,6 @@ import (
1818
"github.com/jfrog/jfrog-cli-security/commands/enrich/enrichgraph"
1919
"github.com/jfrog/jfrog-cli-security/utils"
2020
"github.com/jfrog/jfrog-cli-security/utils/results"
21-
"github.com/jfrog/jfrog-cli-security/utils/results/output"
2221
"github.com/jfrog/jfrog-cli-security/utils/techutils"
2322
"github.com/jfrog/jfrog-cli-security/utils/xray"
2423
"github.com/jfrog/jfrog-client-go/artifactory/services/fspatterns"
@@ -28,6 +27,7 @@ import (
2827
"github.com/jfrog/jfrog-client-go/utils/io/fileutils"
2928
"github.com/jfrog/jfrog-client-go/utils/log"
3029
"github.com/jfrog/jfrog-client-go/xray/services"
30+
orderedJson "github.com/virtuald/go-ordered-json"
3131
)
3232

3333
type FileContext func(string) parallel.TaskFunc
@@ -76,8 +76,8 @@ func AppendVulnsToJson(cmdResults *results.SecurityCommandResults) error {
7676
if err != nil {
7777
return fmt.Errorf("error reading file: %s", err.Error())
7878
}
79-
var data map[string]interface{}
80-
err = json.Unmarshal(fileContent, &data)
79+
var data orderedJson.OrderedObject
80+
err = orderedJson.Unmarshal(fileContent, &data)
8181
if err != nil {
8282
return fmt.Errorf("error parsing JSON: %s", err.Error())
8383
}
@@ -94,7 +94,7 @@ func AppendVulnsToJson(cmdResults *results.SecurityCommandResults) error {
9494
vulnerabilities = append(vulnerabilities, vulnerability)
9595
}
9696
}
97-
data["vulnerabilities"] = vulnerabilities
97+
data = append(data, orderedJson.Member{Key: "vulnerabilities", Value: vulnerabilities})
9898
return output.PrintJson(data)
9999
}
100100

commands/scan/scan.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/jfrog/jfrog-cli-security/utils/techutils"
2727
"github.com/jfrog/jfrog-cli-security/utils/xray"
2828
"github.com/jfrog/jfrog-cli-security/utils/xray/scangraph"
29+
"github.com/jfrog/jfrog-cli-security/utils/xsc"
2930
xrayUtils "github.com/jfrog/jfrog-client-go/xray/services/utils"
3031
"golang.org/x/sync/errgroup"
3132

@@ -624,5 +625,9 @@ func directDepsListFromVulnerabilities(scanResult ...services.ScanResponse) *[]s
624625
}
625626

626627
func ConditionalUploadDefaultScanFunc(serverDetails *config.ServerDetails, fileSpec *spec.SpecFiles, threads int, scanOutputFormat format.OutputFormat) error {
627-
return NewScanCommand().SetServerDetails(serverDetails).SetSpec(fileSpec).SetThreads(threads).SetOutputFormat(scanOutputFormat).SetFail(true).SetPrintExtendedTable(false).Run()
628+
xrayVersion, xscVersion, err := xsc.GetJfrogServicesVersion(serverDetails)
629+
if err != nil {
630+
return err
631+
}
632+
return NewScanCommand().SetServerDetails(serverDetails).SetXrayVersion(xrayVersion).SetXscVersion(xscVersion).SetSpec(fileSpec).SetThreads(threads).SetOutputFormat(scanOutputFormat).SetFail(true).SetPrintExtendedTable(false).Run()
628633
}

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ require (
1616
github.com/owenrumney/go-sarif/v2 v2.3.0
1717
github.com/stretchr/testify v1.9.0
1818
github.com/urfave/cli v1.22.16
19+
github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74
1920
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
2021
golang.org/x/sync v0.10.0
2122
golang.org/x/text v0.21.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ github.com/urfave/cli v1.22.16 h1:MH0k6uJxdwdeWQTwhSO42Pwr4YLrNLwBtg1MRgTqPdQ=
257257
github.com/urfave/cli v1.22.16/go.mod h1:EeJR6BKodywf4zciqrdw6hpCPk68JO9z5LazXZMn5Po=
258258
github.com/vbauerster/mpb/v8 v8.8.3 h1:dTOByGoqwaTJYPubhVz3lO5O6MK553XVgUo33LdnNsQ=
259259
github.com/vbauerster/mpb/v8 v8.8.3/go.mod h1:JfCCrtcMsJwP6ZwMn9e5LMnNyp3TVNpUWWkN+nd4EWk=
260+
github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74 h1:JwtAtbp7r/7QSyGz8mKUbYJBg2+6Cd7OjM8o/GNOcVo=
261+
github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74/go.mod h1:RmMWU37GKR2s6pgrIEB4ixgpVCt/cf7dnJv3fuH1J1c=
260262
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
261263
github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
262264
github.com/xanzy/go-gitlab v0.110.0 h1:hsFIFp01v/0D0sdUXoZfRk6CROzZbHQplk6NzKSFKhc=

utils/results/output/resultwriter.go

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,17 @@ func (rw *ResultsWriter) PrintScanResults() error {
106106
// Don't print if there are no results and only errors.
107107
return nil
108108
}
109+
// Helper for Debugging purposes, print the raw results to the log
110+
if err := rw.printRawResultsLog(); err != nil {
111+
return err
112+
}
113+
109114
switch rw.format {
110115
case format.Table:
111116
return rw.printTables()
112117
case format.SimpleJson:
113118
// Helper for Debugging purposes, print the raw results to the log
114-
if err := rw.printOrSaveRawResults(false); err != nil {
119+
if err := rw.printRawResultsLog(); err != nil {
115120
return err
116121
}
117122
simpleJson, err := rw.createResultsConvertor(false).ConvertToSimpleJson(rw.commandResults)
@@ -123,7 +128,7 @@ func (rw *ResultsWriter) PrintScanResults() error {
123128
return PrintJson(rw.commandResults.GetScaScansXrayResults())
124129
case format.Sarif:
125130
// Helper for Debugging purposes, print the raw results to the log
126-
if err := rw.printOrSaveRawResults(false); err != nil {
131+
if err := rw.printRawResultsLog(); err != nil {
127132
return err
128133
}
129134
return rw.printSarif()
@@ -166,22 +171,12 @@ func PrintJson(output interface{}) (err error) {
166171
return nil
167172
}
168173

169-
// If "CI" env var is true, print raw JSON of the results. Otherwise, save it as a file and print a link to it.
170-
// If printMsg is true, print it to the console. Otherwise, print the message to the log.
171-
func (rw *ResultsWriter) printOrSaveRawResults(printMsg bool) (err error) {
174+
// Log (Debug) the inner results.SecurityCommandResults object object as a JSON string.
175+
func (rw *ResultsWriter) printRawResultsLog() (err error) {
172176
if !rw.commandResults.HasInformation() {
173177
log.Debug("No information to print")
174178
return
175179
}
176-
if printMsg && !utils.IsCI() {
177-
// Save the results to a file and print a link to it.
178-
var resultsPath string
179-
if resultsPath, err = WriteJsonResults(rw.commandResults); err != nil {
180-
return
181-
}
182-
printMessage(coreutils.PrintTitle("The full scan results are available here: ") + coreutils.PrintLink(resultsPath))
183-
return
184-
}
185180
// Print the raw results to console.
186181
var msg string
187182
if msg, err = utils.GetAsJsonString(rw.commandResults, false, true); err != nil {
@@ -198,9 +193,6 @@ func (rw *ResultsWriter) printTables() (err error) {
198193
return
199194
}
200195
printMessages(rw.messages)
201-
if err = rw.printOrSaveRawResults(true); err != nil {
202-
return
203-
}
204196
if utils.IsScanRequested(rw.commandResults.CmdType, utils.ScaScan, rw.subScansPerformed...) {
205197
if rw.hasViolationContext {
206198
if err = PrintViolationsTable(tableContent, rw.commandResults.CmdType, rw.printExtended); err != nil {

utils/utils.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"encoding/hex"
77
"encoding/json"
88
"fmt"
9+
orderedJson "github.com/virtuald/go-ordered-json"
910
"os"
1011
"path/filepath"
1112
"strings"
@@ -136,7 +137,7 @@ func UniqueUnion[T comparable](arr []T, elements ...T) []T {
136137

137138
func GetAsJsonBytes(output interface{}, escapeValues, indent bool) (results []byte, err error) {
138139
if escapeValues {
139-
if results, err = json.Marshal(output); errorutils.CheckError(err) != nil {
140+
if results, err = orderedJson.Marshal(output); errorutils.CheckError(err) != nil {
140141
return
141142
}
142143
} else {

utils/xsc/xscmanager.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
55
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
66
clientconfig "github.com/jfrog/jfrog-client-go/config"
7+
"github.com/jfrog/jfrog-client-go/utils/log"
78
xscservices "github.com/jfrog/jfrog-client-go/xray/services/xsc"
89
"github.com/jfrog/jfrog-client-go/xsc"
910
xscservicesutils "github.com/jfrog/jfrog-client-go/xsc/services/utils"
@@ -47,3 +48,26 @@ func createDeprecatedXscServiceManager(serviceDetails *config.ServerDetails) (*x
4748
}
4849
return xsc.New(serviceConfig)
4950
}
51+
52+
func GetJfrogServicesVersion(serverDetails *config.ServerDetails) (xrayVersion, xscVersion string, err error) {
53+
xrayManager, err := xray.CreateXrayServiceManager(serverDetails)
54+
if err != nil {
55+
return
56+
}
57+
xrayVersion, err = xrayManager.GetVersion()
58+
if err != nil {
59+
return
60+
}
61+
log.Debug("Xray version: " + xrayVersion)
62+
xscService, err := CreateXscService(xrayVersion, serverDetails)
63+
if err != nil {
64+
return
65+
}
66+
xscVersion, e := xscService.GetVersion()
67+
if e != nil {
68+
log.Debug("Using Xray: " + e.Error())
69+
return
70+
}
71+
log.Debug("XSC version: " + xscVersion)
72+
return
73+
}

0 commit comments

Comments
 (0)