This is an automated email from the ASF dual-hosted git repository.

orudyy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/qpid-broker-j.git


The following commit(s) were added to refs/heads/master by this push:
     new 8857187  QPID-8370: [Broker-J] Add option to disable web management 
console
8857187 is described below

commit 8857187fdf17479c8e1809ccd63a3c4a0cd4a794
Author: Alex Rudyy <oru...@apache.org>
AuthorDate: Fri Feb 28 16:15:09 2020 +0000

    QPID-8370: [Broker-J] Add option to disable web management console
---
 .../server/management/plugin/HttpManagement.java   | 107 ++++++++++++---------
 .../plugin/HttpManagementConfiguration.java        |   5 +
 .../latest/LatestManagementController.java         |  10 +-
 .../LatestManagementControllerAdapterTest.java     |   2 +-
 .../latest/LatestManagementControllerTest.java     |   1 +
 5 files changed, 74 insertions(+), 51 deletions(-)

diff --git 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
index b92bbf6..987975f 100644
--- 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
+++ 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java
@@ -347,6 +347,21 @@ public class HttpManagement extends 
AbstractPluginAdapter<HttpManagement> implem
 
         root.addFilter(new FilterHolder(new ForbiddingTraceFilter()), "/*", 
EnumSet.of(DispatcherType.REQUEST));
 
+        addFiltersAndServletsForRest(root);
+        if (!Boolean.TRUE.equals(getContextValue(Boolean.class, 
DISABLE_UI_CONTEXT_NAME)))
+        {
+            addFiltersAndServletsForUserInterfaces(root);
+        }
+
+        
root.getSessionHandler().getSessionCookieConfig().setName(JSESSIONID_COOKIE_PREFIX
 + lastPort);
+        root.getSessionHandler().getSessionCookieConfig().setHttpOnly(true);
+        root.getSessionHandler().setMaxInactiveInterval(getSessionTimeout());
+
+        return server;
+    }
+
+    private void addFiltersAndServletsForRest(final ServletContextHandler root)
+    {
         FilterHolder loggingFilter = new FilterHolder(new LoggingFilter());
         root.addFilter(loggingFilter, "/api/*", 
EnumSet.of(DispatcherType.REQUEST));
         root.addFilter(loggingFilter, "/service/*", 
EnumSet.of(DispatcherType.REQUEST));
@@ -354,22 +369,8 @@ public class HttpManagement extends 
AbstractPluginAdapter<HttpManagement> implem
         FilterHolder restAuthorizationFilter = new FilterHolder(new 
AuthenticationCheckFilter());
         
restAuthorizationFilter.setInitParameter(AuthenticationCheckFilter.INIT_PARAM_ALLOWED,
 "/service/sasl");
         root.addFilter(restAuthorizationFilter, "/api/*", 
EnumSet.of(DispatcherType.REQUEST));
-        root.addFilter(restAuthorizationFilter, "/apidocs/*", 
EnumSet.of(DispatcherType.REQUEST));
         root.addFilter(restAuthorizationFilter, "/service/*", 
EnumSet.of(DispatcherType.REQUEST));
 
-        root.addFilter(new FilterHolder(new 
InteractiveAuthenticationFilter()), "/index.html", 
EnumSet.of(DispatcherType.REQUEST));
-        root.addFilter(new FilterHolder(new 
InteractiveAuthenticationFilter()), "/", EnumSet.of(DispatcherType.REQUEST));
-
-        FilterHolder redirectFilter = new FilterHolder(new RedirectFilter());
-        
redirectFilter.setInitParameter(RedirectFilter.INIT_PARAM_REDIRECT_URI, 
"/index.html");
-        root.addFilter(redirectFilter, "/login.html", 
EnumSet.of(DispatcherType.REQUEST));
-
-        if (_serveUncompressedDojo)
-        {
-            root.addFilter(RewriteRequestForUncompressedJavascript.class, 
"/dojo/dojo/*", EnumSet.of(DispatcherType.REQUEST));
-            root.addFilter(RewriteRequestForUncompressedJavascript.class, 
"/dojo/dojox/*", EnumSet.of(DispatcherType.REQUEST));
-        }
-
         addRestServlet(root);
 
         ServletHolder queryServlet = new ServletHolder(new 
BrokerQueryServlet());
@@ -380,43 +381,67 @@ public class HttpManagement extends 
AbstractPluginAdapter<HttpManagement> implem
         root.addServlet(vhQueryServlet, "/api/latest/queryvhost/*");
         root.addServlet(vhQueryServlet, "/api/v" + BrokerModel.MODEL_VERSION + 
"/queryvhost/*");
 
+        root.addServlet(new ServletHolder(new StructureServlet()), 
"/service/structure");
+        root.addServlet(new ServletHolder(new QueueReportServlet()), 
"/service/queuereport/*");
+        root.addServlet(new ServletHolder(new MetaDataServlet()), 
"/service/metadata");
+        root.addServlet(new ServletHolder(new TimeZoneServlet()), 
"/service/timezones");
+    }
 
