You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ai...@apache.org on 2009/03/02 15:30:25 UTC

svn commit: r749315 - in /qpid/trunk/qpid/java/broker/src: main/java/org/apache/qpid/server/plugins/ main/java/org/apache/qpid/server/registry/ main/java/org/apache/qpid/server/security/access/ main/java/org/apache/qpid/server/security/access/plugins/n...

Author: aidan
Date: Mon Mar  2 14:30:25 2009
New Revision: 749315

URL: http://svn.apache.org/viewvc?rev=749315&view=rev
Log:
QPID-1583: Add test for reloading external firewall rules, fix buglets this test exposed.

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.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/registry/IApplicationRegistry.java
    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/plugins/network/FirewallFactory.java
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallPlugin.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
    qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/PluginManager.java Mon Mar  2 14:30:25 2009
@@ -35,6 +35,7 @@
 import org.apache.qpid.server.security.access.plugins.AllowAll;
 import org.apache.qpid.server.security.access.plugins.DenyAll;
 import org.apache.qpid.server.security.access.plugins.SimpleXML;
+import org.apache.qpid.server.security.access.plugins.network.FirewallPlugin;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleException;
 import org.osgi.util.tracker.ServiceTracker;
@@ -165,6 +166,7 @@
             _securityPlugins.put(SimpleXML.class.getName(), SimpleXML.FACTORY);
             _securityPlugins.put(AllowAll.class.getName(), AllowAll.FACTORY);
             _securityPlugins.put(DenyAll.class.getName(), DenyAll.FACTORY);
+            _securityPlugins.put(FirewallPlugin.class.getName(), FirewallPlugin.FACTORY);
         }
         return _securityPlugins;
     }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java Mon Mar  2 14:30:25 2009
@@ -24,6 +24,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.log4j.Logger;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.qpid.server.configuration.ServerConfiguration;
@@ -261,7 +262,7 @@
         return _virtualHostRegistry;
     }
 
-    public ACLManager getAccessManager()
+    public ACLManager getAccessManager() throws ConfigurationException
     {
         return new ACLManager(_configuration.getSecurityConfiguration(), _pluginManager);
     }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java Mon Mar  2 14:30:25 2009
@@ -24,6 +24,7 @@
 import java.net.InetSocketAddress;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.qpid.server.configuration.ServerConfiguration;
 import org.apache.qpid.server.management.ManagedObjectRegistry;
 import org.apache.qpid.server.plugins.PluginManager;
@@ -64,7 +65,7 @@
 
     VirtualHostRegistry getVirtualHostRegistry();
 
-    ACLManager getAccessManager();
+    ACLManager getAccessManager() throws ConfigurationException;
 
     PluginManager getPluginManager();
 

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLManager.java Mon Mar  2 14:30:25 2009
@@ -28,6 +28,7 @@
 import java.util.Map.Entry;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.log4j.Logger;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.server.configuration.SecurityConfiguration;
@@ -49,12 +50,12 @@
     private Map<String, ACLPlugin> _globalPlugins = new HashMap<String, ACLPlugin>();
     private Map<String, ACLPlugin> _hostPlugins = new HashMap<String, ACLPlugin>();
 
-    public ACLManager(SecurityConfiguration configuration, PluginManager manager)
+    public ACLManager(SecurityConfiguration configuration, PluginManager manager) throws ConfigurationException
     {
         this(configuration, manager, null);
     }
 
-    public ACLManager(SecurityConfiguration configuration, PluginManager manager, ACLPluginFactory securityPlugin)
+    public ACLManager(SecurityConfiguration configuration, PluginManager manager, ACLPluginFactory securityPlugin) throws ConfigurationException
     {
         _pluginManager = manager;
 
@@ -73,12 +74,12 @@
     }
 
 
-    public void configureHostPlugins(SecurityConfiguration hostConfig)
+    public void configureHostPlugins(SecurityConfiguration hostConfig) throws ConfigurationException
     {
         _hostPlugins = configurePlugins(hostConfig);
     }
     
