You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2013/04/23 22:54:24 UTC
svn commit: r1471141 [2/11] - in /qpid/branches/QPID-4659/qpid/java: ./
amqp-1-0-client-jms/ amqp-1-0-client/ amqp-1-0-common/
amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/transport/
broker-plugins/access-control/src/main/java/org/apache/qpid...
Copied: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java (from r1465590, qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java)
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java?p2=qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java&p1=qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java&r1=1465590&r2=1471141&rev=1471141&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java Tue Apr 23 20:54:19 2013
@@ -85,13 +85,13 @@ public class HttpManagementUtil
}
public static void checkRequestAuthenticatedAndAccessAuthorized(HttpServletRequest request, Broker broker,
- HttpManagementConfiguration management)
+ HttpManagementConfiguration managementConfig)
{
HttpSession session = request.getSession();
Subject subject = getAuthorisedSubject(session);
if (subject == null)
{
- subject = tryToAuthenticate(request, broker, management);
+ subject = tryToAuthenticate(request, managementConfig);
if (subject == null)
{
throw new SecurityException("Only authenticated users can access the management interface");
@@ -164,11 +164,11 @@ public class HttpManagementUtil
session.setAttribute(ATTR_LOGIN_LOGOUT_REPORTER, new LoginLogoutReporter(logActor, subject));
}
- private static Subject tryToAuthenticate(HttpServletRequest request, Broker broker, HttpManagementConfiguration management)
+ private static Subject tryToAuthenticate(HttpServletRequest request, HttpManagementConfiguration managementConfig)
{
Subject subject = null;
SocketAddress localAddress = getSocketAddress(request);
- SubjectCreator subjectCreator = broker.getSubjectCreator(localAddress);
+ SubjectCreator subjectCreator = managementConfig.getSubjectCreator(localAddress);
String remoteUser = request.getRemoteUser();
if (remoteUser != null || subjectCreator.isAnonymousAuthenticationAllowed())
@@ -186,11 +186,11 @@ public class HttpManagementUtil
boolean isBasicAuthSupported = false;
if (request.isSecure())
{
- isBasicAuthSupported = management.isHttpsBasicAuthenticationEnabled();
+ isBasicAuthSupported = managementConfig.isHttpsBasicAuthenticationEnabled();
}
else
{
- isBasicAuthSupported = management.isHttpBasicAuthenticationEnabled();
+ isBasicAuthSupported = managementConfig.isHttpBasicAuthenticationEnabled();
}
if (isBasicAuthSupported)
{
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/AbstractServlet.java Tue Apr 23 20:54:19 2013
@@ -21,9 +21,6 @@
package org.apache.qpid.server.management.plugin.servlet.rest;
import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.security.AccessControlException;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -34,44 +31,22 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.logging.LogActor;
-import org.apache.qpid.server.logging.RootMessageLogger;
import org.apache.qpid.server.logging.actors.CurrentActor;
import org.apache.qpid.server.logging.actors.HttpManagementActor;
-import org.apache.qpid.server.management.plugin.HttpManagement;
-import org.apache.qpid.server.management.plugin.session.LoginLogoutReporter;
+import org.apache.qpid.server.management.plugin.HttpManagementConfiguration;
+import org.apache.qpid.server.management.plugin.HttpManagementUtil;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.security.SecurityManager;
-import org.apache.qpid.server.security.SubjectCreator;
-import org.apache.qpid.server.security.auth.AuthenticationResult.AuthenticationStatus;
-import org.apache.qpid.server.security.auth.SubjectAuthenticationResult;
-import org.apache.qpid.server.security.auth.manager.AnonymousAuthenticationManager;
public abstract class AbstractServlet extends HttpServlet
{
private static final Logger LOGGER = Logger.getLogger(AbstractServlet.class);
- /**
- * Servlet context attribute holding a reference to a broker instance
- */
- public static final String ATTR_BROKER = "Qpid.broker";
-
- /**
- * Servlet context attribute holding a reference to plugin configuration
- */
- public static final String ATTR_MANAGEMENT = "Qpid.management";
-
- private static final String ATTR_LOGIN_LOGOUT_REPORTER = "AbstractServlet.loginLogoutReporter";
- private static final String ATTR_SUBJECT = "AbstractServlet.subject";
- private static final String ATTR_LOG_ACTOR = "AbstractServlet.logActor";
-
private Broker _broker;
- private RootMessageLogger _rootLogger;
- private HttpManagement _httpManagement;
+ private HttpManagementConfiguration _managementConfiguration;
protected AbstractServlet()
{
@@ -83,9 +58,8 @@ public abstract class AbstractServlet ex
{
ServletConfig servletConfig = getServletConfig();
ServletContext servletContext = servletConfig.getServletContext();
- _broker = (Broker)servletContext.getAttribute(ATTR_BROKER);
- _rootLogger = _broker.getRootMessageLogger();
- _httpManagement = (HttpManagement)servletContext.getAttribute(ATTR_MANAGEMENT);
+ _broker = HttpManagementUtil.getBroker(servletContext);
+ _managementConfiguration = HttpManagementUtil.getManagementConfiguration(servletContext);
super.init();
}
@@ -211,18 +185,18 @@ public abstract class AbstractServlet ex
Subject subject;
try
{
- subject = getAndCacheAuthorizedSubject(request);
+ subject = getAuthorisedSubject(request);
}
- catch (AccessControlException e)
+ catch (SecurityException e)
{
- sendError(resp, HttpServletResponse.SC_FORBIDDEN);
+ sendError(resp, HttpServletResponse.SC_UNAUTHORIZED);
return;
}
SecurityManager.setThreadSubject(subject);
try
{
- HttpManagementActor logActor = getLogActorAndCacheInSession(request);
+ HttpManagementActor logActor = HttpManagementUtil.getOrCreateAndCacheLogActor(request, _broker);
CurrentActor.set(logActor);
try
{
@@ -256,187 +230,24 @@ public abstract class AbstractServlet ex
}
}
- /**
- * Gets the logged-in {@link Subject} by trying the following:
- *
- * <ul>
- * <li>Get it from the session</li>
- * <li>Get it from the request</li>
- * <li>Log in using the username and password in the Authorization HTTP header</li>
- * <li>Create a Subject representing the anonymous user.</li>
- * </ul>
- *
- * If an authenticated subject is found it is cached in the http session.
- */
- private Subject getAndCacheAuthorizedSubject(HttpServletRequest request)
+ protected Subject getAuthorisedSubject(HttpServletRequest request)
{
- HttpSession session = request.getSession();
- Subject subject = getAuthorisedSubjectFromSession(session);
-
- if(subject != null)
- {
- return subject;
- }
-
- SubjectCreator subjectCreator = getSubjectCreator(request);
- subject = authenticate(request, subjectCreator);
- if (subject != null)
+ Subject subject = HttpManagementUtil.getAuthorisedSubject(request.getSession());
+ if (subject == null)
{
- authoriseManagement(request, subject);
- setAuthorisedSubjectInSession(subject, request, session);
+ throw new SecurityException("Access to management rest interfaces is denied for un-authorised user");
}
- else
- {
- subject = subjectCreator.createSubjectWithGroups(AnonymousAuthenticationManager.ANONYMOUS_USERNAME);
- }
-
return subject;
}
- protected void authoriseManagement(HttpServletRequest request, Subject subject)
- {
- // TODO: We should eliminate SecurityManager.setThreadSubject in favour of Subject.doAs
- SecurityManager.setThreadSubject(subject); // Required for accessManagement check
- LogActor actor = createHttpManagementActor(request);
- CurrentActor.set(actor);
- try
- {
- try
- {
- Subject.doAs(subject, new PrivilegedExceptionAction<Void>() // Required for proper logging of Subject
- {
- @Override
- public Void run() throws Exception
- {
- boolean allowed = getSecurityManager().accessManagement();
- if (!allowed)
- {
- throw new AccessControlException("User is not authorised for management");
- }
- return null;
- }
- });
- }
- catch (PrivilegedActionException e)
- {
- throw new RuntimeException("Unable to perform access check", e);
- }
- }
- finally
- {
- try
- {
- CurrentActor.remove();
- }
- finally
- {
- SecurityManager.setThreadSubject(null);
- }
- }
- }
-
- private Subject authenticate(HttpServletRequest request, SubjectCreator subjectCreator)
- {
- Subject subject = null;
-
- String remoteUser = request.getRemoteUser();
- if(remoteUser != null)
- {
- subject = authenticateUserAndGetSubject(subjectCreator, remoteUser, null);
- }
- else
- {
- String header = request.getHeader("Authorization");
-
- if (header != null)
- {
- String[] tokens = header.split("\\s");
- if(tokens.length >= 2 && "BASIC".equalsIgnoreCase(tokens[0]))
- {
- if(!isBasicAuthSupported(request))
- {
- //TODO: write a return response indicating failure?
- throw new IllegalArgumentException("BASIC Authorization is not enabled.");
- }
-
- subject = performBasicAuth(subject, subjectCreator, tokens[1]);
- }
- }
- }
-
- return subject;
- }
-
- private Subject performBasicAuth(Subject subject,SubjectCreator subjectCreator, String base64UsernameAndPassword)
- {
- String[] credentials = (new String(Base64.decodeBase64(base64UsernameAndPassword.getBytes()))).split(":",2);
- if(credentials.length == 2)
- {
- subject = authenticateUserAndGetSubject(subjectCreator, credentials[0], credentials[1]);
- }
- else
- {
- //TODO: write a return response indicating failure?
- throw new AccessControlException("Invalid number of credentials supplied: "
- + credentials.length);
- }
- return subject;
- }
-
- private Subject authenticateUserAndGetSubject(SubjectCreator subjectCreator, String username, String password)
- {
- SubjectAuthenticationResult authResult = subjectCreator.authenticate(username, password);
- if( authResult.getStatus() != AuthenticationStatus.SUCCESS)
- {
- //TODO: write a return response indicating failure?
- throw new AccessControlException("Incorrect username or password");
- }
- Subject subject = authResult.getSubject();
- return subject;
- }
-
- private boolean isBasicAuthSupported(HttpServletRequest req)
- {
- return req.isSecure() ? _httpManagement.isHttpsBasicAuthenticationEnabled()
- : _httpManagement.isHttpBasicAuthenticationEnabled();
- }
-
- private HttpManagementActor getLogActorAndCacheInSession(HttpServletRequest req)
- {
- HttpSession session = req.getSession();
-
- HttpManagementActor actor = (HttpManagementActor) session.getAttribute(ATTR_LOG_ACTOR);
- if(actor == null)
- {
- actor = createHttpManagementActor(req);
- session.setAttribute(ATTR_LOG_ACTOR, actor);
- }
-
- return actor;
- }
-
- protected Subject getAuthorisedSubjectFromSession(HttpSession session)
- {
- return (Subject)session.getAttribute(ATTR_SUBJECT);
- }
-
- protected void setAuthorisedSubjectInSession(Subject subject, HttpServletRequest request, final HttpSession session)
- {
- session.setAttribute(ATTR_SUBJECT, subject);
-
- LogActor logActor = createHttpManagementActor(request);
- // Cause the user logon to be logged.
- session.setAttribute(ATTR_LOGIN_LOGOUT_REPORTER, new LoginLogoutReporter(logActor, subject));
- }
-
protected Broker getBroker()
{
return _broker;
}
- protected SocketAddress getSocketAddress(HttpServletRequest request)
+ protected HttpManagementConfiguration getManagementConfiguration()
{
- return InetSocketAddress.createUnresolved(request.getServerName(), request.getServerPort());
+ return _managementConfiguration;
}
protected void sendError(final HttpServletResponse resp, int errorCode)
@@ -450,24 +261,4 @@ public abstract class AbstractServlet ex
throw new RuntimeException("Failed to send error response code " + errorCode, e);
}
}
-
- private HttpManagementActor createHttpManagementActor(HttpServletRequest request)
- {
- return new HttpManagementActor(_rootLogger, request.getRemoteAddr(), request.getRemotePort());
- }
-
- protected HttpManagement getManagement()
- {
- return _httpManagement;
- }
-
- protected SecurityManager getSecurityManager()
- {
- return _broker.getSecurityManager();
- }
-
- protected SubjectCreator getSubjectCreator(HttpServletRequest request)
- {
- return _broker.getSubjectCreator(getSocketAddress(request));
- }
}
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/HelperServlet.java Tue Apr 23 20:54:19 2013
@@ -31,9 +31,10 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.qpid.server.management.plugin.servlet.rest.action.ListAccessControlProviderAttributes;
import org.apache.qpid.server.management.plugin.servlet.rest.action.ListAuthenticationProviderAttributes;
+import org.apache.qpid.server.management.plugin.servlet.rest.action.ListGroupProviderAttributes;
import org.apache.qpid.server.management.plugin.servlet.rest.action.ListMessageStoreTypes;
-import org.apache.qpid.server.model.Broker;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
@@ -53,6 +54,10 @@ public class HelperServlet extends Abstr
_actions.put(listProviderAttributes.getName(), listProviderAttributes);
Action listMessageStoreTypes = new ListMessageStoreTypes();
_actions.put(listMessageStoreTypes.getName(), listMessageStoreTypes);
+ Action groupProviderAttributes = new ListGroupProviderAttributes();
+ _actions.put(groupProviderAttributes.getName(), groupProviderAttributes);
+ Action aclProviderAttributes = new ListAccessControlProviderAttributes();
+ _actions.put(aclProviderAttributes.getName(), aclProviderAttributes);
}
@Override
@@ -96,7 +101,7 @@ public class HelperServlet extends Abstr
}
}
- Object output = action.perform(parameters, (Broker) getServletContext().getAttribute(ATTR_BROKER));
+ Object output = action.perform(parameters, getBroker());
if (output == null)
{
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/LogoutServlet.java Tue Apr 23 20:54:19 2013
@@ -29,13 +29,13 @@ import javax.servlet.http.HttpServletReq
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import org.apache.qpid.server.management.plugin.HttpManagement;
+import org.apache.qpid.server.management.plugin.HttpManagementUtil;
@SuppressWarnings("serial")
public class LogoutServlet extends HttpServlet
{
public static final String RETURN_URL_INIT_PARAM = "qpid.webui_logout_redirect";
- private String _returnUrl = HttpManagement.ENTRY_POINT_PATH;
+ private String _returnUrl = HttpManagementUtil.ENTRY_POINT_PATH;
@Override
public void init(ServletConfig config) throws ServletException
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/SaslServlet.java Tue Apr 23 20:54:19 2013
@@ -25,7 +25,10 @@ import org.codehaus.jackson.map.ObjectMa
import org.codehaus.jackson.map.SerializationConfig;
import org.apache.log4j.Logger;
-import org.apache.qpid.server.management.plugin.HttpManagement;
+import org.apache.qpid.server.logging.LogActor;
+import org.apache.qpid.server.management.plugin.HttpManagementConfiguration;
+import org.apache.qpid.server.management.plugin.HttpManagementUtil;
+import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.security.SubjectCreator;
import org.apache.qpid.server.security.auth.AuthenticatedPrincipal;
@@ -38,7 +41,7 @@ import javax.servlet.http.HttpServletRes
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
-import java.security.AccessControlException;
+import java.net.SocketAddress;
import java.security.Principal;
import java.security.SecureRandom;
import java.util.LinkedHashMap;
@@ -80,7 +83,7 @@ public class SaslServlet extends Abstrac
String[] mechanisms = subjectCreator.getMechanisms().split(" ");
Map<String, Object> outputObject = new LinkedHashMap<String, Object>();
- final Subject subject = getAuthorisedSubjectFromSession(session);
+ final Subject subject = getAuthorisedSubject(request);
if(subject != null)
{
Principal principal = AuthenticatedPrincipal.getAuthenticatedPrincipalFromSubject(subject);
@@ -195,8 +198,8 @@ public class SaslServlet extends Abstrac
private void checkSaslAuthEnabled(HttpServletRequest request)
{
- boolean saslAuthEnabled;
- HttpManagement management = getManagement();
+ boolean saslAuthEnabled = false;
+ HttpManagementConfiguration management = getManagementConfiguration();
if (request.isSecure())
{
saslAuthEnabled = management.isHttpsSaslAuthenticationEnabled();
@@ -205,7 +208,6 @@ public class SaslServlet extends Abstrac
{
saslAuthEnabled = management.isHttpSaslAuthenticationEnabled();
}
-
if (!saslAuthEnabled)
{
throw new RuntimeException("Sasl authentication disabled.");
@@ -227,7 +229,7 @@ public class SaslServlet extends Abstrac
session.removeAttribute(ATTR_ID);
session.removeAttribute(ATTR_SASL_SERVER);
session.removeAttribute(ATTR_EXPIRY);
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
@@ -236,17 +238,15 @@ public class SaslServlet extends Abstrac
{
Subject subject = subjectCreator.createSubjectWithGroups(saslServer.getAuthorizationID());
- try
- {
- authoriseManagement(request, subject);
- }
- catch (AccessControlException ace)
+ Broker broker = getBroker();
+ LogActor actor = HttpManagementUtil.getOrCreateAndCacheLogActor(request, broker);
+ if (!HttpManagementUtil.hasAccessToManagement(broker.getSecurityManager(), subject, actor))
{
sendError(response, HttpServletResponse.SC_FORBIDDEN);
return;
}
- setAuthorisedSubjectInSession(subject, request, session);
+ HttpManagementUtil.saveAuthorisedSubject(request.getSession(), subject, actor);
session.removeAttribute(ATTR_ID);
session.removeAttribute(ATTR_SASL_SERVER);
session.removeAttribute(ATTR_EXPIRY);
@@ -274,4 +274,16 @@ public class SaslServlet extends Abstrac
mapper.writeValue(writer, outputObject);
}
}
+
+ private SubjectCreator getSubjectCreator(HttpServletRequest request)
+ {
+ SocketAddress localAddress = HttpManagementUtil.getSocketAddress(request);
+ return HttpManagementUtil.getManagementConfiguration(getServletContext()).getSubjectCreator(localAddress);
+ }
+
+ @Override
+ protected Subject getAuthorisedSubject(HttpServletRequest request)
+ {
+ return HttpManagementUtil.getAuthorisedSubject(request.getSession());
+ }
}
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListMessageStoreTypes.java
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListMessageStoreTypes.java?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListMessageStoreTypes.java (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/action/ListMessageStoreTypes.java Tue Apr 23 20:54:19 2013
@@ -17,7 +17,7 @@ public class ListMessageStoreTypes imple
@Override
public Object perform(Map<String, Object> request, Broker broker)
{
- return broker.getAttribute(Broker.SUPPORTED_STORE_TYPES);
+ return broker.getAttribute(Broker.SUPPORTED_VIRTUALHOST_STORE_TYPES);
}
}
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html Tue Apr 23 20:54:19 2013
@@ -15,15 +15,16 @@
~ limitations under the License.
-->
<div class="dijitHidden">
- <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Authentication Provider'" id="addAuthenticationProvider">
+ <div data-dojo-type="dijit.Dialog" data-dojo-props="title:'Authentication Provider'" id="addAuthenticationProvider">
<form id="formAddAuthenticationProvider" method="post" dojoType="dijit.form.Form">
+ <div style="height:100px; width:420px; overflow: auto">
<table class="tableContainer-table tableContainer-table-horiz" width="100%" cellspacing="1">
<tr>
- <td class="tableContainer-labelCell" style="width: 300px;">Type*:</td>
+ <td class="tableContainer-labelCell" style="width: 200px;">Type*:</td>
<td class="tableContainer-valueCell"><div id="addAuthenticationProvider.selectAuthenticationProviderDiv"></div></td>
</tr>
<tr>
- <td class="tableContainer-labelCell" style="width: 300px;">Name*:</td>
+ <td class="tableContainer-labelCell" style="width: 200px;">Name*:</td>
<td class="tableContainer-valueCell"><input type="text" required="true" name="name"
id="formAddAuthenticationProvider.name" placeholder="Name" regexp="^[\x20-\x2e\x30-\x7F]{1,255}$"
dojoType="dijit.form.ValidationTextBox" missingMessage="A name must be supplied" /></div></td>
@@ -31,8 +32,11 @@
</table>
<input type="hidden" id="formAddAuthenticationProvider.id" name="id"/>
<div id="addAuthenticationProvider.fieldSets"></div>
+ </div>
+ <div class="dijitDialogPaneActionBar">
<!-- submit buttons -->
<input type="submit" value="Save Authentication Provider" label="Save Authentication Provider" dojoType="dijit.form.Button" />
+ </div>
</form>
</div>
</div>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addBinding.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addBinding.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addBinding.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addBinding.html Tue Apr 23 20:54:19 2013
@@ -32,11 +32,10 @@
dojoType="dijit.form.ValidationTextBox" missingMessage="A name must be supplied" /></td>
</tr>
</table>
- <br/>
-
+ <div class="dijitDialogPaneActionBar">
<!-- submit buttons -->
<input type="submit" value="Create Binding" label="Create Binding" dojoType="dijit.form.Button" />
-
+ </div>
</form>
</div>
</div>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addExchange.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addExchange.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addExchange.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addExchange.html Tue Apr 23 20:54:19 2013
@@ -44,11 +44,10 @@
</td>
</tr>
</table>
- <br/>
-
+ <div class="dijitDialogPaneActionBar">
<!-- submit buttons -->
<input type="submit" value="Create Exchange" label="Create Exchange" dojoType="dijit.form.Button" />
-
+ </div>
</form>
</div>
</div>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addPort.html Tue Apr 23 20:54:19 2013
@@ -19,43 +19,33 @@
-
-->
<div class="dijitHidden">
- <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Port'" id="addPort">
+ <div data-dojo-type="dijit.Dialog" data-dojo-props="title:'Port'" id="addPort">
<form id="formAddPort" method="post" dojoType="dijit.form.Form">
- <div class="dijitDialogPaneContentArea">
+ <div style="height:320px; width:420px; overflow: auto">
<div id="formAddPort:fields">
<input type="text" required="true" name="name" id="formAddPort.name" placeholder="Name"
data-dojo-props="label: 'Name*:'" dojoType="dijit.form.ValidationTextBox"
missingMessage="A name must be supplied" regexp="^[\x20-\x2e\x30-\x7F]{1,255}$"/>
- <input data-dojo-type="dijit.form.NumberSpinner" id="formAddPort.port" required="true" data-dojo-props="label: 'Port Number*:'"
+ <input data-dojo-type="dijit.form.NumberSpinner" id="formAddPort.port" required="true" data-dojo-props="label: 'Port Number*:', placeHolder: 'Enter port number'"
name="port" smallDelta="1" constraints="{min:1,max:65535,places:0, pattern: '#####'}"
missingMessage="A port number must be supplied" />
- <select id="formAddPort.transports" data-dojo-type="dijit.form.FilteringSelect"
- data-dojo-props="name: 'transports',label: 'Transport:',searchAttr: 'name',required:false,placeHolder: 'TCP', value: '' "
- style="margin: 0;">
- <option value="TCP">TCP</option>
- <option value="SSL">SSL</option>
- </select>
- <select id="formAddPort.authenticationProvider" data-dojo-type="dijit.form.FilteringSelect" style="margin: 0;"
- data-dojo-props="name:'authenticationProvider',label:'Authentication Provider:', searchAttr: 'name', required: false, placeHolder: 'Default', value: '' ">
- </select>
<select id="formAddPort.type" data-dojo-type="dijit.form.FilteringSelect"
- data-dojo-props="name: 'type', value: '',placeHolder: 'Select Port Type', label: 'Port Type:'">
+ data-dojo-props="name: 'type', value: '',placeHolder: 'Select Port Type', label: 'Port Type*:'">
<option value="AMQP" selected="selected">AMQP</option>
<option value="JMX">JMX</option>
<option value="HTTP">HTTP</option>
</select>
</div>
- <div id="formAddPort:fieldsClientAuth">
- <input id="formAddPort.needClientAuth" type="checkbox" name="needClientAuth"
- dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Need SSL Client Certificate:'"/>
- <input id="formAddPort.wantClientAuth" type="checkbox" name="wantClientAuth"
- dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Want SSL Client Certificate:'"/>
+ <div id="formAddPort:fieldsAuthenticationProvider">
+ <select id="formAddPort.authenticationProvider" data-dojo-type="dijit.form.FilteringSelect"
+ data-dojo-props="name:'authenticationProvider',label:'Authentication Provider*:', searchAttr: 'name', required: true, placeHolder: 'Select Provider'">
+ </select>
</div>
<div id="formAddPort:fieldsAMQP">
<input id="formAddPort.bindingAddress" type="text" name="bindingAddress" placeholder="*"
dojoType="dijit.form.TextBox" data-dojo-props="label: 'Binding address:'"/>
<input id="formAddPort.protocolsDefault" type="checkbox" checked="checked"
- dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Support broker default AMQP versions:'"/>
+ dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Support default protocols:'"/>
<select id="formAddPort.protocolsAMQP" name="protocols" data-dojo-type="dijit.form.MultiSelect" multiple="true"
data-dojo-props="name: 'protocols', value: '', placeHolder: 'Select AMQP versions', label: 'AMQP versions:'"
missingMessage="AMQP protocol(s) must be supplied">
@@ -80,6 +70,37 @@
<option value="HTTPS">HTTPS</option>
</select>
</div>
+ <div id="formAddPort:transport" >
+ <select id="formAddPort.transports" data-dojo-type="dijit.form.FilteringSelect"
+ data-dojo-props="name: 'transports',label: 'Transport:',searchAttr: 'name',required:false,placeHolder: 'TCP', value: '' "
+ style="margin: 0;">
+ <option value="TCP">TCP</option>
+ <option value="SSL">SSL</option>
+ </select>
+ </div>
+ <div id="formAddPort:fieldsTransportSSL">
+ <select id="formAddPort.keyStore" data-dojo-type="dijit.form.FilteringSelect"
+ data-dojo-props="name:'keyStore',label:'Key Store*:', searchAttr: 'name', placeHolder: 'Select keystore', value: '', required: true ">
+ </select>
+ </div>
+ <div id="formAddPort:fieldsClientAuth">
+ <div id="formAddPort:fieldsClientAuthCheckboxes">
+ <input id="formAddPort.needClientAuth" type="checkbox" name="needClientAuth"
+ dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Need SSL Client Certificate:'" />
+ <input id="formAddPort.wantClientAuth" type="checkbox" name="wantClientAuth"
+ dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Want SSL Client Certificate:'" />
+ </div>
+ <div><strong>Trust Stores:</strong></div>
+ <table id="formAddPort.trustStores" data-dojo-type="dojox.grid.EnhancedGrid"
+ data-dojo-props="label:'Trust Stores:',plugins:{indirectSelection: true},rowSelector:'0px' " style="height: 100px; width:400px">
+ <thead>
+ <tr>
+ <th field="name">Name</th>
+ <th field="peersOnly">Peers Only</th>
+ </tr>
+ </thead>
+ </table>
+ </div>
<input type="hidden" id="formAddPort.id" name="id"/>
</div>
<div class="dijitDialogPaneActionBar">
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addQueue.html Tue Apr 23 20:54:19 2013
@@ -19,8 +19,9 @@
-
-->
<div class="dijitHidden">
- <div data-dojo-type="dijit.Dialog" style="width:600px;" data-dojo-props="title:'Add Queue'" id="addQueue">
+ <div data-dojo-type="dijit.Dialog" data-dojo-props="title:'Add Queue'" id="addQueue">
<form id="formAddQueue" method="post" dojoType="dijit.form.Form">
+ <div style="height:250px; width:600px; overflow: auto">
<table cellpadding="0" cellspacing="2">
<tr>
<td valign="top"><strong>Queue Name*: </strong></td>
@@ -173,10 +174,11 @@
</tr>
</table>
</div>
- <br/>
+ </div>
+ <div class="dijitDialogPaneActionBar">
<!-- submit buttons -->
<input type="submit" value="Create Queue" label="Create Queue" dojoType="dijit.form.Button" />
-
+ </div>
</form>
</div>
</div>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html Tue Apr 23 20:54:19 2013
@@ -62,10 +62,11 @@
</div>
</div>
- <br/>
+ <div class="dijitDialogPaneActionBar">
<!-- submit buttons -->
<input type="submit" value="Save" label="Save" dojoType="dijit.form.Button" />
<input type="hidden" id="formAddVirtualHost.id" name="id"/>
+ </div>
</form>
</div>
</div>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/css/common.css Tue Apr 23 20:54:19 2013
@@ -43,7 +43,6 @@ button {
-moz-border-radius: 4px 4px 4px 4px;
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15);
background-color: #E4F2FF;
- background-image: url("../dojo/dijit/themes/claro/form/images/button.png");
background-position: center top;
background-repeat: repeat-x;
border: 1px solid #769DC0;
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/groupprovider/showFileGroupManager.html Tue Apr 23 20:54:19 2013
@@ -19,6 +19,8 @@
-
-->
<div class="FileGroupManager">
+ <span style="">Path:</span><span class="path" style="position:absolute; left:6em"></span>
+ <br/>
<div data-dojo-type="dijit.TitlePane" data-dojo-props="title: 'Groups'">
<div class="groups"></div>
<button data-dojo-type="dijit.form.Button" class="addGroupButton">Add Group</button>
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/index.html Tue Apr 23 20:54:19 2013
@@ -24,6 +24,7 @@
<link rel="stylesheet" href="dojo/dojox/grid/resources/claroGrid.css">
<link rel="stylesheet" href="dojo/dojox/grid/enhanced/resources/claro/EnhancedGrid.css">
<link rel="stylesheet" href="dojo/dojox/grid/enhanced/resources/EnhancedGrid_rtl.css">
+ <link rel="stylesheet" href="dojo/dojox/form/resources/CheckedMultiSelect.css">
<link rel="stylesheet" href="css/common.css" media="screen">
<script>
function getContextPath()
@@ -65,7 +66,7 @@
"qpid/management/treeView",
"qpid/management/controller",
"qpid/common/footer",
- "qpid/authorization/sasl"]);
+ "qpid/authorization/checkUser"]);
</script>
</head>
@@ -74,9 +75,9 @@
<div id="pageLayout" data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design: 'headline', gutters: false">
<div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'top'">
<div id="header" class="header" style="float: left; width: 300px"></div>
- <div id="login" style="float: right"></div>
+ <div id="login" style="float: right; display:none"><strong>User: </strong> <span id="authenticatedUser"></span><a href="logout">[logout]</a></div>
</div>
- <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'leading', splitter: true">
+ <div data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'leading', splitter: true" style="width:20%">
<div qpid-type="treeView" qpid-props="query: 'rest/structure'" ></div>
</div>
<div id="managedViews" data-dojo-type="dijit.layout.TabContainer" data-dojo-props="region:'center', tabPosition: 'top'">
Copied: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js (from r1465590, qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js)
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js?p2=qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js&p1=qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js&r1=1465590&r2=1471141&rev=1471141&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/checkUser.js Tue Apr 23 20:54:19 2013
@@ -19,60 +19,18 @@
*
*/
-require(["dijit/form/DropDownButton",
- "dijit/TooltipDialog",
- "dijit/form/TextBox",
- "dojo/_base/xhr",
- "dojo/dom",
- "dojo/dom-construct",
+require(["dojo/dom",
"qpid/authorization/sasl",
- "dojo/domReady!"], function(DropDownButton, TooltipDialog, TextBox, xhr, dom, domConstruct, sasl){
-
-var dialog = new TooltipDialog({
- content:
- '<strong><label for="username" style="display:inline-block;width:100px;">Username:</label></strong>' +
- '<div data-dojo-type="dijit.form.TextBox" id="username"></div><br/>' +
- '<strong><label for="pass" style="display:inline-block;width:100px;">Password:</label></strong>' +
- '<div data-dojo-type="dijit.form.TextBox" type="password" id="pass"></div><br/>' +
- '<button data-dojo-type="dijit.form.Button" type="submit" id="loginButton">Login</button>'
-});
-
-var button = new DropDownButton({
- label: "Login",
- dropDown: dialog
-});
-
-var usernameSpan = domConstruct.create("span", {
- innerHTML: '<strong>User: </strong> <span id="authenticatedUser"></span><a href="logout">[logout]</a>',
- style: { display: "none" }
-});
-
-
-var loginDiv = dom.byId("login");
-loginDiv.appendChild(usernameSpan);
-loginDiv.appendChild(button.domNode);
+ "dojo/domReady!"], function(dom, sasl){
var updateUI = function updateUI(data)
{
if(data.user)
{
- dojo.byId("authenticatedUser").innerHTML = data.user;
- dojo.style(button.domNode, {display: 'none'});
- dojo.style(usernameSpan, {display: 'block'});
- }
- else
- {
- dojo.style(button.domNode, {display: 'block'});
- dojo.style(usernameSpan, {display: 'none'});
+ dom.byId("authenticatedUser").innerHTML = data.user;
+ dom.byId("login").style.display = "block";
}
};
-dijit.byId("loginButton").on("click", function(){
- sasl.authenticate(dojo.byId("username").value, dojo.byId("pass").value, updateUI);
-});
-
-dialog.startup();
-
sasl.getUser(updateUI);
-
});
\ No newline at end of file
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/authorization/sasl.js Tue Apr 23 20:54:19 2013
@@ -18,10 +18,7 @@
* under the License.
*
*/
-require(["dijit/form/DropDownButton", "dijit/TooltipDialog", "dijit/form/TextBox",
- "dojo/_base/xhr", "dojox/encoding/base64", "dojox/encoding/digests/_base", "dojox/encoding/digests/MD5"]);
-var button;
-var usernameSpan;
+define(["dojo/_base/xhr", "dojox/encoding/base64", "dojox/encoding/digests/_base", "dojox/encoding/digests/MD5"], function () {
var encodeUTF8 = function encodeUTF8(str) {
var byteArray = [];
@@ -49,8 +46,23 @@ var decodeUTF8 = function decodeUTF8(byt
return decodeURIComponent(str);
};
+var errorHandler = function errorHandler(error)
+{
+ if(error.status == 401)
+ {
+ alert("Authentication Failed");
+ }
+ else if(error.status == 403)
+ {
+ alert("Authorization Failed");
+ }
+ else
+ {
+ alert(error);
+ }
+}
-var saslPlain = function saslPlain(user, password)
+var saslPlain = function saslPlain(user, password, callbackFunction)
{
var responseArray = [ 0 ].concat(encodeUTF8( user )).concat( [ 0 ] ).concat( encodeUTF8( password ) );
var plainResponse = dojox.encoding.base64.encode(responseArray);
@@ -65,25 +77,10 @@ var saslPlain = function saslPlain(user,
},
handleAs: "json",
failOk: true
- }).then(function()
- {
- updateAuthentication();
- },
- function(error)
- {
- if(error.status == 403)
- {
- alert("Authentication Failed");
- }
- else
- {
- alert(error);
- }
- updateAuthentication();
- });
+ }).then(callbackFunction, errorHandler);
};
-var saslCramMD5 = function saslCramMD5(user, password)
+var saslCramMD5 = function saslCramMD5(user, password, saslMechanism, callbackFunction)
{
// Using dojo.xhrGet, as very little information is being sent
@@ -91,7 +88,7 @@ var saslCramMD5 = function saslCramMD5(u
// The URL of the request
url: "rest/sasl",
content: {
- mechanism: "CRAM-MD5"
+ mechanism: saslMechanism
},
handleAs: "json",
failOk: true
@@ -121,22 +118,7 @@ var saslCramMD5 = function saslCramMD5(u
},
handleAs: "json",
failOk: true
- }).then(function()
- {
- updateAuthentication();
- },
- function(error)
- {
- if(error.status == 403)
- {
- alert("Authentication Failed");
- }
- else
- {
- alert(error);
- }
- updateAuthentication();
- });
+ }).then(callbackFunction, errorHandler);
},
function(error)
@@ -163,86 +145,45 @@ var containsMechanism = function contain
return false;
};
-var doAuthenticate = function doAuthenticate()
+var SaslClient = {};
+
+SaslClient.authenticate = function(username, password, callbackFunction)
{
dojo.xhrGet({
- // The URL of the request
url: "rest/sasl",
- handleAs: "json"
+ handleAs: "json",
+ failOk: true
}).then(function(data)
{
- var mechMap = data.mechanisms;
-
- if (containsMechanism(mechMap, "CRAM-MD5"))
- {
- saslCramMD5(dojo.byId("username").value, dojo.byId("pass").value);
- updateAuthentication();
- }
- else if (containsMechanism(mechMap, "PLAIN"))
- {
- saslPlain(dojo.byId("username").value, dojo.byId("pass").value);
- updateAuthentication();
- }
- else
- {
- alert("No supported SASL mechanism offered: " + mechMap);
- }
- }
- );
-
-
+ var mechMap = data.mechanisms;
+ if (containsMechanism(mechMap, "CRAM-MD5"))
+ {
+ saslCramMD5(username, password, "CRAM-MD5", callbackFunction);
+ }
+ else if (containsMechanism(mechMap, "CRAM-MD5-HEX"))
+ {
+ var hashedPassword = dojox.encoding.digests.MD5(password, dojox.encoding.digests.outputTypes.Hex);
+ saslCramMD5(username, hashedPassword, "CRAM-MD5-HEX", callbackFunction);
+ }
+ else if (containsMechanism(mechMap, "PLAIN"))
+ {
+ saslPlain(username, password, callbackFunction);
+ }
+ else
+ {
+ alert("No supported SASL mechanism offered: " + mechMap);
+ }
+ }, errorHandler);
};
-
-var updateAuthentication = function updateAuthentication()
+SaslClient.getUser = function(callbackFunction)
{
dojo.xhrGet({
- // The URL of the request
url: "rest/sasl",
- handleAs: "json"
- }).then(function(data)
- {
- if(data.user)
- {
- dojo.byId("authenticatedUser").innerHTML = data.user;
- dojo.style(button.domNode, {display: 'none'});
- dojo.style(usernameSpan, {display: 'block'});
- }
- else
- {
- dojo.style(button.domNode, {display: 'block'});
- dojo.style(usernameSpan, {display: 'none'});
- }
- }
- );
+ handleAs: "json",
+ failOk: true
+ }).then(callbackFunction, errorHandler);
};
-require(["dijit/form/DropDownButton", "dijit/TooltipDialog", "dijit/form/TextBox", "dojo/_base/xhr", "dojo/dom", "dojo/dom-construct", "dojo/domReady!"],
- function(DropDownButton, TooltipDialog, TextBox, xhr, dom, domConstruct){
- var dialog = new TooltipDialog({
- content:
- '<strong><label for="username" style="display:inline-block;width:100px;">Username:</label></strong>' +
- '<div data-dojo-type="dijit.form.TextBox" id="username"></div><br/>' +
- '<strong><label for="pass" style="display:inline-block;width:100px;">Password:</label></strong>' +
- '<div data-dojo-type="dijit.form.TextBox" type="password" id="pass"></div><br/>' +
- '<button data-dojo-type="dijit.form.Button" data-dojo-props="onClick:doAuthenticate" type="submit">Login</button>'
- });
-
- button = new DropDownButton({
- label: "Login",
- dropDown: dialog
- });
-
- usernameSpan = domConstruct.create("span", { innerHTML: '<strong>User: </strong> <span id="authenticatedUser"></span><a href="logout">[logout]</a>',
- style: { display: "none" }});
-
-
- var loginDiv = dom.byId("login");
- loginDiv.appendChild(usernameSpan);
- loginDiv.appendChild(button.domNode);
-
-
-
-
- updateAuthentication();
-});
\ No newline at end of file
+return SaslClient;
+});
Modified: qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js
URL: http://svn.apache.org/viewvc/qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js?rev=1471141&r1=1471140&r2=1471141&view=diff
==============================================================================
--- qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js (original)
+++ qpid/branches/QPID-4659/qpid/java/broker-plugins/management-http/src/main/java/resources/js/qpid/common/util.js Tue Apr 23 20:54:19 2013
@@ -33,7 +33,7 @@ define(["dojo/_base/xhr",
"dijit/form/RadioButton",
"dijit/form/CheckBox",
"dojox/layout/TableContainer",
- "dojox/layout/ScrollPane",
+ "dijit/layout/ContentPane",
"dojox/validate/us",
"dojox/validate/web",
"dojo/domReady!"
@@ -141,7 +141,7 @@ define(["dojo/_base/xhr",
return (type === "PlainPasswordFile" || type === "Base64MD5PasswordFile");
};
- util.showSetAttributesDialog = function(attributeWidgetFactories, data, putURL, dialogTitle)
+ util.showSetAttributesDialog = function(attributeWidgetFactories, data, putURL, dialogTitle, appendNameToUrl)
{
var layout = new dojox.layout.TableContainer({
cols: 1,
@@ -154,7 +154,7 @@ define(["dojo/_base/xhr",
var form = new dijit.form.Form();
var dialogContent = dom.create("div");
- var dialogContentArea = dom.create("div", { "class": "dijitDialogPaneContentArea"});
+ var dialogContentArea = dom.create("div", {"style": {width: 600}});
var dialogActionBar = dom.create("div", { "class": "dijitDialogPaneActionBar"} );
dialogContent.appendChild(dialogContentArea);
dialogContent.appendChild(dialogActionBar);
@@ -171,11 +171,17 @@ define(["dojo/_base/xhr",
var widget = attributeWidgetFactory.createWidget(data);
var name = attributeWidgetFactory.name ? attributeWidgetFactory.name : widget.name;
widgets[name] = widget;
- widget.initialValue = widget.value;
var dotPos = name.indexOf(".");
if (dotPos == -1)
{
- layout.addChild(widget);
+ if (widget instanceof dijit.layout.ContentPane)
+ {
+ dialogContentArea.appendChild(widget.domNode);
+ }
+ else
+ {
+ layout.addChild(widget);
+ }
}
else
{
@@ -197,7 +203,7 @@ define(["dojo/_base/xhr",
groups[groupName] = groupFieldContainer;
var groupTitle = attributeWidgetFactory.groupName ? attributeWidgetFactory.groupName :
groupName.charAt(0).toUpperCase() + groupName.slice(1);
- var panel = new dijit.TitlePane({title: groupTitle, toggleable: false, content: groupFieldContainer.domNode});
+ var panel = new dijit.TitlePane({title: groupTitle, content: groupFieldContainer.domNode});
dialogContentArea.appendChild(dom.create("br"));
dialogContentArea.appendChild(panel.domNode);
}
@@ -224,8 +230,7 @@ define(["dojo/_base/xhr",
}
var setAttributesDialog = new dijit.Dialog({
title: dialogTitle,
- content: form,
- style: "width: 600px; max-height: 80%"
+ content: form
});
form.on("submit", function(e)
{
@@ -235,23 +240,29 @@ define(["dojo/_base/xhr",
if(form.validate())
{
var values = {};
- for(var i in widgets)
+ var formWidgets = form.getDescendants();
+ for(var i in formWidgets)
{
- var widget = widgets[i];
+ var widget = formWidgets[i];
var value = widget.value;
var propName = widget.name;
- if ((widget instanceof dijit.form.CheckBox || widget instanceof dijit.form.RadioButton))
- {
- values[ propName ] = widget.checked;
- }
- else if (value != widget.initialValue)
- {
- values[ propName ] = value ? value: null;
+ if (propName && !widget.disabled){
+ if ((widget instanceof dijit.form.CheckBox || widget instanceof dijit.form.RadioButton)) {
+ if (widget.checked != widget.initialValue) {
+ values[ propName ] = widget.checked;
+ }
+ } else if (value != widget.initialValue) {
+ values[ propName ] = value ? value: null;
+ }
}
}
var that = this;
- xhr.put({url: putURL, sync: true, handleAs: "json",
+ var url = putURL;
+ if (appendNameToUrl){
+ url = url + "/" + encodeURIComponent(values["name"]);
+ }
+ xhr.put({url: url , sync: true, handleAs: "json",
headers: { "Content-Type": "application/json"},
putData: json.toJson(values),
load: function(x) {that.success = true; },
@@ -280,15 +291,24 @@ define(["dojo/_base/xhr",
});
form.connectChildren(true);
setAttributesDialog.startup();
- setAttributesDialog.on("show", function(){
- var data = geometry.position(dialogContentArea);
- var maxHeight = win.getBox().h * 0.6;
- if (data.h > maxHeight)
- {
- dialogContentArea.style.height = maxHeight + "px";
- dialogContentArea.style.overflow= "auto";
- }
- })
+ var formWidgets = form.getDescendants();
+ var aproximateHeight = 0;
+ for(var i in formWidgets){
+ var widget = formWidgets[i];
+ var propName = widget.name;
+ if (propName) {
+ if ((widget instanceof dijit.form.CheckBox || widget instanceof dijit.form.RadioButton)) {
+ widget.initialValue = widget.checked;
+ } else {
+ widget.initialValue = widget.value;
+ }
+ aproximateHeight += 30;
+ }
+ }
+ var viewport = win.getBox();
+ var maxHeight = Math.max(Math.floor(viewport.h * 0.6), 100);
+ dialogContentArea.style.overflow= "auto";
+ dialogContentArea.style.height = Math.min(aproximateHeight, maxHeight ) + "px";
setAttributesDialog.show();
};
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org