-        ServletHolder apiDocsServlet = new ServletHolder(new ApiDocsServlet());
-        final ServletHolder rewriteSerlvet = new ServletHolder(new 
RewriteServlet("^(.*)$", "$1/"));
-        for(String path : new String[]{"/apidocs", "/apidocs/latest", 
"/apidocs/"+getLatestSupportedVersion()})
+    private void addFiltersAndServletsForUserInterfaces(final 
ServletContextHandler root)
+    {
+        root.addFilter(new FilterHolder(new AuthenticationCheckFilter()), 
"/apidocs/*", EnumSet.of(DispatcherType.REQUEST));
+        root.addFilter(new FilterHolder(new 
InteractiveAuthenticationFilter()), "/index.html", 
EnumSet.of(DispatcherType.REQUEST));
+        root.addFilter(new FilterHolder(new 
InteractiveAuthenticationFilter()), "/", EnumSet.of(DispatcherType.REQUEST));
+
+        FilterHolder redirectFilter = new FilterHolder(new RedirectFilter());
+        
redirectFilter.setInitParameter(RedirectFilter.INIT_PARAM_REDIRECT_URI, 
"/index.html");
+        root.addFilter(redirectFilter, "/login.html", 
EnumSet.of(DispatcherType.REQUEST));
+
+        if (_serveUncompressedDojo)
         {
-            root.addServlet(rewriteSerlvet, path);
-            root.addServlet(apiDocsServlet, path + "/");
+            root.addFilter(RewriteRequestForUncompressedJavascript.class, 
"/dojo/dojo/*", EnumSet.of(DispatcherType.REQUEST));
+            root.addFilter(RewriteRequestForUncompressedJavascript.class, 
"/dojo/dojox/*", EnumSet.of(DispatcherType.REQUEST));
         }
 
-        root.addServlet(new ServletHolder(new StructureServlet()), 
"/service/structure");
-        root.addServlet(new ServletHolder(new QueueReportServlet()), 
"/service/queuereport/*");
-
-        root.addServlet(new ServletHolder(new MetaDataServlet()), 
"/service/metadata");
+        addApiDocsServlets(root);
 
         root.addServlet(new ServletHolder(new SaslServlet()), "/service/sasl");
-
-        root.addServlet(new ServletHolder(new 
RootServlet("/","/apidocs/","index.html")), "/");
+        root.addServlet(new ServletHolder(new RootServlet("/", "/apidocs/", 
"index.html")), "/");
         root.addServlet(new ServletHolder(new LogoutServlet()), "/logout");
-
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDojoPath(), true)), "/dojo/dojo/*");
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDijitPath(), true)), "/dojo/dijit/*");
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDojoxPath(), true)), "/dojo/dojox/*");
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDgridPath(), true)), "/dojo/dgrid/*");
         root.addServlet(new ServletHolder(new 
FileServlet(DojoHelper.getDstorePath(), true)), "/dojo/dstore/*");
 
-        for(String pattern : STATIC_FILE_TYPES)
+        for (String pattern : STATIC_FILE_TYPES)
         {
             root.addServlet(new ServletHolder(new FileServlet()), pattern);
         }