-    public Map<String, ACLPlugin> configurePlugins(SecurityConfiguration hostConfig)
+    public Map<String, ACLPlugin> configurePlugins(SecurityConfiguration hostConfig) throws ConfigurationException
     {
         Configuration securityConfig = hostConfig.getConfiguration();
         Map<String, ACLPlugin> plugins = new HashMap<String, ACLPlugin>();

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPlugin.java Mon Mar  2 14:30:25 2009
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.security.access;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.qpid.framing.AMQShortString;
 import org.apache.qpid.server.exchange.Exchange;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
@@ -36,7 +37,7 @@
         ABSTAIN        
     }
 
-    void setConfiguration(Configuration config);
+    void setConfiguration(Configuration config) throws ConfigurationException;
 
     // These return true if the plugin thinks the action should be allowed, and false if not. 
     

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/ACLPluginFactory.java Mon Mar  2 14:30:25 2009
@@ -21,12 +21,13 @@
 package org.apache.qpid.server.security.access;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 
 public interface ACLPluginFactory
 {
 
     public boolean supportsTag(String name);
     
-    public ACLPlugin newInstance(Configuration config);
+    public ACLPlugin newInstance(Configuration config) throws ConfigurationException;
     
 }

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallFactory.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallFactory.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallFactory.java Mon Mar  2 14:30:25 2009
@@ -21,6 +21,7 @@
 package org.apache.qpid.server.security.access.plugins.network;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.qpid.server.security.access.ACLPlugin;
 import org.apache.qpid.server.security.access.ACLPluginFactory;
 
