From b97b557889e50b4052056ae05cdd9698ec4382a0 Mon Sep 17 00:00:00 2001 From: PravinGadankush <120639736+PravinGadankush@users.noreply.github.com> Date: Mon, 30 Sep 2024 15:20:26 +0530 Subject: [PATCH] Sonar integration branch (#270) * Changes to show enginePackVersion in logs * plugin version * Removing unnecessary logs --------- Co-authored-by: Swati Awate <99341045+swatipersistent@users.noreply.github.com> --- .../java/com/cx/restclient/CxSASTClient.java | 2 +- .../java/com/cx/restclient/ast/AstClient.java | 3 ++- .../cx/restclient/ast/ClientTypeResolver.java | 3 ++- .../configuration/CxScanConfig.java | 11 +++++++- .../java/com/cx/restclient/dto/CxVersion.java | 9 +++++++ .../restclient/httpClient/CxHttpClient.java | 25 ++++++++++++++++--- .../restclient/osa/dto/ScanConfiguration.java | 11 +++++++- .../restclient/sast/utils/LegacyClient.java | 13 ++++++---- 8 files changed, 64 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/cx/restclient/CxSASTClient.java b/src/main/java/com/cx/restclient/CxSASTClient.java index 5e027b1d..b0384755 100644 --- a/src/main/java/com/cx/restclient/CxSASTClient.java +++ b/src/main/java/com/cx/restclient/CxSASTClient.java @@ -172,7 +172,7 @@ private CxARMStatus resolveCxARMStatus(CxARMStatus cxARMStatus) throws CxClientE }; - CxSASTClient(CxScanConfig config, Logger log) throws MalformedURLException { + public CxSASTClient(CxScanConfig config, Logger log) throws MalformedURLException { super(config, log); diff --git a/src/main/java/com/cx/restclient/ast/AstClient.java b/src/main/java/com/cx/restclient/ast/AstClient.java index 12f4b2e8..b6a5b075 100644 --- a/src/main/java/com/cx/restclient/ast/AstClient.java +++ b/src/main/java/com/cx/restclient/ast/AstClient.java @@ -84,7 +84,8 @@ protected CxHttpClient createHttpClient(String baseUrl) { config.isScaProxy(), config.getScaProxyConfig(), log, - config.getNTLM()); + config.getNTLM(), + config.getPluginVersion()); //initializing Team Path to prevent null pointer in login when called from automation client.setTeamPathHeader(""); diff --git a/src/main/java/com/cx/restclient/ast/ClientTypeResolver.java b/src/main/java/com/cx/restclient/ast/ClientTypeResolver.java index 1fe3c6bf..c9217e7c 100644 --- a/src/main/java/com/cx/restclient/ast/ClientTypeResolver.java +++ b/src/main/java/com/cx/restclient/ast/ClientTypeResolver.java @@ -97,7 +97,8 @@ private CxHttpClient getHttpClient(String acBaseUrl) { config.isScaProxy(), config.getScaProxyConfig(), log, - config.getNTLM()); + config.getNTLM(), + config.getPluginVersion()); } return httpClient; } diff --git a/src/main/java/com/cx/restclient/configuration/CxScanConfig.java b/src/main/java/com/cx/restclient/configuration/CxScanConfig.java index be27495b..c9858d24 100644 --- a/src/main/java/com/cx/restclient/configuration/CxScanConfig.java +++ b/src/main/java/com/cx/restclient/configuration/CxScanConfig.java @@ -79,8 +79,17 @@ public void setShowCriticalLabel(boolean showCriticalLabel) { private String engineConfigurationName; private String projectCustomFields; private boolean ignoreBenignErrors = false; + private String pluginVersion; - private String osaFolderExclusions; + public String getPluginVersion() { + return pluginVersion; + } + + public void setPluginVersion(String pluginVersion) { + this.pluginVersion = pluginVersion; + } + + private String osaFolderExclusions; public String getEngineConfigurationName() { return engineConfigurationName; } diff --git a/src/main/java/com/cx/restclient/dto/CxVersion.java b/src/main/java/com/cx/restclient/dto/CxVersion.java index 6d1d2d6e..722cbe3e 100644 --- a/src/main/java/com/cx/restclient/dto/CxVersion.java +++ b/src/main/java/com/cx/restclient/dto/CxVersion.java @@ -9,6 +9,7 @@ public class CxVersion { private String version; private String hotFix; + private String enginePackVersion; public String getVersion() { return version; @@ -25,4 +26,12 @@ public String getHotFix() { public void setHotFix(String hotFix) { this.hotFix = hotFix; } + + public String getEnginePackVersion() { + return enginePackVersion; + } + + public void setEnginePackVersion(String enginePackVersion) { + this.enginePackVersion = enginePackVersion; + } } diff --git a/src/main/java/com/cx/restclient/httpClient/CxHttpClient.java b/src/main/java/com/cx/restclient/httpClient/CxHttpClient.java index 5221b01e..cfaa24b6 100644 --- a/src/main/java/com/cx/restclient/httpClient/CxHttpClient.java +++ b/src/main/java/com/cx/restclient/httpClient/CxHttpClient.java @@ -1,6 +1,8 @@ package com.cx.restclient.httpClient; import com.cx.restclient.common.ErrorMessage; +import com.cx.restclient.configuration.CxScanConfig; +import com.cx.restclient.dto.CxVersion; import com.cx.restclient.dto.LoginSettings; import com.cx.restclient.dto.ProxyConfig; import com.cx.restclient.dto.TokenLoginResponse; @@ -121,10 +123,12 @@ public class CxHttpClient implements Closeable { private CookieStore cookieStore = new BasicCookieStore(); private HttpClientBuilder cb = HttpClients.custom(); private final Map customHeaders = new HashMap<>(); + private CxVersion cxVersion; + private String pluginVersion; public CxHttpClient(String rootUri, String origin, boolean disableSSLValidation, boolean isSSO, String refreshToken, - boolean isProxy, @Nullable ProxyConfig proxyConfig, Logger log, Boolean useNTLM) throws CxClientException { + boolean isProxy, @Nullable ProxyConfig proxyConfig, Logger log, Boolean useNTLM, String pluginVersion) throws CxClientException { this.log = log; this.rootUri = rootUri; @@ -132,6 +136,7 @@ public CxHttpClient(String rootUri, String origin, boolean disableSSLValidation, this.cxOrigin = origin; this.useSSo = isSSO; this.useNTLM = useNTLM; + this.pluginVersion = pluginVersion; //create httpclient cb.setDefaultRequestConfig(RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build()); setSSLTls("TLSv1.2", log); @@ -182,8 +187,8 @@ public CxHttpClient(String rootUri, String origin, boolean disableSSLValidation, } public CxHttpClient(String rootUri, String origin, String originUrl, boolean disableSSLValidation, boolean isSSO, String refreshToken, - boolean isProxy, @Nullable ProxyConfig proxyConfig, Logger log, Boolean useNTLM) throws CxClientException { - this(rootUri, origin, disableSSLValidation, isSSO, refreshToken, isProxy, proxyConfig, log, useNTLM); + boolean isProxy, @Nullable ProxyConfig proxyConfig, Logger log, Boolean useNTLM, String pluginVersion) throws CxClientException { + this(rootUri, origin, disableSSLValidation, isSSO, refreshToken, isProxy, proxyConfig, log, useNTLM, pluginVersion); this.cxOriginUrl = originUrl; } @@ -635,6 +640,17 @@ public void addCustomHeader(String name, String value) { log.debug(String.format("Adding a custom header: %s: %s", name, value)); customHeaders.put(name, value); } + + private String getUserAgentValue() { + if (cxOrigin == null) { + log.warn("cxOrigin is null"); + cxOrigin = "unknown"; // Or handle as appropriate + } + + String version = (pluginVersion != null ) ? pluginVersion : "unknown"; // Ensure cxVersion is not null + + return "plugin_name=" + cxOrigin + ";plugin_version=" + version; + } private T request(HttpRequestBase httpMethod, String contentType, HttpEntity entity, Class responseType, int expectStatus, String failedMsg, boolean isCollection, boolean retry) throws IOException { //Support unicode characters @@ -661,6 +677,9 @@ private T request(HttpRequestBase httpMethod, String contentType, HttpEntity if (contentType != null) { httpMethod.addHeader("Content-type", contentType); } + if (getUserAgentValue() != null) { + httpMethod.addHeader("User-Agent", getUserAgentValue()); + } if (entity != null && httpMethod instanceof HttpEntityEnclosingRequestBase) { //Entity for Post methods ((HttpEntityEnclosingRequestBase) httpMethod).setEntity(entity); } diff --git a/src/main/java/com/cx/restclient/osa/dto/ScanConfiguration.java b/src/main/java/com/cx/restclient/osa/dto/ScanConfiguration.java index 73e57b5b..d0f55fb0 100644 --- a/src/main/java/com/cx/restclient/osa/dto/ScanConfiguration.java +++ b/src/main/java/com/cx/restclient/osa/dto/ScanConfiguration.java @@ -14,7 +14,16 @@ public class ScanConfiguration { private boolean SASTEnabled; private String cxOrigin; - private String sourceDir; + private String pluginVersion; + public String getPluginVersion() { + return pluginVersion; + } + + public void setPluginVersion(String pluginVersion) { + this.pluginVersion = pluginVersion; + } + + private String sourceDir; private String tempDir; private String reportsDir; private String username; diff --git a/src/main/java/com/cx/restclient/sast/utils/LegacyClient.java b/src/main/java/com/cx/restclient/sast/utils/LegacyClient.java index 3367ce45..5f89b610 100644 --- a/src/main/java/com/cx/restclient/sast/utils/LegacyClient.java +++ b/src/main/java/com/cx/restclient/sast/utils/LegacyClient.java @@ -26,6 +26,7 @@ import java.util.List; import static com.cx.restclient.common.CxPARAM.*; +import static com.cx.restclient.httpClient.utils.ContentType.CONTENT_TYPE_API_VERSION_1_1; import static com.cx.restclient.httpClient.utils.ContentType.CONTENT_TYPE_APPLICATION_JSON_V1; import static com.cx.restclient.httpClient.utils.ContentType.CONTENT_TYPE_APPLICATION_JSON_V4; import static com.cx.restclient.httpClient.utils.HttpClientHelper.convertToJson; @@ -252,9 +253,9 @@ private List getProjectByName(String projectName, String teamId, String } private void initHttpClient(CxScanConfig config, Logger log) throws MalformedURLException { - - if (!org.apache.commons.lang3.StringUtils.isEmpty(config.getUrl())) { - httpClient = new CxHttpClient( + if (!org.apache.commons.lang3.StringUtils.isEmpty(config.getUrl())) { + httpClient = new CxHttpClient( + UrlUtils.parseURLToString(config.getUrl(), "CxRestAPI/"), config.getCxOrigin(), config.getCxOriginUrl(), @@ -264,7 +265,8 @@ private void initHttpClient(CxScanConfig config, Logger log) throws MalformedURL config.isProxy(), config.getProxyConfig(), log, - config.getNTLM()); + config.getNTLM(), + config.getPluginVersion()); } } @@ -293,7 +295,7 @@ public void initiate() throws CxClientException { public String getCxVersion() throws IOException, CxClientException { String version; try { - config.setCxVersion(httpClient.getRequest(CX_VERSION, CONTENT_TYPE_APPLICATION_JSON_V1, CxVersion.class, 200, "cx Version", false)); + config.setCxVersion(httpClient.getRequest(CX_VERSION, CONTENT_TYPE_API_VERSION_1_1, CxVersion.class, 200, "cx Version", false)); String hotfix = ""; try { if (config.getCxVersion().getHotFix() != null && Integer.parseInt(config.getCxVersion().getHotFix()) > 0) { @@ -304,6 +306,7 @@ public String getCxVersion() throws IOException, CxClientException { version = config.getCxVersion().getVersion(); log.info("Checkmarx server version [" + config.getCxVersion().getVersion() + "]." + hotfix); + log.info("Checkmarx Engine Pack Version [" + config.getCxVersion().getEnginePackVersion() + "]."); } catch (Exception ex) { version = "lower than 9.0";