This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push: new ff1796e869 JAMES-3949 Prevent usage of JMX file auto configuration on Windows (#1763) ff1796e869 is described below commit ff1796e869e4e6732cca29531c39d4dc92561895 Author: Benoit TELLIER <btell...@linagora.com> AuthorDate: Mon Oct 30 06:46:15 2023 +0100 JAMES-3949 Prevent usage of JMX file auto configuration on Windows (#1763) --- server/apps/cassandra-app/sample-configuration/jvm.properties | 2 +- server/apps/distributed-app/sample-configuration/jvm.properties | 2 +- .../apps/distributed-pop3-app/sample-configuration/jvm.properties | 2 +- server/apps/jpa-app/sample-configuration/jvm.properties | 2 +- server/apps/jpa-smtp-app/sample-configuration/jvm.properties | 2 +- server/apps/memory-app/sample-configuration/jvm.properties | 2 +- .../src/main/java/org/apache/james/modules/server/JMXServer.java | 7 +++++-- .../java/org/apache/james/modules/server/JmxConfiguration.java | 3 ++- 8 files changed, 13 insertions(+), 9 deletions(-) diff --git a/server/apps/cassandra-app/sample-configuration/jvm.properties b/server/apps/cassandra-app/sample-configuration/jvm.properties index c4cf7f2ef3..6f7e598d17 100644 --- a/server/apps/cassandra-app/sample-configuration/jvm.properties +++ b/server/apps/cassandra-app/sample-configuration/jvm.properties @@ -47,7 +47,7 @@ config.file=conf/cassandra-driver.conf sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/apps/distributed-app/sample-configuration/jvm.properties b/server/apps/distributed-app/sample-configuration/jvm.properties index 1a462fc95d..a857feaa13 100644 --- a/server/apps/distributed-app/sample-configuration/jvm.properties +++ b/server/apps/distributed-app/sample-configuration/jvm.properties @@ -47,7 +47,7 @@ config.file=conf/cassandra-driver.conf sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/apps/distributed-pop3-app/sample-configuration/jvm.properties b/server/apps/distributed-pop3-app/sample-configuration/jvm.properties index 2c19ca04ec..3676aa5c89 100644 --- a/server/apps/distributed-pop3-app/sample-configuration/jvm.properties +++ b/server/apps/distributed-pop3-app/sample-configuration/jvm.properties @@ -47,7 +47,7 @@ config.file=conf/cassandra-driver.conf sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/apps/jpa-app/sample-configuration/jvm.properties b/server/apps/jpa-app/sample-configuration/jvm.properties index 73b964c9b4..7154210df7 100644 --- a/server/apps/jpa-app/sample-configuration/jvm.properties +++ b/server/apps/jpa-app/sample-configuration/jvm.properties @@ -44,7 +44,7 @@ sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/apps/jpa-smtp-app/sample-configuration/jvm.properties b/server/apps/jpa-smtp-app/sample-configuration/jvm.properties index 73b964c9b4..7154210df7 100644 --- a/server/apps/jpa-smtp-app/sample-configuration/jvm.properties +++ b/server/apps/jpa-smtp-app/sample-configuration/jvm.properties @@ -44,7 +44,7 @@ sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/apps/memory-app/sample-configuration/jvm.properties b/server/apps/memory-app/sample-configuration/jvm.properties index b443532f61..9631a9d7dd 100644 --- a/server/apps/memory-app/sample-configuration/jvm.properties +++ b/server/apps/memory-app/sample-configuration/jvm.properties @@ -44,7 +44,7 @@ sun.rmi.dgc.server.gcInterval=3600000000 sun.rmi.dgc.client.gcInterval=3600000000 -# Automatically generate a JMX password upon start. CLI is able to retrieve this password. +# Automatically generate a JMX password upon start. CLI is able to retrieve this password. Not supported on windows. james.jmx.credential.generation=true # Disable Remote Code Execution feature from JMX diff --git a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java index 901926dad2..b8d3547ed5 100644 --- a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java +++ b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JMXServer.java @@ -50,6 +50,7 @@ import javax.management.remote.JMXServiceURL; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.SystemUtils; import org.apache.james.filesystem.api.JamesDirectoriesProvider; import org.apache.james.lifecycle.api.Startable; import org.apache.james.util.FunctionalUtils; @@ -58,6 +59,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.fge.lambdas.Throwing; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; public class JMXServer implements Startable { @@ -159,8 +161,8 @@ public class JMXServer implements Startable { } private void generateJMXPasswordFileIfNeed() { - if (Boolean.parseBoolean(System.getProperty(JMX_CREDENTIAL_GENERATION_ENABLE_PROPERTY_KEY, JMX_CREDENTIAL_GENERATION_ENABLE_DEFAULT_VALUE)) - && !existJmxPasswordFile()) { + boolean shouldCreateJMXPasswordFile = Boolean.parseBoolean(System.getProperty(JMX_CREDENTIAL_GENERATION_ENABLE_PROPERTY_KEY, JMX_CREDENTIAL_GENERATION_ENABLE_DEFAULT_VALUE)); + if (shouldCreateJMXPasswordFile && !existJmxPasswordFile()) { generateJMXPasswordFile(); } } @@ -170,6 +172,7 @@ public class JMXServer implements Startable { } private void generateJMXPasswordFile() { + Preconditions.checkState(!SystemUtils.IS_OS_WINDOWS, "Generating JMX password file is not supported on Windows"); try { File passwordFile = new File(jmxPasswordFilePath); if (!passwordFile.exists()) { diff --git a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JmxConfiguration.java b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JmxConfiguration.java index 9eb616ce69..929433416a 100644 --- a/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JmxConfiguration.java +++ b/server/container/guice/jmx/src/main/java/org/apache/james/modules/server/JmxConfiguration.java @@ -23,6 +23,7 @@ import java.util.Objects; import java.util.Optional; import org.apache.commons.configuration2.Configuration; +import org.apache.commons.lang3.SystemUtils; import org.apache.james.util.Host; import com.google.common.annotations.VisibleForTesting; @@ -35,7 +36,7 @@ public class JmxConfiguration { public static final int DEFAULT_PORT = 9999; public static final boolean ENABLED = true; public static final String JMX_CREDENTIAL_GENERATION_ENABLE_PROPERTY_KEY = "james.jmx.credential.generation"; - public static final String JMX_CREDENTIAL_GENERATION_ENABLE_DEFAULT_VALUE = "true"; + public static final String JMX_CREDENTIAL_GENERATION_ENABLE_DEFAULT_VALUE = Boolean.valueOf(!SystemUtils.IS_OS_WINDOWS).toString(); public static final String PASSWORD_FILE_NAME = "jmxremote.password"; public static final String ACCESS_FILE_NAME = "jmxremote.access"; public static final String JAMES_ADMIN_USER_DEFAULT = "james-admin"; --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@james.apache.org For additional commands, e-mail: notifications-h...@james.apache.org