@@ -28,7 +29,7 @@
 {
 
     @Override
-    public ACLPlugin newInstance(Configuration config)
+    public ACLPlugin newInstance(Configuration config) throws ConfigurationException
     {
         FirewallPlugin plugin = new FirewallPlugin();
         plugin.setConfiguration(config);

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallPlugin.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallPlugin.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallPlugin.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/plugins/network/FirewallPlugin.java Mon Mar  2 14:30:25 2009
@@ -23,12 +23,18 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
+import java.util.Iterator;
 import java.util.List;
 import java.util.regex.Pattern;
 
+import org.apache.commons.configuration.CompositeConfiguration;
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.qpid.server.protocol.AMQMinaProtocolSession;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
+import org.apache.qpid.server.security.access.ACLPlugin;
+import org.apache.qpid.server.security.access.ACLPluginFactory;
 import org.apache.qpid.server.security.access.plugins.AbstractACLPlugin;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.util.NetMatcher;
@@ -36,6 +42,21 @@
 public class FirewallPlugin extends AbstractACLPlugin
 {
 
+    public static final ACLPluginFactory FACTORY = new ACLPluginFactory()
+    {
+        public boolean supportsTag(String name)
+        {
+            return name.startsWith("firewall");
+        }
+
+        public ACLPlugin newInstance(Configuration config) throws ConfigurationException
+        {
+            FirewallPlugin plugin = new FirewallPlugin();
+            plugin.setConfiguration(config);
+            return plugin;
+        }
+    };
+    
     public class FirewallRule
     {
 
@@ -149,7 +170,7 @@
     }
 
     @Override
-    public void setConfiguration(Configuration config)
+    public void setConfiguration(Configuration config) throws ConfigurationException
     {
         // Get default action
         String defaultAction = config.getString("[@default-action]");
@@ -165,15 +186,21 @@
         {
             _default = AuthzResult.DENIED;
         }
+        CompositeConfiguration finalConfig = new CompositeConfiguration(config);
+        
+        List subFiles = config.getList("firewall.xml[@fileName]");
+        for (Object subFile : subFiles)
+        {
+            finalConfig.addConfiguration(new XMLConfiguration((String) subFile));
+        }
 
-        int numRules = config.getList("rule[@access]").size(); // all rules must
-        // have an access
-        // attribute
+        // all rules must have an access attribute
+        int numRules = finalConfig.getList("rule[@access]").size(); 
         _rules = new FirewallRule[numRules];
         for (int i = 0; i < numRules; i++)
         {
-            FirewallRule rule = new FirewallRule(config.getString("rule(" + i + ")[@access]"), config.getList("rule("
-                    + i + ")[@network]"), config.getList("rule(" + i + ")[@hostname]"));
+            FirewallRule rule = new FirewallRule(finalConfig.getString("rule(" + i + ")[@access]"), finalConfig.getList("rule("
+                    + i + ")[@network]"), finalConfig.getList("rule(" + i + ")[@hostname]"));
             _rules[i] = rule;
         }
     }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java Mon Mar  2 14:30:25 2009
@@ -23,12 +23,24 @@
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.RandomAccessFile;
 import java.util.List;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.qpid.AMQException;
+import org.apache.qpid.codec.AMQCodecFactory;
+import org.apache.qpid.server.protocol.AMQMinaProtocolSession;
+import org.apache.qpid.server.protocol.AMQProtocolSession;
+import org.apache.qpid.server.protocol.TestIoSession;
+import org.apache.qpid.server.queue.MockProtocolSession;
+import org.apache.qpid.server.registry.ApplicationRegistry;
+import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
+import org.apache.qpid.server.security.access.ACLManager;
+import org.apache.qpid.server.virtualhost.VirtualHost;
+import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
 
 import junit.framework.TestCase;
 
@@ -42,7 +54,7 @@
     {
         _config = new XMLConfiguration();
     }
-    
+
     public void testSetJMXManagementPort() throws ConfigurationException
     {
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
@@ -63,7 +75,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getPlatformMbeanserver());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("management.platform-mbeanserver", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getPlatformMbeanserver());
@@ -75,7 +87,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(null, serverConfig.getPluginDirectory());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("plugin-directory", "/path/to/plugins");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("/path/to/plugins", serverConfig.getPluginDirectory());
@@ -87,7 +99,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getPrincipalDatabaseNames().size());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.principal-databases.principal-database(0).name", "a");
         _config.setProperty("security.principal-databases.principal-database(1).name", "b");
         serverConfig = new ServerConfiguration(_config);
@@ -96,14 +108,14 @@
         assertEquals("a", dbs.get(0));
         assertEquals("b", dbs.get(1));
     }
-    
+
     public void testGetPrincipalDatabaseClass() throws ConfigurationException
     {
         // Check default
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getPrincipalDatabaseClass().size());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.principal-databases.principal-database(0).class", "a");
         _config.setProperty("security.principal-databases.principal-database(1).class", "b");
         serverConfig = new ServerConfiguration(_config);
@@ -119,7 +131,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getPrincipalDatabaseAttributeNames(1).size());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.principal-databases.principal-database(0).attributes(0).attribute.name", "a");
         _config.setProperty("security.principal-databases.principal-database(0).attributes(1).attribute.name", "b");
         serverConfig = new ServerConfiguration(_config);
@@ -129,14 +141,13 @@
         assertEquals("b", dbs.get(1));
     }
 
-
     public void testGetPrincipalDatabaseAttributeValues() throws ConfigurationException
     {
         // Check default
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getPrincipalDatabaseAttributeValues(1).size());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.principal-databases.principal-database(0).attributes(0).attribute.value", "a");
         _config.setProperty("security.principal-databases.principal-database(0).attributes(1).attribute.value", "b");
         serverConfig = new ServerConfiguration(_config);
@@ -152,7 +163,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getManagementAccessList().size());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.jmx.access(0)", "a");
         _config.setProperty("security.jmx.access(1)", "b");
         serverConfig = new ServerConfiguration(_config);
