You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2010/05/31 18:03:44 UTC
svn commit: r949781 [1/5] - in /qpid/trunk/qpid/java: broker/etc/
broker/src/main/java/org/apache/qpid/qmf/
broker/src/main/java/org/apache/qpid/server/
broker/src/main/java/org/apache/qpid/server/binding/
broker/src/main/java/org/apache/qpid/server/co...
Author: robbie
Date: Mon May 31 16:03:41 2010
New Revision: 949781
URL: http://svn.apache.org/viewvc?rev=949781&view=rev
Log:
QPID-2606: Access Control Modifications
Applied patch from Andrew Kennedy <an...@gmail.com>
Added:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/AbstractProxyPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/Result.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Permission.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityManager.java (with props)
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPluginActivator.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/SecurityPluginFactory.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AuthorizationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectProperties.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ObjectType.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Operation.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ExchangeDenier.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccess.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/management/
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/management/AMQUserManagementMBean.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/management/
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/management/AMQUserManagementMBeanTest.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBeanTest.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/plugins/PluginTest.java
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/AMQSecurityException.java
qpid/trunk/qpid/java/systests/etc/config-systests-aclv2-settings.xml
- copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
qpid/trunk/qpid/java/systests/etc/config-systests-aclv2.xml
- copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
qpid/trunk/qpid/java/systests/etc/global-default.txt
qpid/trunk/qpid/java/systests/etc/global-externaladminacl-changeloggerleveldenied.txt
qpid/trunk/qpid/java/systests/etc/global-externaladminacl-getallloggerlevelsdenied.txt
qpid/trunk/qpid/java/systests/etc/test-default.txt
qpid/trunk/qpid/java/systests/etc/test-externalacljmx-deleteexchangefailure.txt
qpid/trunk/qpid/java/systests/etc/test-externalacljmx.txt
qpid/trunk/qpid/java/systests/etc/test2-default.txt
qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-aclv2-settings.xml
- copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-2.xml
qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-aclv2.xml
- copied, changed from r949780, qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/AbstractACLTestCase.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExhaustiveACLTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLFileTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLJMXTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalACLTest.java
- copied, changed from r949780, qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Accessable.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/ExternalAdminACLTest.java
Removed:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AccessResult.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AccessRights.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Accessable.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/AuthorizationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/VirtualHostAccess.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBean.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AbstractACLPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/BasicACLPlugin.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/LegacyAccessPlugin.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ExchangeDenier.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/QueueDenier.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/management/AMQUserManagementMBeanTest.java
Modified:
qpid/trunk/qpid/java/broker/etc/config.xml
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/AMQProtocolEngine.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueFactory.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/SimpleAMQQueue.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/Permission.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/AllowAll.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/DenyAll.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/AuthenticationResult.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/Base64MD5PasswordFilePrincipalDatabase.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/database/ConfigurationFilePrincipalDatabaseManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/AuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/manager/PrincipalDatabaseAuthenticationManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/auth/rmi/RMIPasswordAuthenticator.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/state/AMQStateManager.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/subscription/SubscriptionFactoryImpl.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerConnectionDelegate.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSession.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostConfigRecoveryHandler.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/plugins/VirtualHostPlugin.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/AMQQueueFactoryTest.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/queue/SimpleAMQQueueTest.java
qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-acl-settings.xml
qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-2.xml
qpid/trunk/qpid/java/systests/etc/virtualhosts-systests-firewall-3.xml
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/failover/MessageDisappearWithIOExceptionTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/acl/SimpleACLTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/security/firewall/FirewallConfigTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/JMXTestUtils.java
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
qpid/trunk/qpid/java/test-profiles/CPPExcludes
qpid/trunk/qpid/java/test-profiles/JavaInVMExcludes
Modified: qpid/trunk/qpid/java/broker/etc/config.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/config.xml?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/config.xml (original)
+++ qpid/trunk/qpid/java/broker/etc/config.xml Mon May 31 16:03:41 2010
@@ -25,6 +25,7 @@
<conf>${prefix}/etc</conf>
<plugin-directory>${QPID_HOME}/lib/plugins</plugin-directory>
+ <cache-directory>${QPID_WORK}/cache</cache-directory>
<connector>
<!-- To enable SSL edit the keystorePath and keystorePassword
@@ -83,9 +84,7 @@
</principal-database>
</principal-databases>
- <access>
- <class>org.apache.qpid.server.security.access.plugins.AllowAll</class>
- </access>
+ <allow-all />
<msg-auth>false</msg-auth>
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/qmf/QMFService.java Mon May 31 16:03:41 2010
@@ -1063,7 +1063,14 @@ public class QMFService implements Confi
public BrokerSchema.QueueClass.PurgeMethodResponseCommand purge(final BrokerSchema.QueueClass.PurgeMethodResponseCommandFactory factory,
final Long request)
{
- _obj.purge(request);
+ try
+ {
+ _obj.purge(request);
+ } catch (AMQException e)
+ {
+ // TODO
+ throw new RuntimeException();
+ }
return factory.createResponseCommand();
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java Mon May 31 16:03:41 2010
@@ -1,5 +1,4 @@
/*
- *
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -16,24 +15,6 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
- */
-/*
- *
- * Copyright (c) 2006 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
*/
package org.apache.qpid.server;
@@ -189,8 +170,9 @@ public class AMQBrokerManagerMBean exten
* @param type
* @param durable
* @throws JMException
+ * @throws MBeanException
*/
- public void createNewExchange(String exchangeName, String type, boolean durable) throws JMException
+ public void createNewExchange(String exchangeName, String type, boolean durable) throws JMException, MBeanException
{
CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
try
@@ -216,7 +198,8 @@ public class AMQBrokerManagerMBean exten
}
catch (AMQException ex)
{
- throw new MBeanException(ex, "Error in creating exchange " + exchangeName);
+ JMException jme = new JMException(ex.toString());
+ throw new MBeanException(jme, "Error in creating exchange " + exchangeName);
}
finally
{
@@ -229,8 +212,9 @@ public class AMQBrokerManagerMBean exten
*
* @param exchangeName
* @throws JMException
+ * @throws MBeanException
*/
- public void unregisterExchange(String exchangeName) throws JMException
+ public void unregisterExchange(String exchangeName) throws JMException, MBeanException
{
// TODO
// Check if the exchange is in use.
@@ -244,7 +228,8 @@ public class AMQBrokerManagerMBean exten
}
catch (AMQException ex)
{
- throw new MBeanException(ex, "Error in unregistering exchange " + exchangeName);
+ JMException jme = new JMException(ex.toString());
+ throw new MBeanException(jme, "Error in unregistering exchange " + exchangeName);
}
finally
{
@@ -260,8 +245,9 @@ public class AMQBrokerManagerMBean exten
* @param durable
* @param owner
* @throws JMException
+ * @throws MBeanException
*/
- public void createNewQueue(String queueName, String owner, boolean durable) throws JMException
+ public void createNewQueue(String queueName, String owner, boolean durable) throws JMException, MBeanException
{
AMQQueue queue = _queueRegistry.getQueue(new AMQShortString(queueName));
if (queue != null)
@@ -278,8 +264,7 @@ public class AMQBrokerManagerMBean exten
ownerShortString = new AMQShortString(owner);
}
- queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString, false, false,
- getVirtualHost(), null);
+ queue = AMQQueueFactory.createAMQQueueImpl(new AMQShortString(queueName), durable, ownerShortString, false, false, getVirtualHost(), null);
if (queue.isDurable() && !queue.isAutoDelete())
{
_durableConfig.createQueue(queue);
@@ -289,8 +274,7 @@ public class AMQBrokerManagerMBean exten
}
catch (AMQException ex)
{
- JMException jme = new JMException(ex.getMessage());
- jme.initCause(ex);
+ JMException jme = new JMException(ex.toString());
throw new MBeanException(jme, "Error in creating queue " + queueName);
}
finally
@@ -309,13 +293,14 @@ public class AMQBrokerManagerMBean exten
*
* @param queueName
* @throws JMException
+ * @throws MBeanException
*/
- public void deleteQueue(String queueName) throws JMException
+ public void deleteQueue(String queueName) throws JMException, MBeanException
{
AMQQueue queue = _queueRegistry.getQueue(new AMQShortString(queueName));
if (queue == null)
{
- throw new JMException("The Queue " + queueName + " is not a registerd queue.");
+ throw new JMException("The Queue " + queueName + " is not a registered queue.");
}
CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
@@ -329,8 +314,7 @@ public class AMQBrokerManagerMBean exten
}
catch (AMQException ex)
{
- JMException jme = new JMException(ex.getMessage());
- jme.initCause(ex);
+ JMException jme = new JMException(ex.toString());
throw new MBeanException(jme, "Error in deleting queue " + queueName);
}
finally
@@ -339,14 +323,16 @@ public class AMQBrokerManagerMBean exten
}
}
+ @Override
public ManagedObject getParentObject()
{
return _virtualHostMBean;
}
// This will have a single instance for a virtual host, so not having the name property in the ObjectName
+ @Override
public ObjectName getObjectName() throws MalformedObjectNameException
{
return getObjectNameForSingleInstanceMBean();
}
-} // End of MBean class
+}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQChannel.java Mon May 31 16:03:41 2010
@@ -23,6 +23,7 @@ package org.apache.qpid.server;
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.framing.AMQMethodBody;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
@@ -244,9 +245,12 @@ public class AMQChannel implements Sessi
return _channelId;
}
- public void setPublishFrame(MessagePublishInfo info, final Exchange e) throws AMQException
+ public void setPublishFrame(MessagePublishInfo info, final Exchange e) throws AMQSecurityException
{
-
+ if (!getVirtualHost().getSecurityManager().authorisePublish(info.isImmediate(), info.getRoutingKey().asString(), e.getName()))
+ {
+ throw new AMQSecurityException("Permission denied: " + e.getName());
+ }
_currentMessage = new IncomingMessage(info);
_currentMessage.setExchange(e);
}
@@ -421,7 +425,7 @@ public class AMQChannel implements Sessi
{
throw new AMQException("Consumer already exists with same tag: " + tag);
}
-
+
Subscription subscription =
SubscriptionFactoryImpl.INSTANCE.createSubscription(_channelId, _session, tag, acks, filters, noLocal, _creditManager);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/Main.java Mon May 31 16:03:41 2010
@@ -25,12 +25,12 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
-import java.util.Properties;
-import java.util.Set;
+import java.util.Arrays;
+import java.util.EnumSet;
import java.util.HashSet;
import java.util.List;
-import java.util.Collection;
-import java.util.Arrays;
+import java.util.Properties;
+import java.util.Set;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
@@ -42,8 +42,6 @@ import org.apache.commons.cli.PosixParse
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.QpidLog4JConfigurator;
-import org.apache.qpid.transport.network.ConnectionBinding;
-import org.apache.qpid.transport.*;
import org.apache.qpid.common.QpidProperties;
import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.server.configuration.ServerConfiguration;
@@ -56,21 +54,18 @@ import org.apache.qpid.server.logging.ma
import org.apache.qpid.server.logging.messages.BrokerMessages;
import org.apache.qpid.server.protocol.AMQProtocolEngineFactory;
import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory;
+import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory.VERSION;
import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
-import org.apache.qpid.server.registry.IApplicationRegistry;
-import org.apache.qpid.server.transport.ServerConnection;
import org.apache.qpid.server.transport.QpidAcceptor;
import org.apache.qpid.ssl.SSLContextFactory;
import org.apache.qpid.transport.NetworkDriver;
import org.apache.qpid.transport.network.mina.MINANetworkDriver;
-import org.apache.qpid.server.protocol.MultiVersionProtocolEngineFactory.VERSION;
/**
* Main entry point for AMQPD.
*
*/
-@SuppressWarnings({"AccessStaticViaInstance"})
public class Main
{
private static Logger _logger;
@@ -83,7 +78,6 @@ public class Main
private static final int IPV4_ADDRESS_LENGTH = 4;
private static final char IPV4_LITERAL_SEPARATOR = '.';
- private static final Collection<VERSION> ALL_VERSIONS = Arrays.asList(VERSION.values());
protected static class InitException extends Exception
{
@@ -123,6 +117,7 @@ public class Main
}
}
+ @SuppressWarnings("static-access")
protected void setOptions(Options options)
{
Option help = new Option("h", "help", false, "print this message");
@@ -403,7 +398,7 @@ public class Main
NetworkDriver driver = new MINANetworkDriver();
- Set<VERSION> supported = new HashSet<VERSION>(ALL_VERSIONS);
+ Set<VERSION> supported = EnumSet.allOf(VERSION.class);
if(exclude_0_10.contains(port))
{
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/binding/BindingFactory.java Mon May 31 16:03:41 2010
@@ -20,7 +20,12 @@
*/
package org.apache.qpid.server.binding;
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.server.configuration.BindingConfig;
@@ -35,13 +40,8 @@ import org.apache.qpid.server.queue.AMQQ
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.virtualhost.VirtualHost;
-import java.util.Collections;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
public class BindingFactory
{
-
private final VirtualHost _virtualHost;
private final DurableConfigurationStore.Source _configSource;
private final Exchange _defaultExchange;
@@ -51,14 +51,14 @@ public class BindingFactory
public BindingFactory(final VirtualHost vhost)
{
- this(vhost,vhost.getExchangeRegistry().getDefaultExchange());
+ this(vhost, vhost.getExchangeRegistry().getDefaultExchange());
}
public BindingFactory(final DurableConfigurationStore.Source configSource, final Exchange defaultExchange)
{
_configSource = configSource;
_defaultExchange = defaultExchange;
- if(configSource instanceof VirtualHost)
+ if (configSource instanceof VirtualHost)
{
_virtualHost = (VirtualHost) configSource;
}
@@ -83,7 +83,7 @@ public class BindingFactory
private BindingImpl(String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> arguments)
{
- super(queue.getVirtualHost().getConfigStore().createId(),bindingKey, queue, exchange, arguments);
+ super(queue.getVirtualHost().getConfigStore().createId(), bindingKey, queue, exchange, arguments);
_logSubject = new BindingLogSubject(bindingKey,exchange,queue);
}
@@ -94,7 +94,7 @@ public class BindingFactory
removeBinding(this);
}
- public void onClose(final Exchange exchange)
+ public void onClose(final Exchange exchange) throws AMQSecurityException
{
removeBinding(this);
}
@@ -138,7 +138,7 @@ public class BindingFactory
- public boolean addBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments)
+ public boolean addBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments) throws AMQSecurityException
{
return makeBinding(bindingKey, queue, exchange, arguments, false, false);
}
@@ -147,37 +147,43 @@ public class BindingFactory
public boolean replaceBinding(final String bindingKey,
final AMQQueue queue,
final Exchange exchange,
- final Map<String, Object> arguments)
+ final Map<String, Object> arguments) throws AMQSecurityException
{
return makeBinding(bindingKey, queue, exchange, arguments, false, true);
}
- private boolean makeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments, boolean restore, boolean force)
+ private boolean makeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments, boolean restore, boolean force) throws AMQSecurityException
{
assert queue != null;
- if(bindingKey == null)
+ if (bindingKey == null)
{
bindingKey = "";
}
- if(exchange == null)
+ if (exchange == null)
{
exchange = _defaultExchange;
}
- if(arguments == null)
+ if (arguments == null)
{
- arguments = Collections.EMPTY_MAP;
+ arguments = Collections.emptyMap();
}
-
+
+ //Perform ACLs
+ if (!getVirtualHost().getSecurityManager().authoriseBind(exchange, queue, new AMQShortString(bindingKey)))
+ {
+ throw new AMQSecurityException("Permission denied: binding " + bindingKey);
+ }
+
BindingImpl b = new BindingImpl(bindingKey,queue,exchange,arguments);
BindingImpl existingMapping = _bindings.putIfAbsent(b,b);
- if(existingMapping == null || force)
+ if (existingMapping == null || force)
{
- if(existingMapping != null)
+ if (existingMapping != null)
{
removeBinding(existingMapping);
}
- if(b.isDurable() && !restore)
+ if (b.isDurable() && !restore)
{
try
{
@@ -185,7 +191,7 @@ public class BindingFactory
}
catch (AMQException e)
{
- throw new RuntimeException(e);
+ throw new RuntimeException(e); // FIXME
}
}
@@ -201,8 +207,6 @@ public class BindingFactory
{
return false;
}
-
-
}
private ConfigStore getConfigStore()
@@ -210,43 +214,49 @@ public class BindingFactory
return getVirtualHost().getConfigStore();
}
- public void restoreBinding(final String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> argumentMap)
+ public void restoreBinding(final String bindingKey, final AMQQueue queue, final Exchange exchange, final Map<String, Object> argumentMap) throws AMQSecurityException
{
makeBinding(bindingKey,queue,exchange,argumentMap,true, false);
}
- public void removeBinding(final Binding b)
+ public void removeBinding(final Binding b) throws AMQSecurityException
{
removeBinding(b.getBindingKey(), b.getQueue(), b.getExchange(), b.getArguments());
}
- public Binding removeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments)
+ public Binding removeBinding(String bindingKey, AMQQueue queue, Exchange exchange, Map<String, Object> arguments) throws AMQSecurityException
{
assert queue != null;
- if(bindingKey == null)
+ if (bindingKey == null)
{
bindingKey = "";
}
- if(exchange == null)
+ if (exchange == null)
{
exchange = _defaultExchange;
}
- if(arguments == null)
+ if (arguments == null)
{
- arguments = Collections.EMPTY_MAP;
+ arguments = Collections.emptyMap();
}
+ // Check access
+ if (!getVirtualHost().getSecurityManager().authoriseUnbind(exchange, new AMQShortString(bindingKey), queue))
+ {
+ throw new AMQSecurityException("Permission denied: binding " + bindingKey);
+ }
+
BindingImpl b = _bindings.remove(new BindingImpl(bindingKey,queue,exchange,arguments));
- if(b != null)
+ if (b != null)
{
exchange.removeBinding(b);
queue.removeBinding(b);
exchange.removeCloseTask(b);
queue.removeQueueDeleteTask(b);
- if(b.isDurable())
+ if (b.isDurable())
{
try
{
@@ -257,12 +267,11 @@ public class BindingFactory
}
catch (AMQException e)
{
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ throw new RuntimeException(e); // FIXME
}
}
b.logDestruction();
getConfigStore().removeConfiguredObject(b);
-
}
return b;
@@ -281,7 +290,7 @@ public class BindingFactory
}
if(arguments == null)
{
- arguments = Collections.EMPTY_MAP;
+ arguments = Collections.emptyMap();
}
BindingImpl b = new BindingImpl(bindingKey,queue,exchange,arguments);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/QueueConfiguration.java Mon May 31 16:03:41 2010
@@ -25,6 +25,7 @@ import java.util.List;
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
+import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
public class QueueConfiguration extends ConfigurationPlugin
@@ -109,7 +110,7 @@ public class QueueConfiguration extends
public String getExchange()
{
- return getStringValue("exchange", null);
+ return getStringValue("exchange", ExchangeDefaults.DEFAULT_EXCHANGE_NAME.asString());
}
public List getRoutingKeys()
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Mon May 31 16:03:41 2010
@@ -20,6 +20,15 @@
package org.apache.qpid.server.configuration;
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+
import org.apache.commons.configuration.CompositeConfiguration;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
@@ -27,26 +36,17 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.SystemConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.log4j.Logger;
import org.apache.qpid.server.configuration.management.ConfigurationManagementMBean;
import org.apache.qpid.server.configuration.plugins.ConfigurationPlugin;
-import org.apache.qpid.server.configuration.plugins.ConfigurationPluginFactory;
+import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
-import org.apache.qpid.server.registry.ApplicationRegistry;
import org.apache.qpid.transport.NetworkDriverConfiguration;
import sun.misc.Signal;
import sun.misc.SignalHandler;
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
public class ServerConfiguration extends ConfigurationPlugin implements SignalHandler
{
protected static final Logger _logger = Logger.getLogger(ServerConfiguration.class);
@@ -63,17 +63,22 @@ public class ServerConfiguration extends
public static final int DEFAULT_SSL_PORT = 8672;
public static final long DEFAULT_HOUSEKEEPING_PERIOD = 30000L;
public static final int DEFAULT_JMXPORT = 8999;
+
+ public static final String QPID_HOME = "QPID_HOME";
+ public static final String QPID_WORK = "QPID_WORK";
+ public static final String LIB_DIR = "lib";
+ public static final String PLUGIN_DIR = "plugins";
+ public static final String CACHE_DIR = "cache";
private Map<String, VirtualHostConfiguration> _virtualHosts = new HashMap<String, VirtualHostConfiguration>();
private File _configFile;
private File _vhostsFile;
- private Logger _log = LoggerFactory.getLogger(this.getClass());
+ private Logger _log = Logger.getLogger(this.getClass());
private ConfigurationManagementMBean _mbean;
-
// Map of environment variables to config items
private static final Map<String, String> envVarMap = new HashMap<String, String>();
@@ -142,6 +147,7 @@ public class ServerConfiguration extends
}
catch (IllegalArgumentException e)
{
+ _logger.error("Signal HUP not supported for OS: " + System.getProperty("os.name"));
// We're on something that doesn't handle SIGHUP, how sad, Windows.
}
}
@@ -192,7 +198,7 @@ public class ServerConfiguration extends
public String[] getElementsProcessed()
{
- return new String[]{""};
+ return new String[] { "" };
}
@Override
@@ -308,7 +314,6 @@ public class ServerConfiguration extends
*/
public Locale getLocale()
{
-
String localeString = getStringValue(ADVANCED_LOCALE);
// Expecting locale of format langauge_country_variant
@@ -432,10 +437,15 @@ public class ServerConfiguration extends
_logger.warn(SECURITY_CONFIG_RELOADED);
}
}
-
+
public String getQpidWork()
{
- return System.getProperty("QPID_WORK", System.getProperty("java.io.tmpdir"));
+ return System.getProperty(QPID_WORK, System.getProperty("java.io.tmpdir"));
+ }
+
+ public String getQpidHome()
+ {
+ return System.getProperty(QPID_HOME);
}
public void setJMXManagementPort(int mport)
@@ -467,11 +477,16 @@ public class ServerConfiguration extends
{
return _virtualHosts.keySet().toArray(new String[_virtualHosts.size()]);
}
-
+
public String getPluginDirectory()
{
return getStringValue("plugin-directory");
}
+
+ public String getCacheDirectory()
+ {
+ return getStringValue("cache-directory");
+ }
public VirtualHostConfiguration getVirtualHostConfig(String name)
{
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/AbstractExchangeMBean.java Mon May 31 16:03:41 2010
@@ -20,6 +20,8 @@
*/
package org.apache.qpid.server.exchange;
+import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.server.management.AMQManagedObject;
import org.apache.qpid.server.management.ManagedObject;
import org.apache.qpid.server.management.ManagedObjectRegistry;
@@ -32,6 +34,7 @@ import org.apache.qpid.management.common
import org.apache.qpid.framing.AMQShortString;
import javax.management.openmbean.*;
+import javax.management.MBeanException;
import javax.management.NotCompliantMBeanException;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
@@ -133,7 +136,15 @@ public abstract class AbstractExchangeMB
}
CurrentActor.set(new ManagementActor(_logActor.getRootMessageLogger()));
- vhost.getBindingFactory().addBinding(binding,queue,getExchange(),null);
+ try
+ {
+ vhost.getBindingFactory().addBinding(binding,queue,getExchange(),null);
+ }
+ catch (AMQException ex)
+ {
+ JMException jme = new JMException(ex.toString());
+ throw new MBeanException(jme, "Error creating new binding " + binding);
+ }
CurrentActor.remove();
}
-} // End of MBean class
+}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeFactory.java Mon May 31 16:03:41 2010
@@ -26,9 +26,12 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
+import org.apache.qpid.AMQConnectionException;
import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.AMQUnknownExchangeType;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.qmf.ManagementExchange;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
import org.apache.qpid.server.registry.ApplicationRegistry;
@@ -79,27 +82,26 @@ public class DefaultExchangeFactory impl
public Exchange createExchange(String exchange, String type, boolean durable, boolean autoDelete)
throws AMQException
{
- ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(new AMQShortString(type));
- if (exchType == null)
- {
-
- throw new AMQUnknownExchangeType("Unknown exchange type: " + type,null);
- }
- Exchange e = exchType.newInstance(_host, (new AMQShortString(exchange)).intern(), durable, 0, autoDelete);
- return e;
-
+ return createExchange(new AMQShortString(exchange), new AMQShortString(type), durable, autoDelete, 0);
}
public Exchange createExchange(AMQShortString exchange, AMQShortString type, boolean durable, boolean autoDelete,
int ticket)
throws AMQException
{
+ // Check access
+ if (!_host.getSecurityManager().authoriseCreateExchange(autoDelete, durable, exchange, null, null, null, type))
+ {
+ String description = "Permission denied: exchange-name '" + exchange.asString() + "'";
+ throw new AMQSecurityException(description);
+ }
+
ExchangeType<? extends Exchange> exchType = _exchangeClassMap.get(type);
if (exchType == null)
{
-
throw new AMQUnknownExchangeType("Unknown exchange type: " + type,null);
}
+
Exchange e = exchType.newInstance(_host, exchange, durable, ticket, autoDelete);
return e;
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java Mon May 31 16:03:41 2010
@@ -20,18 +20,18 @@
*/
package org.apache.qpid.server.exchange;
+import java.util.Collection;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.server.exchange.ExchangeInitialiser;
import org.apache.qpid.server.queue.IncomingMessage;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.virtualhost.VirtualHost;
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
public class DefaultExchangeRegistry implements ExchangeRegistry
{
private static final Logger _log = Logger.getLogger(DefaultExchangeRegistry.class);
@@ -87,7 +87,14 @@ public class DefaultExchangeRegistry imp
public void unregisterExchange(AMQShortString name, boolean inUse) throws AMQException
{
+ // Check access
+ if (!_host.getSecurityManager().authoriseDelete(_exchangeMap.get(name)))
+ {
+ throw new AMQSecurityException();
+ }
+
// TODO: check inUse argument
+
Exchange e = _exchangeMap.remove(name);
_exchangeMapStr.remove(name.toString());
if (e != null)
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/Exchange.java Mon May 31 16:03:41 2010
@@ -21,6 +21,7 @@
package org.apache.qpid.server.exchange;
import org.apache.qpid.AMQException;
+import org.apache.qpid.AMQSecurityException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
@@ -138,6 +139,6 @@ public interface Exchange extends Exchan
public static interface Task
{
- public void onClose(Exchange exchange);
+ public void onClose(Exchange exchange) throws AMQSecurityException;
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeFactory.java Mon May 31 16:03:41 2010
@@ -22,8 +22,6 @@ package org.apache.qpid.server.exchange;
import java.util.Collection;
-import org.apache.commons.configuration.Configuration;
-
import org.apache.qpid.AMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.configuration.VirtualHostConfiguration;
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/federation/Bridge.java Mon May 31 16:03:41 2010
@@ -674,13 +674,22 @@ public class Bridge implements BridgeCon
options.put("qpid.trace.exclude", _link.getFederationTag());
options.put("qpid.trace.id",_link.getRemoteFederationTag());
- _queue = AMQQueueFactory.createAMQQueueImpl(_tmpQueueName,
+ try
+ {
+ _queue = AMQQueueFactory.createAMQQueueImpl(_tmpQueueName,
isDurable(),
_link.getFederationTag(),
false,
false,
- getVirtualHost(), options);
-
+ getVirtualHost(),
+ options);
+ }
+ catch (AMQException e)
+ {
+ // TODO
+ throw new RuntimeException(e);
+ }
+
FlowCreditManager_0_10 creditManager = new WindowCreditManager(0xFFFFFFFF,getMessageWindowSize());
Subscription_0_10 sub = new Subscription_0_10((ServerSession)session,
@@ -695,14 +704,13 @@ public class Bridge implements BridgeCon
try
{
_queue.registerSubscription(sub, true);
+ getVirtualHost().getBindingFactory().addBinding(_key, _queue, exchange, Collections.<String, Object>emptyMap());
}
catch (AMQException e)
{
// TODO
throw new RuntimeException(e);
}
-
- getVirtualHost().getBindingFactory().addBinding(_key, _queue, exchange, Collections.EMPTY_MAP);
}
public void close()
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicConsumeMethodHandler.java Mon May 31 16:03:41 2010
@@ -51,9 +51,6 @@ public class BasicConsumeMethodHandler i
{
AMQProtocolSession protocolConnection = stateManager.getProtocolSession();
-
-
-
AMQChannel channel = protocolConnection.getChannel(channelId);
VirtualHost vHost = protocolConnection.getVirtualHost();
@@ -93,17 +90,9 @@ public class BasicConsumeMethodHandler i
}
else
{
-
final AMQShortString consumerTagName;
- // Check authz
- if (!vHost.getAccessManager().authoriseConsume(protocolConnection,
- body.getExclusive(), body.getNoAck(),
- body.getNoLocal(), body.getNowait(), queue))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- else if (queue.isExclusive() && !queue.isDurable())
+ if (queue.isExclusive() && !queue.isDurable())
{
AMQSessionModel session = queue.getExclusiveOwningSession();
if (session == null || session.getConnectionModel() != protocolConnection)
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicGetMethodHandler.java Mon May 31 16:03:41 2010
@@ -92,13 +92,7 @@ public class BasicGetMethodHandler imple
}
else
{
-
- //Perform ACLs
- if (!vHost.getAccessManager().authoriseConsume(protocolConnection, body.getNoAck(), queue))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- else if (queue.isExclusive())
+ if (queue.isExclusive())
{
AMQSessionModel session = queue.getExclusiveOwningSession();
if (session == null || session.getConnectionModel() != protocolConnection)
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/BasicPublishMethodHandler.java Mon May 31 16:03:41 2010
@@ -23,14 +23,13 @@ package org.apache.qpid.server.handler;
import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.framing.BasicPublishBody;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.BasicPublishBody;
+import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.AMQChannel;
-import org.apache.qpid.framing.abstraction.MessagePublishInfo;
import org.apache.qpid.server.exchange.Exchange;
import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.security.access.Permission;
import org.apache.qpid.server.state.AMQStateManager;
import org.apache.qpid.server.state.StateAwareMethodListener;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -59,18 +58,17 @@ public class BasicPublishMethodHandler i
_logger.debug("Publish received on channel " + channelId);
}
- AMQShortString exchange = body.getExchange();
+ AMQShortString exchangeName = body.getExchange();
// TODO: check the delivery tag field details - is it unique across the broker or per subscriber?
- if (exchange == null)
+ if (exchangeName == null)
{
- exchange = ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
-
+ exchangeName = ExchangeDefaults.DEFAULT_EXCHANGE_NAME;
}
VirtualHost vHost = session.getVirtualHost();
- Exchange e = vHost.getExchangeRegistry().getExchange(exchange);
+ Exchange exch = vHost.getExchangeRegistry().getExchange(exchangeName);
// if the exchange does not exist we raise a channel exception
- if (e == null)
+ if (exch == null)
{
throw body.getChannelException(AMQConstant.NOT_FOUND, "Unknown exchange name");
}
@@ -86,17 +84,9 @@ public class BasicPublishMethodHandler i
throw body.getChannelNotFoundException(channelId);
}
- //Access Control
- if (!vHost.getAccessManager().authorisePublish(session,
- body.getImmediate(), body.getMandatory(),
- body.getRoutingKey(), e))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
-
MessagePublishInfo info = session.getMethodRegistry().getProtocolVersionMethodConverter().convertToInfo(body);
- info.setExchange(exchange);
- channel.setPublishFrame(info, e);
+ info.setExchange(exchangeName);
+ channel.setPublishFrame(info, exch);
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ChannelOpenHandler.java Mon May 31 16:03:41 2010
@@ -20,15 +20,19 @@
*/
package org.apache.qpid.server.handler;
-import java.util.UUID;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.UUID;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
-import org.apache.qpid.framing.*;
-import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
+import org.apache.qpid.framing.ChannelOpenBody;
+import org.apache.qpid.framing.ChannelOpenOkBody;
+import org.apache.qpid.framing.MethodRegistry;
+import org.apache.qpid.framing.ProtocolVersion;
import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
+import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
import org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.AMQChannel;
@@ -39,6 +43,8 @@ import org.apache.qpid.server.virtualhos
public class ChannelOpenHandler implements StateAwareMethodListener<ChannelOpenBody>
{
+ private static final Logger _logger = Logger.getLogger(ChannelOpenHandler.class);
+
private static ChannelOpenHandler _instance = new ChannelOpenHandler();
public static ChannelOpenHandler getInstance()
@@ -54,19 +60,16 @@ public class ChannelOpenHandler implemen
{
AMQProtocolSession session = stateManager.getProtocolSession();
VirtualHost virtualHost = session.getVirtualHost();
-
// Protect the broker against out of order frame request.
if (virtualHost == null)
{
throw new AMQException(AMQConstant.COMMAND_INVALID, "Virtualhost has not yet been set. ConnectionOpen has not been called.", null);
}
+ _logger.info("Connecting to: " + virtualHost.getName());
- final AMQChannel channel = new AMQChannel(session,channelId,
- virtualHost.getMessageStore());
-
+ final AMQChannel channel = new AMQChannel(session,channelId, virtualHost.getMessageStore());
-
session.addChannel(channel);
ChannelOpenOkBody response;
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionOpenMethodHandler.java Mon May 31 16:03:41 2010
@@ -20,18 +20,18 @@
*/
package org.apache.qpid.server.handler;
+import org.apache.log4j.Logger;
import org.apache.qpid.AMQException;
-import org.apache.qpid.framing.*;
-import org.apache.qpid.framing.amqp_0_91.MethodRegistry_0_91;
-import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
-import org.apache.qpid.framing.amqp_8_0.MethodRegistry_8_0;
+import org.apache.qpid.framing.AMQMethodBody;
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.ConnectionOpenBody;
+import org.apache.qpid.framing.MethodRegistry;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.state.AMQState;
import org.apache.qpid.server.state.AMQStateManager;
import org.apache.qpid.server.state.StateAwareMethodListener;
import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.log4j.Logger;
public class ConnectionOpenMethodHandler implements StateAwareMethodListener<ConnectionOpenBody>
{
@@ -57,7 +57,6 @@ public class ConnectionOpenMethodHandler
{
AMQProtocolSession session = stateManager.getProtocolSession();
-
//ignore leading '/'
String virtualHostName;
if ((body.getVirtualHost() != null) && body.getVirtualHost().charAt(0) == '/')
@@ -77,14 +76,15 @@ public class ConnectionOpenMethodHandler
}
else
{
- session.setVirtualHost(virtualHost);
-
- //Perform ACL
- if (!virtualHost.getAccessManager().authoriseConnect(session, virtualHost))
+ // Check virtualhost access
+ if (!virtualHost.getSecurityManager().accessVirtualhost(virtualHostName, session.getRemoteAddress().toString()))
{
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
+ throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied: '" + virtualHost.getName() + "'");
}
+ session.setVirtualHost(virtualHost);
+ _logger.error(session.getPrincipal().getName());
+
// See Spec (0.8.2). Section 3.1.2 Virtual Hosts
if (session.getContextKey() == null)
{
@@ -97,8 +97,6 @@ public class ConnectionOpenMethodHandler
stateManager.changeState(AMQState.CONNECTION_OPEN);
session.writeFrame(responseBody.generateFrame(channelId));
-
-
}
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionSecureOkMethodHandler.java Mon May 31 16:03:41 2010
@@ -97,7 +97,7 @@ public class ConnectionSecureOkMethodHan
ApplicationRegistry.getInstance().getConfiguration().getHeartBeatDelay());
session.writeFrame(tuneBody.generateFrame(0));
session.setAuthorizedID(new UsernamePrincipal(ss.getAuthorizationID()));
- disposeSaslServer(session);
+ disposeSaslServer(session);
break;
case CONTINUE:
stateManager.changeState(AMQState.CONNECTION_NOT_AUTH);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ConnectionStartOkMethodHandler.java Mon May 31 16:03:41 2010
@@ -60,11 +60,11 @@ public class ConnectionStartOkMethodHand
public void methodReceived(AMQStateManager stateManager, ConnectionStartOkBody body, int channelId) throws AMQException
{
AMQProtocolSession session = stateManager.getProtocolSession();
-
+
_logger.info("SASL Mechanism selected: " + body.getMechanism());
_logger.info("Locale selected: " + body.getLocale());
- AuthenticationManager authMgr = ApplicationRegistry.getInstance().getAuthenticationManager();//session.getVirtualHost().getAuthenticationManager();
+ AuthenticationManager authMgr = ApplicationRegistry.getInstance().getAuthenticationManager();
SaslServer ss = null;
try
@@ -73,8 +73,7 @@ public class ConnectionStartOkMethodHand
if (ss == null)
{
- throw body.getConnectionException(AMQConstant.RESOURCE_ERROR, "Unable to create SASL Server:" + body.getMechanism()
- );
+ throw body.getConnectionException(AMQConstant.RESOURCE_ERROR, "Unable to create SASL Server:" + body.getMechanism());
}
session.setSaslServer(ss);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java Mon May 31 16:03:41 2010
@@ -45,8 +45,6 @@ public class ExchangeDeclareHandler impl
return _instance;
}
-
-
private ExchangeDeclareHandler()
{
}
@@ -58,28 +56,15 @@ public class ExchangeDeclareHandler impl
ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
ExchangeFactory exchangeFactory = virtualHost.getExchangeFactory();
- if (!body.getPassive())
- {
- // Perform ACL if request is not passive
- if (!virtualHost.getAccessManager().authoriseCreateExchange(session, body.getAutoDelete(),
- body.getDurable(), body.getExchange(), body.getInternal(), body.getNowait(), body.getPassive(),
- body.getType()))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
-
- }
-
if (_logger.isDebugEnabled())
{
_logger.debug("Request to declare exchange of type " + body.getType() + " with name " + body.getExchange());
}
+
synchronized(exchangeRegistry)
{
Exchange exchange = exchangeRegistry.getExchange(body.getExchange());
-
-
if (exchange == null)
{
if(body.getPassive() && ((body.getType() == null) || body.getType().length() ==0))
@@ -90,7 +75,6 @@ public class ExchangeDeclareHandler impl
{
try
{
-
exchange = exchangeFactory.createExchange(body.getExchange() == null ? null : body.getExchange().intern(),
body.getType() == null ? null : body.getType().intern(),
body.getDurable(),
@@ -113,14 +97,12 @@ public class ExchangeDeclareHandler impl
throw new AMQConnectionException(AMQConstant.NOT_ALLOWED, "Attempt to redeclare exchange: " + body.getExchange() + " of type " + exchange.getTypeShortString() + " to " + body.getType() +".",body.getClazz(), body.getMethod(),body.getMajor(),body.getMinor(),null);
}
-
}
if(!body.getNowait())
{
MethodRegistry methodRegistry = session.getMethodRegistry();
AMQMethodBody responseBody = methodRegistry.createExchangeDeclareOkBody();
session.writeFrame(responseBody.generateFrame(channelId));
-
}
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeleteHandler.java Mon May 31 16:03:41 2010
@@ -27,7 +27,6 @@ import org.apache.qpid.protocol.AMQConst
import org.apache.qpid.server.exchange.ExchangeInUseException;
import org.apache.qpid.server.exchange.ExchangeRegistry;
import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.security.access.Permission;
import org.apache.qpid.server.state.AMQStateManager;
import org.apache.qpid.server.state.StateAwareMethodListener;
import org.apache.qpid.server.virtualhost.VirtualHost;
@@ -51,13 +50,6 @@ public class ExchangeDeleteHandler imple
VirtualHost virtualHost = session.getVirtualHost();
ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
- //Perform ACLs
- if (!virtualHost.getAccessManager().authoriseDelete(session,
- exchangeRegistry.getExchange(body.getExchange())))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
-
try
{
if(exchangeRegistry.getExchange(body.getExchange()) == null)
@@ -75,6 +67,5 @@ public class ExchangeDeleteHandler imple
throw body.getChannelException(AMQConstant.IN_USE, "Exchange in use");
// TODO: sort out consistent channel close mechanism that does all clean up etc.
}
-
}
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueBindHandler.java Mon May 31 16:03:41 2010
@@ -65,7 +65,6 @@ public class QueueBindHandler implements
ExchangeRegistry exchangeRegistry = virtualHost.getExchangeRegistry();
QueueRegistry queueRegistry = virtualHost.getQueueRegistry();
-
final AMQQueue queue;
final AMQShortString routingKey;
@@ -113,14 +112,7 @@ public class QueueBindHandler implements
try
{
-
- //Perform ACLs
- if (!virtualHost.getAccessManager().authoriseBind(protocolConnection, exch,
- queue, routingKey))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- else if (queue.isExclusive() && !queue.isDurable())
+ if (queue.isExclusive() && !queue.isDurable())
{
AMQSessionModel session = queue.getExclusiveOwningSession();
if (session == null || session.getConnectionModel() != protocolConnection)
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeclareHandler.java Mon May 31 16:03:41 2010
@@ -69,21 +69,9 @@ public class QueueDeclareHandler impleme
QueueRegistry queueRegistry = virtualHost.getQueueRegistry();
DurableConfigurationStore store = virtualHost.getDurableConfigurationStore();
-
- if (!body.getPassive())
- {
- // Perform ACL if request is not passive
- if (!virtualHost.getAccessManager().authoriseCreateQueue(protocolConnection, body.getAutoDelete(), body.getDurable(),
- body.getExclusive(), body.getNowait(), body.getPassive(), body.getQueue()))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- }
-
final AMQShortString queueName;
// if we aren't given a queue name, we create one which we return to the client
-
if ((body.getQueue() == null) || (body.getQueue().length() == 0))
{
queueName = createName();
@@ -94,11 +82,11 @@ public class QueueDeclareHandler impleme
}
AMQQueue queue;
+
//TODO: do we need to check that the queue already exists with exactly the same "configuration"?
synchronized (queueRegistry)
{
-
queue = queueRegistry.getQueue(queueName);
AMQSessionModel owningSession = null;
@@ -110,7 +98,6 @@ public class QueueDeclareHandler impleme
if (queue == null)
{
-
if (body.getPassive())
{
String msg = "Queue: " + queueName + " not found on VirtualHost(" + virtualHost + ").";
@@ -129,9 +116,8 @@ public class QueueDeclareHandler impleme
queue.setDeleteOnNoConsumers(true);
}
queueRegistry.registerQueue(queue);
- if(body.getExclusive())
+ if (body.getExclusive())
{
-
queue.setExclusiveOwningSession(protocolConnection.getChannel(channelId));
queue.setPrincipalHolder(protocolConnection);
@@ -153,7 +139,6 @@ public class QueueDeclareHandler impleme
}
});
}
-
}
if (autoRegister)
{
@@ -239,7 +224,6 @@ public class QueueDeclareHandler impleme
final AMQQueue queue = AMQQueueFactory.createAMQQueueImpl(queueName, body.getDurable(), owner, body.getAutoDelete(),
body.getExclusive(),virtualHost, body.getArguments());
-
if (body.getExclusive() && !body.getDurable())
{
final AMQProtocolSession.Task deleteQueueTask =
@@ -263,7 +247,7 @@ public class QueueDeclareHandler impleme
session.removeSessionCloseTask(deleteQueueTask);
}
});
- }// if exclusive and not durable
+ }
return queue;
}
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueDeleteHandler.java Mon May 31 16:03:41 2010
@@ -99,25 +99,18 @@ public class QueueDeleteHandler implemen
{
// TODO - Error code
throw body.getChannelException(AMQConstant.IN_USE, "Queue: " + body.getQueue() + " is still used.");
-
}
else
{
-
AMQSessionModel session = queue.getExclusiveOwningSession();
- //Perform ACLs
- if (!virtualHost.getAccessManager().authoriseDelete(protocolConnection, queue))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- else if (queue.isExclusive() && !queue.isDurable() && (session == null || session.getConnectionModel() != protocolConnection))
+ if (queue.isExclusive() && !queue.isDurable() && (session == null || session.getConnectionModel() != protocolConnection))
{
throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
"Queue " + queue.getNameShortString() + " is exclusive, but not created on this Connection.");
}
+
int purged = queue.delete();
-
if (queue.isDurable())
{
store.removeQueue(queue);
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueuePurgeHandler.java Mon May 31 16:03:41 2010
@@ -101,12 +101,7 @@ public class QueuePurgeHandler implement
{
AMQSessionModel session = queue.getExclusiveOwningSession();
- //Perform ACLs
- if (!virtualHost.getAccessManager().authorisePurge(protocolConnection, queue))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
- else if (queue.isExclusive() && (session == null || session.getConnectionModel() != protocolConnection))
+ if (queue.isExclusive() && (session == null || session.getConnectionModel() != protocolConnection))
{
throw body.getConnectionException(AMQConstant.NOT_ALLOWED,
"Queue is exclusive, but not created on this Connection.");
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java?rev=949781&r1=949780&r2=949781&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/QueueUnbindHandler.java Mon May 31 16:03:41 2010
@@ -20,24 +20,23 @@ package org.apache.qpid.server.handler;
*
*/
-
import org.apache.log4j.Logger;
-
-import org.apache.qpid.framing.*;
+import org.apache.qpid.AMQException;
+import org.apache.qpid.framing.AMQMethodBody;
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.framing.FieldTable;
+import org.apache.qpid.framing.QueueUnbindBody;
import org.apache.qpid.framing.amqp_0_9.MethodRegistry_0_9;
-import org.apache.qpid.server.state.StateAwareMethodListener;
-import org.apache.qpid.server.state.AMQStateManager;
-import org.apache.qpid.server.protocol.AMQProtocolSession;
-import org.apache.qpid.server.virtualhost.VirtualHost;
-import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.AMQChannel;
import org.apache.qpid.server.exchange.Exchange;
-import org.apache.qpid.server.queue.QueueRegistry;
+import org.apache.qpid.server.exchange.ExchangeRegistry;
+import org.apache.qpid.server.protocol.AMQProtocolSession;
import org.apache.qpid.server.queue.AMQQueue;
-import org.apache.qpid.server.AMQChannel;
-import org.apache.qpid.server.security.access.Permission;
-import org.apache.qpid.AMQException;
-import org.apache.qpid.AMQInvalidRoutingKeyException;
-import org.apache.qpid.protocol.AMQConstant;
+import org.apache.qpid.server.queue.QueueRegistry;
+import org.apache.qpid.server.state.AMQStateManager;
+import org.apache.qpid.server.state.StateAwareMethodListener;
+import org.apache.qpid.server.virtualhost.VirtualHost;
public class QueueUnbindHandler implements StateAwareMethodListener<QueueUnbindBody>
{
@@ -100,12 +99,6 @@ public class QueueUnbindHandler implemen
throw body.getChannelException(AMQConstant.NOT_FOUND, "Exchange " + body.getExchange() + " does not exist.");
}
- //Perform ACLs
- if (!virtualHost.getAccessManager().authoriseUnbind(session, exch, routingKey, queue))
- {
- throw body.getConnectionException(AMQConstant.ACCESS_REFUSED, "Permission denied");
- }
-
if(virtualHost.getBindingFactory().getBinding(String.valueOf(routingKey), queue, exch, FieldTable.convertToMap(body.getArguments())) == null)
{
throw body.getChannelException(AMQConstant.NOT_FOUND,"No such binding");
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org