Skip to content

Commit af613d5

Browse files
authored
Merge branch 'fortify:dev/v3.x' into develop
2 parents 4ea3fb4 + e3812c1 commit af613d5

File tree

66 files changed

+2090
-581
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2090
-581
lines changed

.github/workflows/ci.yml

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -439,13 +439,6 @@ jobs:
439439
mkdir -p "${versionDir}"
440440
unzip tmp/docs-jekyll.zip -d "${versionDir}"
441441
442-
# Recreate version data files, which may be empty if no versions available
443-
mkdir -p _data/versions
444-
touch _data/versions/release.yml
445-
touch _data/versions/dev.yml
446-
ls -d v*.*.* | sort -rV | while read line; do echo "- '$line'"; done > _data/versions/release.yml
447-
ls -d dev_* | sort | while read line; do echo "- '$line'"; done > _data/versions/dev.yml
448-
449442
# Update symlinks based on available versions, processing versions in ascending order
450443
# to replace previous links with a newer version if appropriate. For example, 'latest'
451444
# will first point to the oldest version, then replaced with second-oldest version, ...,
@@ -456,6 +449,18 @@ jobs:
456449
ln -sfT $line $(echo "$line" | cut -d. -f 1,2) # v<major>.<minor>
457450
done
458451
452+
# Same for dev_*, but only generating latest_dev symlink
453+
ls -d dev_* | sort -V | while read line; do
454+
ln -sfT $line latest_dev
455+
done
456+
457+
# Recreate version data files, which may be empty if no versions available
458+
mkdir -p _data/versions
459+
touch _data/versions/release.yml
460+
touch _data/versions/dev.yml
461+
ls -d v*.*.* | sort -rV | while read line; do echo "- '$line'"; done > _data/versions/release.yml
462+
ls -d dev_* | sort | while read line; do echo "- '$line'"; done > _data/versions/dev.yml
463+
459464
git config user.name github-actions
460465
git config user.email github-actions@fortify.com
461466
git add .

fcli-core/fcli-action/src/main/resources/com/fortify/cli/generic_action/actions/build-time/ci-envvars.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,22 @@ formatters:
222222
tasks. The `SAST_WAIT_EXTRA_OPTS` environment variable can be used to pass extra options to
223223
the `fcli sc-sast scan wait-for` command, for example to adjust the polling interval or timeout.
224224
postScan:
225+
- names: AVIATOR_URL\nAVIATOR_TOKEN\nAVIATOR_LOGIN_EXTRA_OPTS
226+
desc: >-
227+
Aviator URL and JWT token to use for Aviator operations (see below). The `AVIATOR_TOKEN`
228+
environment variable should hold the actual token contents; prefixes like `file:` or `string:`
229+
(like the `--token` option on the `fcli aviator session login` command) are not supported. The
230+
`AVIATOR_LOGIN_EXTRA_OPTS` environment variable can be used to pass additional options to the
231+
`fcli aviator session login` command.
232+
- names: DO_AVIATOR_AUDIT\nAVIATOR_APP\nAVIATOR_AUDIT_EXTRA_OPTS\nAVIATOR_WAIT_EXTRA_OPTS
233+
desc: >-
234+
If `DO_AVIATOR_AUDIT` is not set to `false`, and Aviator URL and token have been configured,
235+
scan results will be sent to Aviator for AI-driven auditing. The Aviator application name
236+
can optionally be configured through `AVIATOR_APP`, which defaults to the SSC application name.
237+
The `AVIATOR_AUDIT_EXTRA_OPTS` environment variable can be used to pass extra options to the
238+
`fcli aviator ssc audit` command, for example to adjust tag mappings. The `AVIATOR_WAIT_EXTRA_OPTS`
239+
environment variable can be used to pass extra options to the `fcli ssc artifact wait-for` command,
240+
which will be run to wait for SSC to process the audited results.
225241
- names: DO_APPVERSION_SUMMARY\nAPPVERSION_SUMMARY_ACTION\nAPPVERSION_SUMMARY_EXTRA_OPTS
226242
desc: >-
227243
If `DO_APPVERSION_SUMMARY` is not set to `false`, an application version summary will be generated using the