@@ -168,7 +179,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(65536, serverConfig.getFrameSize());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.framesize", "23");
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getFrameSize());
@@ -180,7 +191,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getProtectIOEnabled());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("broker.connector.protectio.enabled", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getProtectIOEnabled());
@@ -192,7 +203,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(262144, serverConfig.getBufferReadLimit());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("broker.connector.protectio.readBufferLimitSize", 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getBufferReadLimit());
@@ -204,7 +215,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(262144, serverConfig.getBufferWriteLimit());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("broker.connector.protectio.writeBufferLimitSize", 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getBufferWriteLimit());
@@ -216,7 +227,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getSynchedClocks());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.synced-clocks", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getSynchedClocks());
@@ -228,7 +239,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getMsgAuth());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.msg-auth", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getMsgAuth());
@@ -240,7 +251,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(null, serverConfig.getJMXPrincipalDatabase());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("security.jmx.principal-database", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getJMXPrincipalDatabase());
@@ -252,7 +263,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(null, serverConfig.getManagementKeyStorePath());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("management.ssl.keyStorePath", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getManagementKeyStorePath());
@@ -264,7 +275,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getManagementSSLEnabled());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("management.ssl.enabled", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getManagementSSLEnabled());
@@ -276,7 +287,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(null, serverConfig.getManagementKeyStorePassword());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("management.ssl.keyStorePassword", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getManagementKeyStorePassword());
@@ -288,7 +299,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getQueueAutoRegister());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("queue.auto_register", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getQueueAutoRegister());
@@ -300,7 +311,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getManagementEnabled());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("management.enabled", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getManagementEnabled());
@@ -308,7 +319,7 @@
 
     public void testSetManagementEnabled() throws ConfigurationException
     {
-        // Check value we set 
+        // Check value we set
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         serverConfig.setManagementEnabled(false);
         assertEquals(false, serverConfig.getManagementEnabled());
@@ -320,7 +331,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(5, serverConfig.getHeartBeatDelay());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("heartbeat.delay", 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getHeartBeatDelay());
@@ -332,7 +343,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(2.0, serverConfig.getHeartBeatTimeout());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("heartbeat.timeoutFactor", 2.3);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(2.3, serverConfig.getHeartBeatTimeout());
@@ -344,7 +355,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getMaximumMessageAge());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("maximumMessageAge", 10L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getMaximumMessageAge());
@@ -356,7 +367,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getMaximumMessageCount());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("maximumMessageCount", 10L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getMaximumMessageCount());
@@ -368,7 +379,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getMaximumQueueDepth());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("maximumQueueDepth", 10L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getMaximumQueueDepth());
@@ -380,7 +391,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getMaximumMessageSize());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("maximumMessageSize", 10L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getMaximumMessageSize());
@@ -392,7 +403,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(0, serverConfig.getMinimumAlertRepeatGap());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("minimumAlertRepeatGap", 10L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getMinimumAlertRepeatGap());
@@ -404,7 +415,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(4, serverConfig.getProcessors());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.processors", 10);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getProcessors());
@@ -416,7 +427,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(5672, serverConfig.getPort());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.port", 10);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(10, serverConfig.getPort());
@@ -428,7 +439,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals("wildcard", serverConfig.getBind());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.bind", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getBind());
@@ -440,7 +451,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(32767, serverConfig.getReceiveBufferSize());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.socketReceiveBuffer", "23");
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getReceiveBufferSize());
@@ -452,7 +463,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(32767, serverConfig.getWriteBufferSize());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.socketWriteBuffer", "23");
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getWriteBufferSize());
@@ -464,7 +475,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getTcpNoDelay());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.tcpNoDelay", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getTcpNoDelay());
@@ -476,7 +487,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getEnableExecutorPool());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.filterchain[@enableExecutorPool]", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getEnableExecutorPool());
@@ -488,7 +499,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getEnablePooledAllocator());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.enablePooledAllocator", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getEnablePooledAllocator());
@@ -500,7 +511,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getEnableDirectBuffers());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.enableDirectBuffers", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getEnableDirectBuffers());
@@ -512,7 +523,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getEnableSSL());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.enabled", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getEnableSSL());
@@ -524,19 +535,19 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getSSLOnly());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.sslOnly", false);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getSSLOnly());
     }
-    
+
     public void testGetSSLPort() throws ConfigurationException
     {
         // Check default
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(8672, serverConfig.getSSLPort());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.port", 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getSSLPort());
@@ -548,19 +559,19 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals("none", serverConfig.getKeystorePath());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.keystorePath", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getKeystorePath());
     }
