aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-webserver-core/src/main
diff options
context:
space:
mode:
authorJacek <jacek.poreda@sonarsource.com>2021-02-23 11:05:24 +0100
committersonartech <sonartech@sonarsource.com>2021-02-26 20:07:39 +0000
commit10fef4f93aeefcf8d79e7eb93742d4460c75d90b (patch)
tree36f43dd41e9c239db4b3cf9821814810810776c4 /server/sonar-webserver-core/src/main
parent7657870eed718a74c6b4e8dbd18ab6f8d5d5bc78 (diff)
downloadsonarqube-10fef4f93aeefcf8d79e7eb93742d4460c75d90b.tar.gz
sonarqube-10fef4f93aeefcf8d79e7eb93742d4460c75d90b.zip
SONAR-14501 Custom security config telemetry
Diffstat (limited to 'server/sonar-webserver-core/src/main')
-rw-r--r--server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java34
1 files changed, 31 insertions, 3 deletions
diff --git a/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java b/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java
index 93f086e52e0..c0c518b4e33 100644
--- a/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java
+++ b/server/sonar-webserver-core/src/main/java/org/sonar/server/telemetry/TelemetryDataLoaderImpl.java
@@ -21,12 +21,15 @@ package org.sonar.server.telemetry;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.CheckForNull;
import javax.annotation.Nullable;
+import org.sonar.api.config.Configuration;
import org.sonar.api.platform.Server;
import org.sonar.api.server.ServerSide;
import org.sonar.core.platform.PlatformEditionProvider;
@@ -47,9 +50,12 @@ import org.sonar.server.telemetry.TelemetryData.Database;
import org.sonar.server.user.index.UserIndex;
import org.sonar.server.user.index.UserQuery;
+import static java.util.Arrays.asList;
import static java.util.Optional.ofNullable;
import static org.apache.commons.lang.StringUtils.startsWith;
import static org.sonar.core.platform.EditionProvider.Edition.COMMUNITY;
+import static org.sonar.core.platform.EditionProvider.Edition.DATACENTER;
+import static org.sonar.core.platform.EditionProvider.Edition.ENTERPRISE;
import static org.sonar.server.metric.UnanalyzedLanguageMetrics.UNANALYZED_CPP_KEY;
import static org.sonar.server.metric.UnanalyzedLanguageMetrics.UNANALYZED_C_KEY;
@@ -61,18 +67,19 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader {
private final UserIndex userIndex;
private final ProjectMeasuresIndex projectMeasuresIndex;
private final PlatformEditionProvider editionProvider;
+ private final Configuration configuration;
private final InternalProperties internalProperties;
private final DockerSupport dockerSupport;
@CheckForNull
private final LicenseReader licenseReader;
public TelemetryDataLoaderImpl(Server server, DbClient dbClient, PluginRepository pluginRepository, UserIndex userIndex, ProjectMeasuresIndex projectMeasuresIndex,
- PlatformEditionProvider editionProvider, InternalProperties internalProperties, DockerSupport dockerSupport) {
- this(server, dbClient, pluginRepository, userIndex, projectMeasuresIndex, editionProvider, internalProperties, dockerSupport, null);
+ PlatformEditionProvider editionProvider, InternalProperties internalProperties, Configuration configuration, DockerSupport dockerSupport) {
+ this(server, dbClient, pluginRepository, userIndex, projectMeasuresIndex, editionProvider, internalProperties, configuration, dockerSupport, null);
}
public TelemetryDataLoaderImpl(Server server, DbClient dbClient, PluginRepository pluginRepository, UserIndex userIndex, ProjectMeasuresIndex projectMeasuresIndex,
- PlatformEditionProvider editionProvider, InternalProperties internalProperties,
+ PlatformEditionProvider editionProvider, InternalProperties internalProperties, Configuration configuration,
DockerSupport dockerSupport, @Nullable LicenseReader licenseReader) {
this.server = server;
this.dbClient = dbClient;
@@ -81,6 +88,7 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader {
this.projectMeasuresIndex = projectMeasuresIndex;
this.editionProvider = editionProvider;
this.internalProperties = internalProperties;
+ this.configuration = configuration;
this.dockerSupport = dockerSupport;
this.licenseReader = licenseReader;
}
@@ -129,6 +137,9 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader {
data.setAlmIntegrationCountByAlm(countAlmUsage(dbSession));
}
+
+ setSecurityCustomConfigIfPresent(data);
+
Optional<String> installationDateProperty = internalProperties.read(InternalProperties.INSTALLATION_DATE);
installationDateProperty.ifPresent(s -> data.setInstallationDate(Long.valueOf(s)));
Optional<String> installationVersionProperty = internalProperties.read(InternalProperties.INSTALLATION_VERSION);
@@ -138,6 +149,23 @@ public class TelemetryDataLoaderImpl implements TelemetryDataLoader {
return data.build();
}
+ private void setSecurityCustomConfigIfPresent(TelemetryData.Builder data) {
+ editionProvider.get()
+ .filter(edition -> asList(ENTERPRISE, DATACENTER).contains(edition))
+ .ifPresent(edition -> {
+ List<String> customSecurityConfigs = new LinkedList<>();
+ configuration.get("sonar.security.config.javasecurity")
+ .ifPresent(s -> customSecurityConfigs.add("java"));
+ configuration.get("sonar.security.config.phpsecurity")
+ .ifPresent(s -> customSecurityConfigs.add("php"));
+ configuration.get("sonar.security.config.pythonsecurity")
+ .ifPresent(s -> customSecurityConfigs.add("python"));
+ configuration.get("sonar.security.config.roslyn.sonaranalyzer.security.cs")
+ .ifPresent(s -> customSecurityConfigs.add("csharp"));
+ data.setCustomSecurityConfigs(customSecurityConfigs);
+ });
+ }
+
private Map<String, Long> countAlmUsage(DbSession dbSession) {
return dbClient.almSettingDao().selectAll(dbSession).stream()
.collect(Collectors.groupingBy(almSettingDto -> {