summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-07-13 14:37:23 +0000
committerRobert Gemmell <robbie@apache.org>2012-07-13 14:37:23 +0000
commit4dafd3cc40c262c13a53fc4ae853413a64aaa1cb (patch)
tree380e889f2d1516ce1a2f7484de2a2bce0db37047 /qpid/java/broker/src
parentbfeb478032164121c8403c1a5fc375123d7ce66f (diff)
downloadqpid-python-4dafd3cc40c262c13a53fc4ae853413a64aaa1cb.tar.gz
QPID-3998: Add HTTPS support for the REST management interface
Applied patch from Oleksandr Rudyy <orudyy@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1361239 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker/src')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java14
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java3
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java24
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/HTTPPortAdapter.java17
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/OsgiSystemPackages.properties3
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java18
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java4
7 files changed, 70 insertions, 13 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
index c23e58fdab..7161c556e9 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
@@ -65,6 +65,7 @@ public class ServerConfiguration extends ConfigurationPlugin
public static final int DEFAULT_JMXPORT_REGISTRYSERVER = 8999;
public static final int JMXPORT_CONNECTORSERVER_OFFSET = 100;
public static final int DEFAULT_HTTP_MANAGEMENT_PORT = 8080;
+ public static final int DEFAULT_HTTPS_MANAGEMENT_PORT = 8443;
public static final String QPID_HOME = "QPID_HOME";
public static final String QPID_WORK = "QPID_WORK";
@@ -580,7 +581,17 @@ public class ServerConfiguration extends ConfigurationPlugin
public int getHTTPManagementPort()
{
- return getIntValue("management.http.port", 8080);
+ return getIntValue("management.http.port", DEFAULT_HTTP_MANAGEMENT_PORT);
+ }
+
+ public boolean getHTTPSManagementEnabled()
+ {
+ return getBooleanValue("management.https.enabled", false);
+ }
+
+ public int getHTTPSManagementPort()
+ {
+ return getIntValue("management.https.port", DEFAULT_HTTPS_MANAGEMENT_PORT);
}
public String[] getVirtualHosts()
@@ -1015,4 +1026,5 @@ public class ServerConfiguration extends ConfigurationPlugin
{
_qpidHome = path;
}
+
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
index fecbcec194..5d9de69f9a 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/Protocol.java
@@ -28,5 +28,6 @@ public enum Protocol
AMQP_0_10,
AMQP_1_0,
JMX,
- HTTP
+ HTTP,
+ HTTPS
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
index e1a6b6a337..f1cce2d45c 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/BrokerAdapter.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.qpid.common.QpidProperties;
import org.apache.qpid.server.model.AuthenticationProvider;
@@ -33,8 +34,10 @@ import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.LifetimePolicy;
import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Protocol;
import org.apache.qpid.server.model.State;
import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.Transport;
import org.apache.qpid.server.model.UUIDGenerator;
import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.registry.IApplicationRegistry;
@@ -55,7 +58,8 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, VirtualHos
new HashMap<org.apache.qpid.server.virtualhost.VirtualHost, VirtualHostAdapter>();
private final StatisticsAdapter _statistics;
private final Map<QpidAcceptor, PortAdapter> _portAdapters = new HashMap<QpidAcceptor, PortAdapter>();
- private HTTPPortAdapter _httpManagementPort;
+ private Collection<HTTPPortAdapter> _httpManagementPorts;
+
private final Map<AuthenticationManager, AuthenticationProviderAdapter> _authManagerAdapters =
new HashMap<AuthenticationManager, AuthenticationProviderAdapter>();
@@ -114,11 +118,19 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, VirtualHos
_portAdapters.put(entry.getValue(), new PortAdapter(this, entry.getValue(), entry.getKey()));
}
}
- if(_applicationRegistry.useHTTPManagement())
+ if(_applicationRegistry.useHTTPManagement() || _applicationRegistry.useHTTPSManagement())
{
- _httpManagementPort = new HTTPPortAdapter(this, _applicationRegistry.getHTTPManagementPort());
+ ArrayList<HTTPPortAdapter> httpPorts = new ArrayList<HTTPPortAdapter>();
+ if (_applicationRegistry.useHTTPManagement())
+ {
+ httpPorts.add(new HTTPPortAdapter(this, _applicationRegistry.getHTTPManagementPort()));
+ }
+ if (_applicationRegistry.useHTTPSManagement())
+ {
+ httpPorts.add(new HTTPPortAdapter(this, _applicationRegistry.getHTTPSManagementPort(), Protocol.HTTPS, Transport.SSL));
+ }
+ _httpManagementPorts = Collections.unmodifiableCollection(httpPorts);
}
-
}
}
@@ -127,9 +139,9 @@ public class BrokerAdapter extends AbstractAdapter implements Broker, VirtualHos
synchronized (_portAdapters)
{
final ArrayList<Port> ports = new ArrayList<Port>(_portAdapters.values());
- if(_httpManagementPort != null)
+ if(_httpManagementPorts != null)
{
- ports.add(_httpManagementPort);
+ ports.addAll(_httpManagementPorts);
}
return ports;
}
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/HTTPPortAdapter.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/HTTPPortAdapter.java
index a20185802f..823d27160b 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/HTTPPortAdapter.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/model/adapter/HTTPPortAdapter.java
@@ -39,13 +39,22 @@ import org.apache.qpid.server.model.VirtualHostAlias;
public class HTTPPortAdapter extends AbstractAdapter implements Port
{
private final BrokerAdapter _broker;
- private int _port;
+ private final int _port;
+ private final Protocol _protocol;
+ private final Transport _transport;
+
public HTTPPortAdapter(BrokerAdapter brokerAdapter, int port)
{
+ this(brokerAdapter, port, Protocol.HTTP, Transport.TCP);
+ }
+
+ public HTTPPortAdapter(BrokerAdapter brokerAdapter, int port, Protocol protocol, Transport transport)
+ {
super(UUIDGenerator.generateRandomUUID());
_broker = brokerAdapter;
_port = port;
-
+ _protocol = protocol;
+ _transport = transport;
}
@Override
@@ -63,7 +72,7 @@ public class HTTPPortAdapter extends AbstractAdapter implements Port
@Override
public Collection<Transport> getTransports()
{
- return Collections.singleton(Transport.TCP);
+ return Collections.singleton(_transport);
}
@Override
@@ -83,7 +92,7 @@ public class HTTPPortAdapter extends AbstractAdapter implements Port
@Override
public Collection<Protocol> getProtocols()
{
- return Collections.singleton(Protocol.HTTP);
+ return Collections.singleton(_protocol);
}
@Override
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/OsgiSystemPackages.properties b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/OsgiSystemPackages.properties
index 48c33821ee..4767e1ea6b 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/OsgiSystemPackages.properties
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/plugins/OsgiSystemPackages.properties
@@ -79,7 +79,10 @@ org.eclipse.jetty.io.nio=7.6.3
org.eclipse.jetty.security=7.6.3
org.eclipse.jetty.server=7.6.3
org.eclipse.jetty.server.session=7.6.3
+org.eclipse.jetty.server.ssl=7.6.3
+org.eclipse.jetty.server.nio=7.6.3
org.eclipse.jetty.servlet=7.6.3
+org.eclipse.jetty.util.ssl=7.6.3
org.codehaus.jackson=1.9.0
org.codehaus.jackson.map=1.9.0
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
index 10c69b7f97..e0e317f75d 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/ApplicationRegistry.java
@@ -108,7 +108,7 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
private final List<PortBindingListener> _portBindingListeners = new ArrayList<PortBindingListener>();
- private int _httpManagementPort = -1;
+ private int _httpManagementPort = -1, _httpsManagementPort = -1;
private LogRecorder _logRecorder;
@@ -299,6 +299,10 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
{
_httpManagementPort = _configuration.getHTTPManagementPort();
}
+ if (_configuration.getHTTPSManagementEnabled())
+ {
+ _httpsManagementPort = _configuration.getHTTPSManagementPort();
+ }
_broker = new BrokerAdapter(this);
@@ -736,6 +740,18 @@ public abstract class ApplicationRegistry implements IApplicationRegistry
return _httpManagementPort;
}
+ @Override
+ public boolean useHTTPSManagement()
+ {
+ return _httpsManagementPort != -1;
+ }
+
+ @Override
+ public int getHTTPSManagementPort()
+ {
+ return _httpsManagementPort;
+ }
+
public LogRecorder getLogRecorder()
{
return _logRecorder;
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
index 2baf7ed5ee..88c3c93156 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/registry/IApplicationRegistry.java
@@ -119,6 +119,10 @@ public interface IApplicationRegistry extends StatisticsGatherer
int getHTTPManagementPort();
+ boolean useHTTPSManagement();
+
+ int getHTTPSManagementPort();
+
void addRegistryChangeListener(IAuthenticationManagerRegistry.RegistryChangeListener registryChangeListener);
public interface PortBindingListener