-    
+
     public void testGetKeystorePassword() throws ConfigurationException
     {
         // Check default
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals("none", serverConfig.getKeystorePassword());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.keystorePassword", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getKeystorePassword());
@@ -572,7 +583,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals("SunX509", serverConfig.getCertType());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.ssl.certType", "a");
         serverConfig = new ServerConfiguration(_config);
         assertEquals("a", serverConfig.getCertType());
@@ -584,7 +595,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getQpidNIO());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("connector.qpidnio", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getQpidNIO());
@@ -596,7 +607,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(false, serverConfig.getUseBiasedWrites());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("advanced.useWriteBiasedPool", true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getUseBiasedWrites());
@@ -608,7 +619,7 @@
         ServerConfiguration serverConfig = new ServerConfiguration(_config);
         assertEquals(30000, serverConfig.getHousekeepingExpiredMessageCheckPeriod());
 
-        // Check value we set 
+        // Check value we set
         _config.setProperty("housekeeping.expiredMessageCheckPeriod", 23L);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getHousekeepingExpiredMessageCheckPeriod());
@@ -616,7 +627,7 @@
         assertEquals(42, serverConfig.getHousekeepingExpiredMessageCheckPeriod());
     }
 
-    public void testSingleConfiguration() throws IOException, ConfigurationException 
+    public void testSingleConfiguration() throws IOException, ConfigurationException
     {
         File fileA = File.createTempFile(getClass().getName(), null);
         fileA.deleteOnExit();
@@ -626,36 +637,208 @@
         ServerConfiguration conf = new ServerConfiguration(fileA);
         assertEquals(4235, conf.getSSLPort());
     }
-    
+
     public void testCombinedConfiguration() throws IOException, ConfigurationException
     {
         File mainFile = File.createTempFile(getClass().getName(), null);
         File fileA = File.createTempFile(getClass().getName(), null);
         File fileB = File.createTempFile(getClass().getName(), null);
-        
+
         mainFile.deleteOnExit();
         fileA.deleteOnExit();
         fileB.deleteOnExit();
-        
+
         FileWriter out = new FileWriter(mainFile);
         out.write("<configuration><system/>");
-        out.write("<xml fileName=\""+fileA.getAbsolutePath()+"\"/>");
-        out.write("<xml fileName=\""+fileB.getAbsolutePath()+"\"/>");
+        out.write("<xml fileName=\"" + fileA.getAbsolutePath() + "\"/>");
+        out.write("<xml fileName=\"" + fileB.getAbsolutePath() + "\"/>");
         out.write("</configuration>");
         out.close();
-        
+
         out = new FileWriter(fileA);
         out.write("<broker><connector><port>2342</port><ssl><port>4235</port></ssl></connector></broker>");
         out.close();
-        
+
         out = new FileWriter(fileB);
         out.write("<broker><connector><ssl><port>2345</port></ssl><qpidnio>true</qpidnio></connector></broker>");
         out.close();
-        
+
         ServerConfiguration config = new ServerConfiguration(mainFile.getAbsoluteFile());
-        assertEquals(4235, config.getSSLPort()); // From first file, not overriden by second
-        assertEquals(2342, config.getPort()); // From the first file, not present in the second
-        assertEquals(true, config.getQpidNIO()); // From the second file, not present in the first
+        assertEquals(4235, config.getSSLPort()); // From first file, not
+                                                 // overriden by second
+        assertEquals(2342, config.getPort()); // From the first file, not
+                                              // present in the second
+        assertEquals(true, config.getQpidNIO()); // From the second file, not
+                                                 // present in the first
     }