+    }
 
-        root.addServlet(new ServletHolder(new TimeZoneServlet()), 
"/service/timezones");
-
-        
root.getSessionHandler().getSessionCookieConfig().setName(JSESSIONID_COOKIE_PREFIX
 + lastPort);
-        root.getSessionHandler().getSessionCookieConfig().setHttpOnly(true);
-        root.getSessionHandler().setMaxInactiveInterval(getSessionTimeout());
+    private void addApiDocsServlets(final ServletContextHandler root)
+    {
+        final ApiDocsServlet apiDocsServlet = new ApiDocsServlet();
+        final ServletHolder apiDocsServletHolder = new 
ServletHolder(apiDocsServlet);
+        final ServletHolder rewriteSerlvet = new ServletHolder(new 
RewriteServlet("^(.*)$", "$1/"));
+        final String version = getLatestSupportedVersion();
+        for (String path : new String[]{"/apidocs", "/apidocs/latest", 
"/apidocs/v" + version})
+        {
+            root.addServlet(rewriteSerlvet, path);
+            root.addServlet(apiDocsServletHolder, path + "/");
+        }
 
-        return server;
+        getModel().getSupportedCategories()
+                  .stream()
+                  .map(Class::getSimpleName)
+                  .map(String::toLowerCase)
+                  .forEach(name -> {
+                      root.addServlet(apiDocsServletHolder, "/apidocs/latest/" 
+ name + "/");
+                      root.addServlet(apiDocsServletHolder, "/apidocs/" + 
version + "/" + name + "/");
+                      root.addServlet(apiDocsServletHolder, "/apidocs/latest/" 
+ name);
+                      root.addServlet(apiDocsServletHolder, "/apidocs/" + 
version + "/" + name);
+                  });
     }
 
     @Override
@@ -711,8 +736,10 @@ public class HttpManagement extends 
AbstractPluginAdapter<HttpManagement> implem
     private void addRestServlet(final ServletContextHandler root)
     {
         final Map<String, ManagementControllerFactory> factories = 
ManagementControllerFactory.loadFactories();
-        final ApiDocsServlet apiDocsServlet = new ApiDocsServlet();
+        final long maxFileSize = getContextValue(Long.class, 
MAX_HTTP_FILE_UPLOAD_SIZE_CONTEXT_NAME);
+        final int maxRequestSize = getContextValue(Integer.class, 
MAX_HTTP_FILE_UPLOAD_SIZE_CONTEXT_NAME);
         final List<String> supportedVersions = new ArrayList<>();
+        supportedVersions.add("latest");
         String currentVersion = BrokerModel.MODEL_VERSION;
         ManagementController managementController = null;
         ManagementControllerFactory factory;
@@ -732,23 +759,13 @@ public class HttpManagement extends 
AbstractPluginAdapter<HttpManagement> implem
                     servletHolder.setInitParameter("qpid.controller.version", 
managementController.getVersion());
 
                     servletHolder.getRegistration().setMultipartConfig(
-                            new MultipartConfigElement("",
-                                                       
getContextValue(Long.class,
-                                                                       
MAX_HTTP_FILE_UPLOAD_SIZE_CONTEXT_NAME),
-                                                       -1L,
-                                                       
getContextValue(Integer.class,
-                                                                       
MAX_HTTP_FILE_UPLOAD_SIZE_CONTEXT_NAME)));
+                            new MultipartConfigElement("", maxFileSize, -1L, 
maxRequestSize));
 
                     root.addServlet(servletHolder, path + (path.endsWith("/") 
? "*" : "/*"));
 
                     if 
(BrokerModel.MODEL_VERSION.equals(managementController.getVersion()))
                     {
                         root.addServlet(servletHolder, "/api/latest/" + name + 
"/*");
-                        ServletHolder docServletHolder = new 
ServletHolder(name + "docs", apiDocsServlet);
-                        root.addServlet(docServletHolder, "/apidocs/latest/" + 
name + "/");
-                        root.addServlet(docServletHolder, "/apidocs/v" + 
BrokerModel.MODEL_VERSION + "/" + name + "/");
-                        root.addServlet(docServletHolder, "/apidocs/latest/" + 
name);
-                        root.addServlet(docServletHolder, "/apidocs/v" + 
BrokerModel.MODEL_VERSION + "/" + name);
                     }
                 }
                 supportedVersions.add("v" + currentVersion);