fcli-core/fcli-action/src/main/resources/com/fortify/cli/generic_action/actions/zip/ci.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ steps:
7979
logoutOpts: -u=SSC_USER -p=SSC_PASSWORD
8080
# Define some common variables, based on the above
8181
- var.set:
82-
sessionName: ci-${#uuid()}
82+
global.sessionName: ci-${#uuid()}
8383
loginCmd: fcli ${module} session login
8484
logoutCmd: fcli ${module} session logout
8585
moduleUpperCase: ${module.toUpperCase()}
@@ -90,10 +90,10 @@ steps:
9090
# new, module-specific session.
9191
- with:
9292
sessions:
93-
- login: ${#fcliCmd(loginEnvPrefix, loginCmd)} --${module}-session ${sessionName} ${#optsFromEnv(loginOpts)}
94-
logout: ${#fcliCmd(logoutEnvPrefix, logoutCmd)} --${module}-session ${sessionName} ${#optsFromEnv(logoutOpts)}
93+
- login: ${#fcliCmd(loginEnvPrefix, loginCmd)} --${module}-session ${global.sessionName} ${#optsFromEnv(loginOpts)}
94+
logout: ${#fcliCmd(logoutEnvPrefix, logoutCmd)} --${module}-session ${global.sessionName} ${#optsFromEnv(logoutOpts)}
9595
do:
9696
- run.fcli:
97-
ci: ${#actionCmd(ciEnvPrefix, module, 'ci')} --${module}-session=${sessionName}
97+
ci: ${#actionCmd(ciEnvPrefix, module, 'ci')} --${module}-session=${global.sessionName}
9898

9999

fcli-core/fcli-app/src/main/java/com/fortify/cli/app/FortifyCLIVersionProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
*******************************************************************************/
1313
package com.fortify.cli.app;
1414

15-
import com.fortify.cli.common.util.FcliBuildPropertiesHelper;
15+
import com.fortify.cli.common.util.FcliBuildProperties;
1616

1717
import picocli.CommandLine.IVersionProvider;
1818

1919
public class FortifyCLIVersionProvider implements IVersionProvider {
2020
@Override
2121
public final String[] getVersion() throws Exception {
22-
return new String[] {FcliBuildPropertiesHelper.getFcliBuildInfo()};
22+
return new String[] {FcliBuildProperties.INSTANCE.getFcliBuildInfo()};
2323
}
2424
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/**
2+
* Copyright 2023 Open Text.
3+
*
4+
* The only warranties for products and services of Open Text
5+
* and its affiliates and licensors ("Open Text") are as may
6+
* be set forth in the express warranty statements accompanying
7+
* such products and services. Nothing herein should be construed
8+
* as constituting an additional warranty. Open Text shall not be
9+
* liable for technical or editorial errors or omissions contained
10+
* herein. The information contained herein is subject to change
11+
* without notice.
12+
*/
13+
package com.fortify.cli.app.runner.util;
14+
15+
import java.util.Properties;
16+
import java.util.function.Function;
17+
import java.util.stream.Collectors;
18+
import java.util.stream.Stream;
19+
20+
import com.fortify.cli.common.action.helper.ActionSchemaVersionHelper;
21+
import com.fortify.cli.common.util.FcliBuildProperties;
22+
import com.fortify.cli.fod._common.scan.helper.FoDScanStatus;
23+
import com.fortify.cli.sc_dast.scan.helper.SCDastScanStatus;
24+
import com.fortify.cli.sc_sast.scan.helper.SCSastScanJobArtifactState;
25+
import com.fortify.cli.sc_sast.scan.helper.SCSastScanJobState;
26+
import com.fortify.cli.ssc.artifact.helper.SSCArtifactStatus;
27+
28+
/**
29+
*
30+
* @author Ruud Senden
31+
*/
32+
public class FortifyCLIResourceBundlePropertiesHelper {
33+
protected static final Properties getResourceBundleProperties() {
34+
var props = new Properties();
35+
initializeFoDProperties(props);
36+
initializeSCDastProperties(props);
37+
initializeSCSastProperties(props);
38+
initializeSSCProperties(props);
39+
initializeVersionRelatedProperties(props);
40+
return props;
41+
}
42+
43+
private static final void initializeFoDProperties(Properties props) {
44+
props.setProperty("fcli.fod.scan.states", getValueNamesString(FoDScanStatus.values()));
45+
props.setProperty("fcli.fod.scan.states.complete", getValueNamesString(FoDScanStatus.getDefaultCompleteStates()));
46+
}
47+
48+
private static final void initializeSCDastProperties(Properties props) {
49+
props.setProperty("fcli.sc-dast.scan.states", getValueNamesString(SCDastScanStatus.values()));
50+
props.setProperty("fcli.sc-dast.scan.states.complete", getValueNamesString(SCDastScanStatus.getDefaultCompleteStates()));
51+
}
52+
53+
private static final void initializeSCSastProperties(Properties props) {
54+
props.setProperty("fcli.sc-sast.scan.jobStates", getValueNamesString(SCSastScanJobState.values()));
55+
props.setProperty("fcli.sc-sast.scan.jobStates.complete", getValueNamesString(SCSastScanJobState.getDefaultCompleteStates()));
56+
props.setProperty("fcli.sc-sast.scan.jobArtifactStates", getValueNamesString(SCSastScanJobArtifactState.values()));
57+
props.setProperty("fcli.sc-sast.scan.jobArtifactStates.complete", getValueNamesString(SCSastScanJobArtifactState.getDefaultCompleteStates()));
58+
}
59+
60+
private static final void initializeSSCProperties(Properties props) {
61+
props.setProperty("fcli.ssc.artifact.states", getValueNamesString(SSCArtifactStatus.values()));
62+
props.setProperty("fcli.ssc.artifact.states.complete", getValueNamesString(SSCArtifactStatus.getDefaultCompleteStates()));
63+
}
64+
65+
private static final void initializeVersionRelatedProperties(Properties props) {
66+
props.setProperty("fcli.action.supportedSchemaVersions", ActionSchemaVersionHelper.getSupportedSchemaVersionsString());
67+
props.setProperty("fcli.docBaseUrl", FcliBuildProperties.INSTANCE.getFcliDocBaseUrl());
68+
}
69+
70+
private static final String getValueNamesString(Enum<?>[] values) {
71+
return getValuesString(values, Enum::name);
72+
}
73+
74+
private static final String getValuesString(Enum<?>[] values, Function<Enum<?>, String> f) {
75+
return Stream.of(values).map(f).collect(Collectors.joining(", "));
76+
}
77+
78+
public static final void main(String[] args) {
79+
getResourceBundleProperties().forEach((p,v)->System.out.println(p+":"+v));
80+
}
81+
}

fcli-core/fcli-app/src/main/java/com/fortify/cli/app/runner/util/FortifyCLIStaticInitializer.java

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,14 @@
1616
import java.nio.file.Path;
1717
import java.nio.file.Paths;
1818
import java.util.Locale;
19-
import java.util.function.Function;
20-
import java.util.stream.Collectors;
21-
import java.util.stream.Stream;
2219

2320
import org.apache.commons.logging.Log;
2421
import org.apache.commons.logging.LogFactory;
2522

26-
import com.fortify.cli.common.action.helper.ActionSchemaHelper;
2723
import com.fortify.cli.common.http.ssl.truststore.helper.TrustStoreConfigDescriptor;
2824
import com.fortify.cli.common.http.ssl.truststore.helper.TrustStoreConfigHelper;
2925
import com.fortify.cli.common.i18n.helper.LanguageHelper;
3026
import com.fortify.cli.common.util.StringUtils;
31-
import com.fortify.cli.fod._common.scan.helper.FoDScanStatus;
32-
import com.fortify.cli.sc_dast.scan.helper.SCDastScanStatus;
33-
import com.fortify.cli.sc_sast.scan.helper.SCSastScanJobArtifactState;
34-
import com.fortify.cli.sc_sast.scan.helper.SCSastScanJobState;
35-
import com.fortify.cli.ssc.artifact.helper.SSCArtifactStatus;
3627
import com.fortify.cli.tool._common.helper.ToolUninstaller;
3728

3829
import lombok.AccessLevel;
@@ -55,37 +46,7 @@ public void initialize() {
5546
ToolUninstaller.deleteAllPending();
5647
initializeTrustStore();
5748
initializeLocale();
58-
initializeFoDProperties();
59-
initializeSCDastProperties();
60-
initializeSCSastProperties();
61-
initializeSSCProperties();
62-
initializeActionProperties();
63-
}
64-
65-
private void initializeFoDProperties() {
66-
System.setProperty("fcli.fod.scan.states", getValueNamesString(FoDScanStatus.values()));
67-
System.setProperty("fcli.fod.scan.states.complete", getValueNamesString(FoDScanStatus.getDefaultCompleteStates()));
68-
}
69-
70-
private void initializeSCDastProperties() {
71-
System.setProperty("fcli.sc-dast.scan.states", getValueNamesString(SCDastScanStatus.values()));
72-
System.setProperty("fcli.sc-dast.scan.states.complete", getValueNamesString(SCDastScanStatus.getDefaultCompleteStates()));
73-
}
74-
75-
private void initializeSCSastProperties() {
76-
System.setProperty("fcli.sc-sast.scan.jobStates", getValueNamesString(SCSastScanJobState.values()));
77-
System.setProperty("fcli.sc-sast.scan.jobStates.complete", getValueNamesString(SCSastScanJobState.getDefaultCompleteStates()));
78-
System.setProperty("fcli.sc-sast.scan.jobArtifactStates", getValueNamesString(SCSastScanJobArtifactState.values()));
79-
System.setProperty("fcli.sc-sast.scan.jobArtifactStates.complete", getValueNamesString(SCSastScanJobArtifactState.getDefaultCompleteStates()));
80-
}
81-
82-
private void initializeSSCProperties() {
83-
System.setProperty("fcli.ssc.artifact.states", getValueNamesString(SSCArtifactStatus.values()));
84-
System.setProperty("fcli.ssc.artifact.states.complete", getValueNamesString(SSCArtifactStatus.getDefaultCompleteStates()));
85-
}
86-
87-
private void initializeActionProperties() {
88-
System.setProperty("fcli.action.supportedSchemaVersions", ActionSchemaHelper.getSupportedSchemaVersionsString());
49+
System.getProperties().putAll(FortifyCLIResourceBundlePropertiesHelper.getResourceBundleProperties());
8950
}
9051

9152
private void initializeTrustStore() {
@@ -153,12 +114,4 @@ private void initializeTrustStoreFromConfig(TrustStoreConfigDescriptor descripto
153114
private void initializeLocale() {
154115
Locale.setDefault(LanguageHelper.getConfiguredLanguageDescriptor().getLocale());
155116
}
156-
157-
private String getValueNamesString(Enum<?>[] values) {
158-
return getValuesString(values, Enum::name);
159-
}
160-
161-
private String getValuesString(Enum<?>[] values, Function<Enum<?>, String> f) {
162-
return Stream.of(values).map(f).collect(Collectors.joining(", "));
163-
}
164117
}

fcli-core/fcli-common/src/main/java/com/fortify/cli/common/action/cli/cmd/AbstractActionAsciidocCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import com.fortify.cli.common.cli.mixin.CommonOptionMixins;
3636
import com.fortify.cli.common.cli.util.SimpleOptionsParser.IOptionDescriptor;
3737
import com.fortify.cli.common.exception.FcliBugException;
38-
import com.fortify.cli.common.util.FcliBuildPropertiesHelper;
38+
import com.fortify.cli.common.util.FcliBuildProperties;
3939
import com.fortify.cli.common.util.StringUtils;
4040

4141
import lombok.SneakyThrows;
@@ -70,7 +70,7 @@ public final Integer call() {
7070
}
7171

7272
private final String replaceVariables(String s) {
73-
return s.replace("${version}", FcliBuildPropertiesHelper.getFcliBuildInfo().replace(':', ' '))
73+
return s.replace("${version}", FcliBuildProperties.INSTANCE.getFcliBuildInfo().replace(':', ' '))
7474
.replace("${type}", getType())
7575
.replace("${actionCmd}", getActionCmd());
7676
}

fcli-core/fcli-common/src/main/java/com/fortify/cli/common/action/cli/cmd/AbstractActionSignCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import com.fortify.cli.common.output.cli.cmd.IJsonNodeSupplier;
3434
import com.fortify.cli.common.output.cli.mixin.OutputHelperMixins;
3535
import com.fortify.cli.common.output.transform.IActionCommandResultSupplier;
36-
import com.fortify.cli.common.util.FcliBuildPropertiesHelper;
36+
import com.fortify.cli.common.util.FcliBuildProperties;
3737

3838
import lombok.Getter;
3939
import lombok.SneakyThrows;
@@ -91,7 +91,7 @@ private final SignatureMetadata createMetadata() {
9191
var signer = getSigner(extraInfo);
9292
return SignatureMetadata.builder()
9393
.extraInfo(extraInfo)
94-
.fcliVersion(FcliBuildPropertiesHelper.getFcliVersion())
94+
.fcliVersion(FcliBuildProperties.INSTANCE.getFcliVersion())
9595
.signer(signer)
9696
.build();
9797
}

fcli-core/fcli-common/src/main/java/com/fortify/cli/common/action/helper/ActionLoaderHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
import com.fortify.cli.common.exception.FcliSimpleException;
5858
import com.fortify.cli.common.spring.expression.wrapper.TemplateExpressionKeyDeserializer;
5959
import com.fortify.cli.common.util.Break;
60-
import com.fortify.cli.common.util.FcliBuildPropertiesHelper;
60+
import com.fortify.cli.common.util.FcliBuildProperties;
6161
import com.fortify.cli.common.util.FcliDataHelper;
6262
import com.fortify.cli.common.util.FileUtils;
6363
import com.fortify.cli.common.util.ZipHelper;
@@ -279,7 +279,7 @@ private static SignatureDescriptor getSignatureDescriptor(boolean custom, Signed
279279
.signature("N/A")
280280
.publicKeyFingerprint(SignatureHelper.fortifySignatureVerifier().publicKeyFingerPrint())
281281
.metadata(SignatureMetadata.builder()
282-
.fcliVersion(FcliBuildPropertiesHelper.getFcliVersion())
282+
.fcliVersion(FcliBuildProperties.INSTANCE.getFcliVersion())
283283
.signer("Fortify").build()).build();
284284
}
285285

@@ -306,8 +306,8 @@ private static final ObjectMapper createYamlObjectMapper() {
306306

307307
private final void checkSchema() {
308308
var schemaUri = getSchemaUri();
309-
var schemaVersion = ActionSchemaHelper.getSchemaVersion(schemaUri);
310-
if ( !ActionSchemaHelper.isSupportedSchemaVersion(schemaVersion) ) {
309+
var schemaVersion = ActionSchemaVersionHelper.getSchemaVersion(schemaUri);
310+
if ( !ActionSchemaVersionHelper.isSupportedSchemaVersion(schemaVersion) ) {
311311
actionValidationHandler.onUnsupportedSchemaVersion(metadata, schemaVersion);
312312
}
313313
}

fcli-core/fcli-common/src/main/java/com/fortify/cli/common/action/helper/ActionSchemaHelper.java renamed to fcli-core/fcli-common/src/main/java/com/fortify/cli/common/action/helper/ActionSchemaVersionHelper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
import java.text.ParseException;
1717

1818
import com.formkiq.graalvm.annotations.Reflectable;
19-
import com.fortify.cli.common.util.FcliBuildPropertiesHelper;
19+
import com.fortify.cli.common.util.FcliBuildProperties;
2020
import com.fortify.cli.common.util.SemVer;
2121

22-
@Reflectable public final class ActionSchemaHelper {
22+
@Reflectable public final class ActionSchemaVersionHelper {
2323
private static final MessageFormat URI_FORMAT = new MessageFormat("https://fortify.github.io/fcli/schemas/action/fcli-action-schema-{0}.json");
24-
private static final boolean IS_FCLI_DEV_RELEASE = FcliBuildPropertiesHelper.isDevelopmentRelease();
25-
private static final SemVer CURRENT_SCHEMA_VERSION = new SemVer(FcliBuildPropertiesHelper.getFcliActionSchemaVersion());
24+
private static final boolean IS_FCLI_DEV_RELEASE = FcliBuildProperties.INSTANCE.isDevelopmentRelease();
25+
private static final SemVer CURRENT_SCHEMA_VERSION = new SemVer(FcliBuildProperties.INSTANCE.getFcliActionSchemaVersion());
2626

2727
/** Get the schema URI for the current enum entry by formatting schema version as URI */
2828
public static final String toURI(String version) {

0 commit comments

Comments
 (0)