You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/07/31 07:45:36 UTC

[6/7] james-project git commit: JAMES-2099 Add admin configuration for host which should be used on swagger

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 <qn...@linagora.com>
Authored: Wed Jul 26 12:06:01 2017 +0700
Committer: quynhn <qn...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org