You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2015/06/16 12:02:23 UTC

svn commit: r1685752 - in /felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal: ConfigMetaTypeProvider.java JettyConfig.java JettyService.java

Author: cziegeler
Date: Tue Jun 16 10:02:22 2015
New Revision: 1685752

URL: http://svn.apache.org/r1685752
Log:
FELIX-4908 : X-Forward Header support when running behind a proxy/load balancer. Apply patch from Antonio Sanso

Modified:
    felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java
    felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
    felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java

Modified: felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java?rev=1685752&r1=1685751&r2=1685752&view=diff
==============================================================================
--- felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java (original)
+++ felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/ConfigMetaTypeProvider.java Tue Jun 16 10:02:22 2015
@@ -242,6 +242,12 @@ class ConfigMetaTypeProvider implements
                 2147483647,
                 null, null,
                 bundle.getBundleContext().getProperty(JettyConfig.FELIX_JETTY_EXCLUDED_PROTOCOLS)));
+        
+        adList.add(new AttributeDefinitionImpl(JettyConfig.FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE,
+                "Enable Proxy/Load Balancer Connection",
+                "Whether or not the Proxy/Load Balancer Connection is enabled. Defaults to false thus disabled.",
+                false,
+                bundle.getBundleContext().getProperty(JettyConfig.FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE)));
 
         return new ObjectClassDefinition()
         {

Modified: felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java?rev=1685752&r1=1685751&r2=1685752&view=diff
==============================================================================
--- felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java (original)
+++ felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyConfig.java Tue Jun 16 10:02:22 2015
@@ -127,6 +127,9 @@ public final class JettyConfig
     /** Felix specific property to configure the excluded protocols */
     public static final String FELIX_JETTY_EXCLUDED_PROTOCOLS = "org.apache.felix.https.jetty.protocols.excluded";
 
+    /** Felix specific property to control whether to enable Proxy/Load Balancer Connection */
+    public static final String FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE = "org.apache.felix.proxy.load.balancer.connection.enable";
+    
     private static String validateContextPath(String ctxPath)
     {
         // undefined, empty, or root context path
@@ -359,6 +362,11 @@ public final class JettyConfig
         boolean useHttps = getBooleanProperty(FELIX_HTTPS_ENABLE, getBooleanProperty(OSCAR_HTTPS_ENABLE, false));
         return useHttps && getHttpsPort() > 0;
     }
+    
+    public boolean isProxyLoadBalancerConnection()
+    {
+        return getBooleanProperty(FELIX_PROXY_LOAD_BALANCER_CONNECTION_ENABLE, false);
+    }
 
     public void reset()
     {

Modified: felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java
URL: http://svn.apache.org/viewvc/felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java?rev=1685752&r1=1685751&r2=1685752&view=diff
==============================================================================
--- felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java (original)
+++ felix/trunk/http/jetty/src/main/java/org/apache/felix/http/jetty/internal/JettyService.java Tue Jun 16 10:02:22 2015
@@ -47,6 +47,7 @@ import org.eclipse.jetty.http.HttpVersio
 import org.eclipse.jetty.security.HashLoginService;
 import org.eclipse.jetty.server.Connector;
 import org.eclipse.jetty.server.ConnectorStatistics;
+import org.eclipse.jetty.server.ForwardedRequestCustomizer;
 import org.eclipse.jetty.server.HttpConfiguration;
 import org.eclipse.jetty.server.HttpConnectionFactory;
 import org.eclipse.jetty.server.SecureRequestCustomizer;
@@ -317,6 +318,12 @@ public final class JettyService extends
         configureHttpConnectionFactory(connFactory);
         ServerConnector connector = new ServerConnector(server, connFactory);
         configureConnector(connector, this.config.getHttpPort());
+        
+        if (this.config.isProxyLoadBalancerConnection())
+        {
+            connFactory.getHttpConfiguration().addCustomizer(new ForwardedRequestCustomizer());
+        }
+        
         return startConnector(connector);
     }
 
@@ -329,7 +336,14 @@ public final class JettyService extends
         configureSslContextFactory(sslContextFactory);
 
         ServerConnector connector = new ServerConnector(server, new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.toString()), connFactory);
-        connFactory.getHttpConfiguration().addCustomizer(new SecureRequestCustomizer());
+        HttpConfiguration httpConfiguration = connFactory.getHttpConfiguration();
+        httpConfiguration.addCustomizer(new SecureRequestCustomizer());
+        
+        if (this.config.isProxyLoadBalancerConnection())
+        {
+            httpConfiguration.addCustomizer(new ForwardedRequestCustomizer());
+        }
+        
         configureConnector(connector, this.config.getHttpsPort());
         return startConnector(connector);
     }