Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public static final FoDScanDescriptor startScanAdvanced(UnirestInstance unirest,
.queryString("remdiationScanPreferenceType", (req.getRemdiationScanPreferenceType() != null ?
FoDEnums.RemediationScanPreferenceType.valueOf(req.getRemdiationScanPreferenceType()) : FoDEnums.RemediationScanPreferenceType.NonRemediationScanOnly))
.queryString("inProgressScanActionType", (req.getInProgressScanActionType() != null ?
FoDEnums.InProgressScanActionType.valueOf(req.getInProgressScanActionType()) : FoDEnums.InProgressScanActionType.DoNotStartScan))
req.getInProgressScanActionType() : FoDEnums.InProgressScanActionType.DoNotStartScan.toString()))
.queryString("scanTool", req.getScanTool())
.queryString("scanToolVersion", req.getScanToolVersion())
.queryString("scanMethodType", req.getScanMethodType());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ public class FoDSastScanStartCommand extends AbstractFoDScanStartCommand {

@Option(names = {"--notes"})
private String notes;
@Option(names = {"--in-progress-action"}, descriptionKey = "fcli.fod.sast-scan.start.in-progress-action")
private FoDEnums.InProgressScanActionType inProgressScanActionType;
@Option(names = {"--entitlement-preference"}, descriptionKey = "fcli.fod.scan.entitlement-preference")
private FoDEnums.EntitlementPreferenceType entitlementPreferenceType;
@Mixin private CommonOptionMixins.RequiredFile scanFileMixin;

@Mixin private FoDRemediationScanPreferenceTypeMixins.OptionalOption remediationScanType;
Expand All @@ -49,27 +53,40 @@ public class FoDSastScanStartCommand extends AbstractFoDScanStartCommand {
@Override
protected FoDScanDescriptor startScan(UnirestInstance unirest, FoDReleaseDescriptor releaseDescriptor) {
String relId = releaseDescriptor.getReleaseId();
Boolean isRemediation = false;

// if we have requested remediation scan use it to find appropriate assessment type
if (remediationScanType != null && remediationScanType.getRemediationScanPreferenceType() != null) {
if (remediationScanType.getRemediationScanPreferenceType().equals(FoDEnums.RemediationScanPreferenceType.RemediationScanIfAvailable) ||
remediationScanType.getRemediationScanPreferenceType().equals(FoDEnums.RemediationScanPreferenceType.RemediationScanOnly)) {
isRemediation = true;
}
}

validateScanSetup(unirest, relId);

FoDScanSastStartRequest startScanRequest = FoDScanSastStartRequest.builder()
.isRemediationScan(isRemediation)
FoDEnums.RemediationScanPreferenceType remediationPref = remediationScanType.getRemediationScanPreferenceType();

boolean useAdvanced = entitlementPreferenceType != null || inProgressScanActionType != null;

FoDScanSastStartRequest.FoDScanSastStartRequestBuilder requestBuilder = FoDScanSastStartRequest.builder()
.scanMethodType("Other")
.notes(notes != null && !notes.isEmpty() ? notes : "")
.scanTool(FcliBuildProperties.INSTANCE.getFcliProjectName())
.scanToolVersion(FcliBuildProperties.INSTANCE.getFcliVersion())
.build();
.scanToolVersion(FcliBuildProperties.INSTANCE.getFcliVersion());

try (IProgressWriter progressWriter = progressWriterFactory.create()) {
if (useAdvanced) {
FoDEnums.InProgressScanActionType inProgressAction = inProgressScanActionType != null
? inProgressScanActionType : FoDEnums.InProgressScanActionType.Queue;
// FoD's start-scan-advanced expects 'CancelInProgressScan' rather than the enum's 'CancelScanInProgress'
String inProgressApiValue = inProgressAction == FoDEnums.InProgressScanActionType.CancelScanInProgress
? "CancelInProgressScan" : inProgressAction.name();
FoDScanSastStartRequest startScanRequest = requestBuilder
.entitlementPreferenceType(entitlementPreferenceType != null ? entitlementPreferenceType.name() : null)
.purchaseEntitlement(false)
.remdiationScanPreferenceType(remediationPref != null ? remediationPref.name() : null)
.inProgressScanActionType(inProgressApiValue)
.build();
return FoDScanSastHelper.startScanAdvanced(unirest, releaseDescriptor, startScanRequest, scanFileMixin.getFile(), progressWriter);
}
boolean isRemediation = remediationPref != null
&& (remediationPref.equals(FoDEnums.RemediationScanPreferenceType.RemediationScanIfAvailable)
|| remediationPref.equals(FoDEnums.RemediationScanPreferenceType.RemediationScanOnly));
FoDScanSastStartRequest startScanRequest = requestBuilder
.isRemediationScan(isRemediation)
.build();
return FoDScanSastHelper.startScanWithDefaults(unirest, releaseDescriptor, startScanRequest, scanFileMixin.getFile(), progressWriter);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -542,6 +542,7 @@ fcli.fod.sast-scan.start.remediation = Identify this scan as a remediation scan.
fcli.fod.sast-scan.start.skip-if-running = Check to see if static scan is already running before starting.
fcli.fod.sast-scan.start.entitlement-id = The Id of the entitlement to use for the scan.
fcli.fod.sast-scan.start.purchase-entitlement = Purchase an entitlement if one is not currently allocated or available.
fcli.fod.sast-scan.start.in-progress-action = The action to use if a scan is already in progress. Valid values: ${COMPLETION-CANDIDATES}. Defaults to 'Queue' when this or '--entitlement-preference' is specified; otherwise the FoD-side default applies.
fcli.fod.sast-scan.start.notes = Scan notes.
fcli.fod.sast-scan.start.file = Absolute path of the ScanCentral package (.Zip) file to upload.
fcli.fod.sast-scan.start.validate-entitlement = Validate if an entitlement has been set and is still valid.
Expand Down
Loading