diff --git a/src/main/dast/CxDastEnvironment.ts b/src/main/dast/CxDastEnvironment.ts new file mode 100644 index 0000000..06a8d91 --- /dev/null +++ b/src/main/dast/CxDastEnvironment.ts @@ -0,0 +1,35 @@ +export default class CxDastEnvironment { + id: string; + name: string; + url: string; + scanType: string; + createdAt: string; + riskRating: string; + lastScanTime: string; + lastStatus: string + + static parseDastEnvironment(resultObject: any): CxDastEnvironment[] { + let environments: CxDastEnvironment[] = []; + + const parseDastEnvironmentResult = (result: any): CxDastEnvironment => { + const environment = new CxDastEnvironment(); + environment.id = result.EnvironmentID; + environment.name = result.Domain; + environment.url = result.URL; + environment.scanType = result.ScanType; + environment.createdAt = result.Created; + environment.riskRating = result.RiskRating; + environment.lastScanTime = result.LastScanTime; + environment.lastStatus = result.LastStatus; + return environment; + } + + if (resultObject instanceof Array) { + environments = resultObject.map((result: any) => parseDastEnvironmentResult(result)); + } else { + const environment = parseDastEnvironmentResult(resultObject) + environments.push(environment); + } + return environments; + } +} diff --git a/src/main/wrapper/CxConstants.ts b/src/main/wrapper/CxConstants.ts index cdc8d35..421330b 100644 --- a/src/main/wrapper/CxConstants.ts +++ b/src/main/wrapper/CxConstants.ts @@ -30,6 +30,7 @@ export enum CxConstants { CMD_AUTH = "auth", SUB_CMD_VALIDATE = "validate", CMD_PROJECT = "project", + CMD_DAST_ENVIRONMENTS = 'dast-environments', SUB_CMD_BRANCHES = "branches", CMD_SCAN = "scan", SUB_CMD_SHOW = "show", @@ -98,6 +99,7 @@ export enum CxConstants { SCAN_SECRETS = "CxSecrets", SCAN_CONTAINERS_REALTIME = "CxContainersRealtime", PROJECT_TYPE = "CxProject", + DAST_ENVIRONMENT_TYPE = 'CxDastEnvironment', PREDICATE_TYPE = "CxPredicate", CODE_BASHING_TYPE = "CxCodeBashing", KICS_REALTIME_TYPE = "CxKicsRealTime", diff --git a/src/main/wrapper/CxWrapper.ts b/src/main/wrapper/CxWrapper.ts index 2725051..6e2d4d1 100644 --- a/src/main/wrapper/CxWrapper.ts +++ b/src/main/wrapper/CxWrapper.ts @@ -275,6 +275,16 @@ export class CxWrapper { return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.PROJECT_TYPE); } + async dastEnvironmentsList(filters: string): Promise { + const validated_filters = this.filterArguments(filters); + const commands: string[] = ([CxConstants.CMD_DAST_ENVIRONMENTS, CxConstants.SUB_CMD_LIST] as string[]).concat( + validated_filters + ); + commands.push(...this.initializeCommands(true)); + const exec = new ExecutionService(); + return await exec.executeCommands(this.config.pathToExecutable, commands, CxConstants.DAST_ENVIRONMENT_TYPE); + } + async projectBranches(projectId: string, filters: string): Promise { // Verify and add possible branch filter by name const validated_filters = this.filterArguments(CxConstants.BRANCH_NAME + filters) diff --git a/src/main/wrapper/ExecutionService.ts b/src/main/wrapper/ExecutionService.ts index 0df0136..2ba9cd3 100644 --- a/src/main/wrapper/ExecutionService.ts +++ b/src/main/wrapper/ExecutionService.ts @@ -27,6 +27,7 @@ import CxOssResult from "../oss/CxOss"; import CxSecretsResult from "../secrets/CxSecrets"; import CxContainerRealtimeResult from "../containersRealtime/CxContainerRealtime"; import CxIacResult from "../iacRealtime/CxIac"; +import CxDastEnvironment from "../dast/CxDastEnvironment"; let skipValue = false; const fileSourceFlag = "--file-source" @@ -229,6 +230,10 @@ export class ExecutionService { const projects = CxProject.parseProject(resultObject); cxCommandOutput.payload = projects; break; + case CxConstants.DAST_ENVIRONMENT_TYPE: + const environments = CxDastEnvironment.parseDastEnvironment(resultObject); + cxCommandOutput.payload = environments; + break; case CxConstants.CODE_BASHING_TYPE: const codeBashing = CxCodeBashing.parseCodeBashing(resultObject); cxCommandOutput.payload = codeBashing;