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

Reply via email to