You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/12/22 04:11:08 UTC
[james-project] 02/10: JAMES-3680 SMTPServer: Use an enum for authRequired
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 8039e544c95099ca70fa76bef6fb0c4dd9200b64
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Dec 6 15:52:12 2021 +0700
JAMES-3680 SMTPServer: Use an enum for authRequired
Instead of a collection of integers
---
.../james/modules/protocols/SmtpGuiceProbe.java | 4 +-
.../apache/james/smtpserver/netty/SMTPServer.java | 44 +++++++++++++---------
2 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
index cb2f44a..5c38a77 100644
--- a/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
+++ b/server/container/guice/protocols/smtp/src/main/java/org/apache/james/modules/protocols/SmtpGuiceProbe.java
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.james.modules.protocols;
+import static org.apache.james.smtpserver.netty.SMTPServer.AuthenticationRequired.REQUIRED;
+
import java.net.InetSocketAddress;
import java.util.function.Function;
import java.util.function.Predicate;
@@ -63,7 +65,7 @@ public class SmtpGuiceProbe implements GuiceProbe {
}
public Port getSmtpAuthRequiredPort() {
- return getPort(server -> ((SMTPServer) server).getAuthRequired() == SMTPServer.AUTH_REQUIRED);
+ return getPort(server -> ((SMTPServer) server).getAuthRequired().equals(REQUIRED));
}
private Port getPort(Predicate<? super AbstractConfigurableAsyncServer> filter) {
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
index b22381c..ff966f5 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/netty/SMTPServer.java
@@ -18,6 +18,9 @@
****************************************************************/
package org.apache.james.smtpserver.netty;
+import static org.apache.james.smtpserver.netty.SMTPServer.AuthenticationRequired.ANNOUNCE;
+import static org.apache.james.smtpserver.netty.SMTPServer.AuthenticationRequired.DISABLED;
+
import java.util.Locale;
import javax.inject.Inject;
@@ -50,13 +53,26 @@ import org.slf4j.LoggerFactory;
public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServerMBean {
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractProtocolAsyncServer.class);
+ public enum AuthenticationRequired {
+ DISABLED,
+ REQUIRED,
+ ANNOUNCE;
+
+ public static AuthenticationRequired parse(String authRequiredString) {
+ if (authRequiredString.equals("true")) {
+ return REQUIRED;
+ } else if (authRequiredString.equals("announce")) {
+ return ANNOUNCE;
+ } else {
+ return DISABLED;
+ }
+ }
+ }
+
/**
* Whether authentication is required to use this SMTP server.
*/
- public static final int AUTH_DISABLED = 0;
- public static final int AUTH_REQUIRED = 1;
- public static final int AUTH_ANNOUNCE = 2;
- private int authRequired = AUTH_DISABLED;
+ private AuthenticationRequired authRequired = DISABLED;
/**
* Whether the server needs helo to be send first
@@ -132,21 +148,15 @@ public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServe
super.doConfigure(configuration);
if (isEnabled()) {
String authRequiredString = configuration.getString("authRequired", "false").trim().toLowerCase(Locale.US);
- if (authRequiredString.equals("true")) {
- authRequired = AUTH_REQUIRED;
- } else if (authRequiredString.equals("announce")) {
- authRequired = AUTH_ANNOUNCE;
- } else {
- authRequired = AUTH_DISABLED;
- }
- if (authRequired != AUTH_DISABLED) {
+ authRequired = AuthenticationRequired.parse(authRequiredString);
+ if (authRequired != DISABLED) {
LOGGER.info("This SMTP server requires authentication.");
} else {
LOGGER.info("This SMTP server does not require authentication.");
}
authorizedAddresses = configuration.getString("authorizedAddresses", null);
- if (authRequired == AUTH_DISABLED && authorizedAddresses == null) {
+ if (authRequired == DISABLED && authorizedAddresses == null) {
/*
* if SMTP AUTH is not required then we will use
* authorizedAddresses to determine whether or not to relay
@@ -187,7 +197,7 @@ public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServe
verifyIdentity = configuration.getBoolean("verifyIdentity", false);
- if (authRequired == AUTH_DISABLED && verifyIdentity) {
+ if (authRequired == DISABLED && verifyIdentity) {
throw new ConfigurationException(
"SMTP configuration: 'verifyIdentity' can't be set to true if 'authRequired' is set to false.");
}
@@ -244,10 +254,10 @@ public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServe
@Override
public boolean isAuthRequired(String remoteIP) {
- if (SMTPServer.this.authRequired == AUTH_ANNOUNCE) {
+ if (SMTPServer.this.authRequired == ANNOUNCE) {
return true;
}
- boolean authRequired = SMTPServer.this.authRequired != AUTH_DISABLED;
+ boolean authRequired = SMTPServer.this.authRequired != DISABLED;
if (authorizedNetworks != null) {
authRequired = authRequired && !SMTPServer.this.authorizedNetworks.matchInetNetwork(remoteIP);
}
@@ -334,7 +344,7 @@ public class SMTPServer extends AbstractProtocolAsyncServer implements SMTPServe
return new AllButStartTlsLineChannelHandlerFactory("starttls", AbstractChannelPipelineFactory.MAX_LINE_LENGTH);
}
- public int getAuthRequired() {
+ public AuthenticationRequired getAuthRequired() {
return authRequired;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org