JAMES-2099 Add admin configuration for host which should be used on swagger
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5c2baa7b Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5c2baa7b Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5c2baa7b Branch: refs/heads/master Commit: 5c2baa7beddadd67473dfc1ec5240665ac5554f4 Parents: 9cd602f Author: quynhn <qngu...@linagora.com> Authored: Wed Jul 26 12:06:01 2017 +0700 Committer: quynhn <qngu...@linagora.com> Committed: Mon Jul 31 10:57:04 2017 +0700 ---------------------------------------------------------------------- .../etc/james/templates/webadmin.properties | 1 + .../destination/conf/webadmin.properties | 1 + .../destination/conf/webadmin.properties | 1 + .../sample-configuration/webadmin.properties | 3 ++- .../modules/server/WebAdminServerModule.java | 1 + .../src/test/resources/webadmin.properties | 3 ++- .../james/webadmin/WebAdminConfiguration.java | 24 ++++++++++++++++---- .../james/webadmin/swagger/SwaggerParser.java | 4 ++-- 8 files changed, 30 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/dockerfiles/packaging/debian/package/etc/james/templates/webadmin.properties ---------------------------------------------------------------------- diff --git a/dockerfiles/packaging/debian/package/etc/james/templates/webadmin.properties b/dockerfiles/packaging/debian/package/etc/james/templates/webadmin.properties index 38e2ba0..36b6f1e 100644 --- a/dockerfiles/packaging/debian/package/etc/james/templates/webadmin.properties +++ b/dockerfiles/packaging/debian/package/etc/james/templates/webadmin.properties @@ -20,6 +20,7 @@ enabled=true port=8000 +host=localhost # Defaults to false https.enabled=false http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties ---------------------------------------------------------------------- diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties index 38e2ba0..36b6f1e 100644 --- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties +++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties @@ -20,6 +20,7 @@ enabled=true port=8000 +host=localhost # Defaults to false https.enabled=false http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties ---------------------------------------------------------------------- diff --git a/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties index 38e2ba0..36b6f1e 100644 --- a/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties +++ b/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties @@ -20,6 +20,7 @@ enabled=true port=8000 +host=localhost # Defaults to false https.enabled=false http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/server/container/guice/memory-guice/sample-configuration/webadmin.properties ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/sample-configuration/webadmin.properties b/server/container/guice/memory-guice/sample-configuration/webadmin.properties index 70a6cb9..a9b5cc2 100644 --- a/server/container/guice/memory-guice/sample-configuration/webadmin.properties +++ b/server/container/guice/memory-guice/sample-configuration/webadmin.properties @@ -19,4 +19,5 @@ # DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS enabled=true -port=8000 \ No newline at end of file +port=8000 +host=localhost \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java index c7820cc..88c1cd6 100644 --- a/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java +++ b/server/container/guice/protocols/webadmin/src/main/java/org/apache/james/modules/server/WebAdminServerModule.java @@ -86,6 +86,7 @@ public class WebAdminServerModule extends AbstractModule { .tls(readHttpsConfiguration(configurationFile)) .enableCORS(configurationFile.getBoolean("cors.enable", DEFAULT_CORS_DISABLED)) .urlCORSOrigin(configurationFile.getString("cors.origin", DEFAULT_NO_CORS_ORIGIN)) + .host(configurationFile.getString("host", WebAdminConfiguration.DEFAULT_HOST)) .build(); } catch (FileNotFoundException e) { LOGGER.info("No webadmin.properties file. Disabling WebAdmin interface."); http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/server/protocols/webadmin-integration-test/src/test/resources/webadmin.properties ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin-integration-test/src/test/resources/webadmin.properties b/server/protocols/webadmin-integration-test/src/test/resources/webadmin.properties index 09f46dd..475d655 100644 --- a/server/protocols/webadmin-integration-test/src/test/resources/webadmin.properties +++ b/server/protocols/webadmin-integration-test/src/test/resources/webadmin.properties @@ -1,2 +1,3 @@ enabled=true -port=8000 \ No newline at end of file +port=8000 +host=localhost \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java index 716645c..b7608cf 100644 --- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java +++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/WebAdminConfiguration.java @@ -30,6 +30,7 @@ public class WebAdminConfiguration { public static final boolean DEFAULT_CORS_DISABLED = false; public static final String CORS_ALL_ORIGINS = "*"; + public static final String DEFAULT_HOST = "localhost"; public static WebAdminConfiguration testingConfiguration() { return WebAdminConfiguration.builder() @@ -52,6 +53,7 @@ public class WebAdminConfiguration { private Optional<Boolean> enableCORS = Optional.empty(); private Optional<TlsConfiguration> tlsConfiguration = Optional.empty(); private Optional<String> urlCORSOrigin = Optional.empty(); + private Optional<String> host = Optional.empty(); public Builder tls(TlsConfiguration tlsConfiguration) { this.tlsConfiguration = Optional.of(tlsConfiguration); @@ -98,6 +100,11 @@ public class WebAdminConfiguration { return enableCORS(false); } + public Builder host(String host) { + this.host = Optional.ofNullable(host); + return this; + } + public WebAdminConfiguration build() { Preconditions.checkState(enabled.isPresent(), "You need to explicitly enable or disable WebAdmin server"); Preconditions.checkState(!enabled.get() || port.isPresent(), "You need to specify a port for WebAdminConfiguration"); @@ -105,7 +112,8 @@ public class WebAdminConfiguration { port, tlsConfiguration, enableCORS.orElse(DEFAULT_CORS_DISABLED), - urlCORSOrigin.orElse(CORS_ALL_ORIGINS)); + urlCORSOrigin.orElse(CORS_ALL_ORIGINS), + host.orElse(DEFAULT_HOST)); } } @@ -114,14 +122,17 @@ public class WebAdminConfiguration { private final Optional<TlsConfiguration> tlsConfiguration; private final boolean enableCORS; private final String urlCORSOrigin; + private final String host; @VisibleForTesting - WebAdminConfiguration(boolean enabled, Optional<Port> port, Optional<TlsConfiguration> tlsConfiguration, boolean enableCORS, String urlCORSOrigin) { + WebAdminConfiguration(boolean enabled, Optional<Port> port, Optional<TlsConfiguration> tlsConfiguration, + boolean enableCORS, String urlCORSOrigin, String host) { this.enabled = enabled; this.port = port; this.tlsConfiguration = tlsConfiguration; this.enableCORS = enableCORS; this.urlCORSOrigin = urlCORSOrigin; + this.host = host; } public boolean isEnabled() { @@ -148,6 +159,10 @@ public class WebAdminConfiguration { return tlsConfiguration.isPresent(); } + public String getHost() { + return host; + } + @Override public final boolean equals(Object o) { if (o instanceof WebAdminConfiguration) { @@ -157,13 +172,14 @@ public class WebAdminConfiguration { && Objects.equals(this.port, that.port) && Objects.equals(this.tlsConfiguration, that.tlsConfiguration) && Objects.equals(this.enableCORS, that.enableCORS) - && Objects.equals(this.urlCORSOrigin, that.urlCORSOrigin); + && Objects.equals(this.urlCORSOrigin, that.urlCORSOrigin) + && Objects.equals(this.host, that.host); } return false; } @Override public final int hashCode() { - return Objects.hash(enabled, port, tlsConfiguration, enableCORS, urlCORSOrigin); + return Objects.hash(enabled, port, tlsConfiguration, enableCORS, urlCORSOrigin, host); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/5c2baa7b/server/protocols/webadmin/webadmin-swagger/src/main/java/org/apache/james/webadmin/swagger/SwaggerParser.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-swagger/src/main/java/org/apache/james/webadmin/swagger/SwaggerParser.java b/server/protocols/webadmin/webadmin-swagger/src/main/java/org/apache/james/webadmin/swagger/SwaggerParser.java index 8ebd303..7bdec19 100644 --- a/server/protocols/webadmin/webadmin-swagger/src/main/java/org/apache/james/webadmin/swagger/SwaggerParser.java +++ b/server/protocols/webadmin/webadmin-swagger/src/main/java/org/apache/james/webadmin/swagger/SwaggerParser.java @@ -41,7 +41,7 @@ public class SwaggerParser { private static final String API_DOC_VERSION = "V1.0"; private static final String API_DOC_TITLE = "JAMES Web Admin API"; private static final String API_DOC_DESCRIPTION = "All the web administration API for JAMES"; - private static final String JAMES_WEBADMIN_HOST = "localhost:"; + public static final String HOST_PORT_SEPARATOR = ":"; @Inject public static String getSwaggerJson(String packageName, WebAdminConfiguration configuration) throws JsonProcessingException { @@ -68,7 +68,7 @@ public class SwaggerParser { beanConfig.setVersion(API_DOC_VERSION); beanConfig.setTitle(API_DOC_TITLE); beanConfig.setDescription(API_DOC_DESCRIPTION); - beanConfig.setHost(JAMES_WEBADMIN_HOST + configuration.getPort().toInt()); + beanConfig.setHost(configuration.getHost() + HOST_PORT_SEPARATOR + configuration.getPort().toInt()); beanConfig.setSchemes(SCHEMES); beanConfig.setScan(true); beanConfig.scanAndRead(); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org