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
commit c55b4afad0e0327ac63f0b7d21fb7d5f83ac3d05 Author: Rene Cordier <[email protected]> AuthorDate: Fri Nov 1 14:18:17 2019 +0700 JAMES-2958 Limit the domain creation to a number of 255 characters --- core/src/main/java/org/apache/james/core/Domain.java | 3 +++ .../java/org/apache/james/domainlist/api/DomainTest.java | 12 ++++++++++++ .../java/org/apache/james/webadmin/routes/DomainsRoutes.java | 9 +-------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/james/core/Domain.java b/core/src/main/java/org/apache/james/core/Domain.java index 1bcea59..3bf831a 100644 --- a/core/src/main/java/org/apache/james/core/Domain.java +++ b/core/src/main/java/org/apache/james/core/Domain.java @@ -28,6 +28,7 @@ import com.google.common.base.Preconditions; public class Domain implements Serializable { public static final Domain LOCALHOST = Domain.of("localhost"); + public static final int MAXIMUM_DOMAIN_LENGTH = 255; private static String removeBrackets(String domainName) { if (!(domainName.startsWith("[") && domainName.endsWith("]"))) { @@ -40,6 +41,8 @@ public class Domain implements Serializable { Preconditions.checkNotNull(domain, "Domain can not be null"); Preconditions.checkArgument(!domain.isEmpty() && !domain.contains("@"), "Domain can not be empty nor contain `@`"); + Preconditions.checkArgument(domain.length() <= MAXIMUM_DOMAIN_LENGTH, + "Domain name length should not exceed " + MAXIMUM_DOMAIN_LENGTH + " characters"); return new Domain(domain); } diff --git a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java index 8230223..1abffc6 100644 --- a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java +++ b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java @@ -22,6 +22,7 @@ package org.apache.james.domainlist.api; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import org.apache.commons.lang3.StringUtils; import org.apache.james.core.Domain; import org.junit.jupiter.api.Test; @@ -101,4 +102,15 @@ class DomainTest { assertThatThrownBy(() -> Domain.of(null)).isInstanceOf(NullPointerException.class); } + @Test + void shouldAllow255LongDomain() { + assertThat(Domain.of(StringUtils.repeat('a', 255)).asString()) + .hasSize(255); + } + + @Test + void shouldThrowWhenTooLong() { + assertThatThrownBy(() -> Domain.of(StringUtils.repeat('a', 256))) + .isInstanceOf(IllegalArgumentException.class); + } } \ No newline at end of file diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java index 1aee7e9..936b3ea 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java @@ -48,7 +48,6 @@ import org.eclipse.jetty.http.HttpStatus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import io.swagger.annotations.Api; @@ -244,7 +243,7 @@ public class DomainsRoutes implements Routes { private String addDomain(Request request, Response response) { Domain domain = checkValidDomain(request.params(DOMAIN_NAME)); try { - addDomain(domain); + domainList.addDomain(domain); return Responses.returnNoContent(response); } catch (DomainListException e) { LOGGER.info("{} already exists", domain); @@ -278,12 +277,6 @@ public class DomainsRoutes implements Routes { } } - private void addDomain(Domain domain) throws DomainListException { - Preconditions.checkArgument(domain.name().length() < MAXIMUM_DOMAIN_SIZE, - "Domain name length should not exceed " + (MAXIMUM_DOMAIN_SIZE - 1) + " characters"); - domainList.addDomain(domain); - } - private String exists(Request request, Response response) throws DomainListException { Domain domain = checkValidDomain(request.params(DOMAIN_NAME)); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