diff --git 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
index a5aadae..85f0606 100644
--- 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
+++ 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementConfiguration.java
@@ -85,6 +85,11 @@ public interface HttpManagementConfiguration<X extends 
HttpManagementConfigurati
     @ManagedContextDefault( name = SASL_EXCHANGE_EXPIRY_CONTEXT_NAME)
     long DEFAULT_SASL_EXCHANGE_EXPIRY = 60000L;
 
+    String DISABLE_UI_CONTEXT_NAME = 
"qpid.httpManagement.disableUserInterface";
+    @SuppressWarnings("unused")
+    @ManagedContextDefault( name = DISABLE_UI_CONTEXT_NAME)
+    boolean DEFAULT_DISABLE_UI = false;
+
     AuthenticationProvider getAuthenticationProvider(HttpServletRequest 
request);
     Port<?> getPort(HttpServletRequest request);
 }
diff --git 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementController.java
 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementController.java
index eaf5075..0c65c2c 100644
--- 
a/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementController.java
+++ 
b/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementController.java
@@ -111,11 +111,11 @@ public class LatestManagementController extends 
AbstractManagementController
         _userPreferenceHandler = new 
RestUserPreferenceHandler(preferenceOperationTimeout == null
                                                                        ? 
DEFAULT_PREFERENCE_OPERATION_TIMEOUT
                                                                        : 
preferenceOperationTimeout);
-        _supportedCategories = 
Collections.unmodifiableSet(BrokerModel.getInstance()
-                                                                      
.getSupportedCategories()
-                                                                      .stream()
-                                                                      
.map(Class::getSimpleName)
-                                                                      
.collect(Collectors.toSet()));
+        _supportedCategories = 
Collections.unmodifiableSet(httpManagement.getModel()
+                                                                         
.getSupportedCategories()
+                                                                         
.stream()
+                                                                         
.map(Class::getSimpleName)
+                                                                         
.collect(Collectors.toSet()));
     }
 
     @Override
diff --git 
a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerAdapterTest.java
 
b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerAdapterTest.java
index 5718e22..67f0859 100644
--- 
a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerAdapterTest.java
+++ 
b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerAdapterTest.java
@@ -67,8 +67,8 @@ public class LatestManagementControllerAdapterTest extends 
UnitTestBase
     {
         final HttpManagementConfiguration<?> httpManagement = 
mock(HttpManagementConfiguration.class);
         when(httpManagement.getContextValue(Long.class, 
PREFERENCE_OPERTAION_TIMEOUT_CONTEXT_NAME)).thenReturn(1000L);
+        when(httpManagement.getModel()).thenReturn(BrokerModel.getInstance());
         final ManagementController managementController = new 
LatestManagementController(httpManagement);
-        
when(managementController.getVersion()).thenReturn(BrokerModel.MODEL_VERSION);
         _adapter = new LatestManagementControllerAdapter(managementController);
     }
 
diff --git 
a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerTest.java
 
b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerTest.java
index 0a32b9e..97c94e5 100644
--- 
a/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerTest.java
+++ 
b/broker-plugins/management-http/src/test/java/org/apache/qpid/server/management/plugin/controller/latest/LatestManagementControllerTest.java
@@ -82,6 +82,7 @@ public class LatestManagementControllerTest extends 
UnitTestBase
     {
         final HttpManagementConfiguration<?> httpManagement = 
mock(HttpManagementConfiguration.class);
         when(httpManagement.getContextValue(Long.class, 
PREFERENCE_OPERTAION_TIMEOUT_CONTEXT_NAME)).thenReturn(1000L);
+        when(httpManagement.getModel()).thenReturn(BrokerModel.getInstance());
         _controller = new LatestManagementController(httpManagement);
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to