-    
+
+    public void testCombinedConfigurationFirewall() throws Exception
+    {
+        // Write out config
+        File mainFile = File.createTempFile(getClass().getName(), null);
+        File fileA = File.createTempFile(getClass().getName(), null);
+        File fileB = File.createTempFile(getClass().getName(), null);
+
+        mainFile.deleteOnExit();
+        fileA.deleteOnExit();
+        fileB.deleteOnExit();
+
+        FileWriter out = new FileWriter(mainFile);
+        out.write("<configuration><system/>");
+        out.write("<xml fileName=\"" + fileA.getAbsolutePath() + "\"/>");
+        out.write("</configuration>");
+        out.close();
+
+        out = new FileWriter(fileA);
+        out.write("<broker>\n");
+        out.write("\t<management><enabled>false</enabled></management>\n");
+        out.write("\t<security>\n");
+        out.write("\t\t<principal-databases>\n");
+        out.write("\t\t\t<principal-database>\n");
+        out.write("\t\t\t\t<name>passwordfile</name>\n");
+        out.write("\t\t\t\t<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>\n");
+        out.write("\t\t\t\t<attributes>\n");
+        out.write("\t\t\t\t\t<attribute>\n");
+        out.write("\t\t\t\t\t\t<name>passwordFile</name>\n");
+        out.write("\t\t\t\t\t\t<value>/dev/null</value>\n");
+        out.write("\t\t\t\t\t</attribute>\n");
+        out.write("\t\t\t\t</attributes>\n");
+        out.write("\t\t\t</principal-database>\n");
+        out.write("\t\t</principal-databases>\n");
+        out.write("\t\t<jmx>\n");
+        out.write("\t\t\t<access>/dev/null</access>\n");
+        out.write("\t\t\t<principal-database>passwordfile</principal-database>\n");
+        out.write("\t\t</jmx>\n");
+        out.write("\t\t<firewall>\n");
+        out.write("\t\t\t<xml fileName=\"" + fileB.getAbsolutePath() + "\"/>");
+        out.write("\t\t</firewall>\n");
+        out.write("\t</security>\n");
+        out.write("\t<virtualhosts>\n");
+        out.write("\t\t<virtualhost>\n");
+        out.write("\t\t\t<name>test</name>\n");
+        out.write("\t\t</virtualhost>\n");
+        out.write("\t</virtualhosts>\n");
+        out.write("</broker>\n");
+        out.close();
+
+        out = new FileWriter(fileB);
+        out.write("<firewall>\n");
+        out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>");
+        out.write("</firewall>\n");
+        out.close();
+
+        // Load config
+        ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile);
+        ApplicationRegistry.initialise(reg, 1);
+
+        // Test config
+        TestIoSession iosession = new TestIoSession();
+        iosession.setAddress("127.0.0.1");
+        VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry();
+        VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test");
+        AMQCodecFactory codecFactory = new AMQCodecFactory(true);
+        AMQProtocolSession session = new AMQMinaProtocolSession(iosession, virtualHostRegistry, codecFactory);
+        assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost));
+    }
+
+    public void testCombinedConfigurationFirewallReload() throws Exception
+    {
+     // Write out config
+        File mainFile = File.createTempFile(getClass().getName(), null);
+        File fileA = File.createTempFile(getClass().getName(), null);
+        File fileB = File.createTempFile(getClass().getName(), null);
+
+        mainFile.deleteOnExit();
+        fileA.deleteOnExit();
+        fileB.deleteOnExit();
+
+        FileWriter out = new FileWriter(mainFile);
+        out.write("<configuration><system/>");
+        out.write("<xml fileName=\"" + fileA.getAbsolutePath() + "\"/>");
+        out.write("</configuration>");
+        out.close();
+
+        out = new FileWriter(fileA);
+        out.write("<broker>\n");
+        out.write("\t<management><enabled>false</enabled></management>\n");
+        out.write("\t<security>\n");
+        out.write("\t\t<principal-databases>\n");
+        out.write("\t\t\t<principal-database>\n");
+        out.write("\t\t\t\t<name>passwordfile</name>\n");
+        out.write("\t\t\t\t<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>\n");
+        out.write("\t\t\t\t<attributes>\n");
+        out.write("\t\t\t\t\t<attribute>\n");
+        out.write("\t\t\t\t\t\t<name>passwordFile</name>\n");
+        out.write("\t\t\t\t\t\t<value>/dev/null</value>\n");
+        out.write("\t\t\t\t\t</attribute>\n");
+        out.write("\t\t\t\t</attributes>\n");
+        out.write("\t\t\t</principal-database>\n");
+        out.write("\t\t</principal-databases>\n");
+        out.write("\t\t<jmx>\n");
+        out.write("\t\t\t<access>/dev/null</access>\n");
+        out.write("\t\t\t<principal-database>passwordfile</principal-database>\n");
+        out.write("\t\t</jmx>\n");
+        out.write("\t\t<firewall>\n");
+        out.write("\t\t\t<xml fileName=\"" + fileB.getAbsolutePath() + "\"/>");
+        out.write("\t\t</firewall>\n");
+        out.write("\t</security>\n");
+        out.write("\t<virtualhosts>\n");
+        out.write("\t\t<virtualhost>\n");
+        out.write("\t\t\t<name>test</name>\n");
+        out.write("\t\t</virtualhost>\n");
+        out.write("\t</virtualhosts>\n");
+        out.write("</broker>\n");
+        out.close();
+
+        out = new FileWriter(fileB);
+        out.write("<firewall>\n");
+        out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>");
+        out.write("</firewall>\n");
+        out.close();
+
+        // Load config
+        ApplicationRegistry reg = new ConfigurationFileApplicationRegistry(mainFile);
+        ApplicationRegistry.initialise(reg, 1);
+
+        // Test config
+        TestIoSession iosession = new TestIoSession();
+        iosession.setAddress("127.0.0.1");
+        VirtualHostRegistry virtualHostRegistry = reg.getVirtualHostRegistry();
+        VirtualHost virtualHost = virtualHostRegistry.getVirtualHost("test");
+        AMQCodecFactory codecFactory = new AMQCodecFactory(true);
+        AMQProtocolSession session = new AMQMinaProtocolSession(iosession, virtualHostRegistry, codecFactory);
+        assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost));
+
+        RandomAccessFile fileBRandom = new RandomAccessFile(fileB, "rw");
+        fileBRandom.setLength(0);
+        fileBRandom.seek(0);
+        fileBRandom.close();
+        
+        out = new FileWriter(fileB);
+        out.write("<firewall>\n");
+        out.write("\t<rule access=\"allow\" network=\"127.0.0.1\"/>");
+        out.write("</firewall>\n");
+        out.close();
+        
+        reg.getConfiguration().reparseConfigFile();
+        
+        assertTrue(reg.getAccessManager().authoriseConnect(session, virtualHost));
+        
+        fileBRandom = new RandomAccessFile(fileB, "rw");
+        fileBRandom.setLength(0);
+        fileBRandom.seek(0);
+        fileBRandom.close();
+        
+        out = new FileWriter(fileB);
+        out.write("<firewall>\n");
+        out.write("\t<rule access=\"deny\" network=\"127.0.0.1\"/>");
+        out.write("</firewall>\n");
+        out.close();
+        
+        reg.getConfiguration().reparseConfigFile();
+        
+        assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost));
+
+    }
+
 }

Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java?rev=749315&r1=749314&r2=749315&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/security/access/ACLManagerTest.java Mon Mar  2 14:30:25 2009
@@ -27,6 +27,7 @@
 import junit.framework.TestCase;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.qpid.server.configuration.SecurityConfiguration;
@@ -79,7 +80,7 @@
         assertTrue(_authzManager.authorisePurge(_session, queue));
     }
 
-    public void testACLManagerConfigurationPluginManagerACLPlugin()
+    public void testACLManagerConfigurationPluginManagerACLPlugin() throws ConfigurationException
     {
         _authzManager = new ACLManager(_conf, _pluginManager, ExchangeDenier.FACTORY);
         
@@ -87,7 +88,7 @@
         assertFalse(_authzManager.authoriseDelete(_session, exchange));
     }
     
-    public void testConfigurePlugins()
+    public void testConfigurePlugins() throws ConfigurationException
     {
         Configuration hostConfig = new PropertiesConfiguration();
         hostConfig.setProperty("queueDenier", "thisoneneither");



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org