diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-07-13 14:37:23 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-07-13 14:37:23 +0000 |
| commit | 4dafd3cc40c262c13a53fc4ae853413a64aaa1cb (patch) | |
| tree | 380e889f2d1516ce1a2f7484de2a2bce0db37047 /qpid/java/broker/src | |
| parent | bfeb478032164121c8403c1a5fc375123d7ce66f (diff) | |
| download | qpid-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')
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 |
