Skip to content

Commit ad8c8f6

Browse files
committed
make use of undertows handling of xforward headers
1 parent 5926737 commit ad8c8f6

5 files changed

Lines changed: 16 additions & 22 deletions

File tree

core-customize/hybris/bin/custom/cxdevtools/cxdevproxy/resources/cxdevproxy/config/cxdevproxy-interceptor-spring.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@
22
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
44

5-
<!-- Forwarded-For Header Interceptor -->
6-
<bean id="cxdevproxyInterceptorForwardedHeaders" class="me.cxdev.commerce.proxy.interceptor.ForwardedHeadersInterceptor">
7-
<property name="serverHostname" value="${cxdevproxy.server.hostname}" />
8-
<property name="serverProtocol" value="${cxdevproxy.server.protocol}" />
9-
<property name="serverPort" value="${cxdevproxy.server.port}" />
10-
</bean>
11-
125
<!-- Prepared CORS Injector Interceptor, needs to be activated if needed -->
136
<bean id="cxdevproxyInterceptorCorsInjector" class="me.cxdev.commerce.proxy.interceptor.CorsInjectorInterceptor"/>
147

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1 @@
1-
return [
2-
interceptor()
3-
.constrainedBy( isMethod("GET"), pathMatches("/**/carts/current") )
4-
.perform( jsonResponse('{"type": "cartWsDTO", "totalItems": 5}') )
5-
]
1+
return []
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
def interceptor = []
2-
interceptor << forwardedHeaders
3-
return interceptor
1+
return []

core-customize/hybris/bin/custom/cxdevtools/cxdevproxy/src/me/cxdev/commerce/proxy/livecycle/UndertowProxyManager.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,20 +202,29 @@ public void start() {
202202
LOG.info("Starting embedded Undertow proxy (Protocol: {})...", this.serverProtocol);
203203

204204
try {
205+
XnioSsl frontendSslContext = "https".equalsIgnoreCase(frontendProtocol) ? createTrustAllXnioSsl(frontendHostname) : null;
205206
String frontendUrl = frontendProtocol + "://" + frontendHostname + ":" + frontendPort;
206207
LoadBalancingProxyClient frontendClient = new LoadBalancingProxyClient()
207-
.addHost(new URI(frontendUrl), createTrustAllXnioSsl(frontendHostname))
208+
.addHost(new URI(frontendUrl), frontendSslContext)
208209
.setConnectionsPerThread(20);
209210

211+
XnioSsl backendSslContext = "https".equalsIgnoreCase(backendProtocol) ? createTrustAllXnioSsl(backendHostname) : null;
210212
String backendUrl = backendProtocol + "://" + backendHostname + ":" + backendPort;
211213
LoadBalancingProxyClient backendClient = new LoadBalancingProxyClient()
212-
.addHost(new URI(backendUrl), createTrustAllXnioSsl(backendHostname))
214+
.addHost(new URI(backendUrl), backendSslContext)
213215
.setConnectionsPerThread(20);
214216

215-
HttpHandler baseFrontendHandler = ProxyHandler.builder().setProxyClient(frontendClient).build();
217+
HttpHandler baseFrontendHandler = ProxyHandler.builder()
218+
.setProxyClient(frontendClient)
219+
.setReuseXForwarded(true)
220+
.build();
216221
HttpHandler finalFrontendHandler = applyRules(frontendHandlersRef.get(), baseFrontendHandler);
217222

218-
HttpHandler baseBackendHandler = ProxyHandler.builder().setProxyClient(backendClient).setMaxRequestTime(30000).build();
223+
HttpHandler baseBackendHandler = ProxyHandler.builder()
224+
.setProxyClient(backendClient)
225+
.setMaxRequestTime(30000)
226+
.setReuseXForwarded(true)
227+
.build();
219228
HttpHandler finalBackendHandler = applyRules(backendHandlersRef.get(), baseBackendHandler);
220229

221230
List<String> activeBackendContexts = determineBackendContexts();

core-customize/hybris/bin/custom/cxdevtools/cxdevproxy/testsrc/me/cxdev/commerce/proxy/livecycle/GroovyRuleEngineServiceTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ void setUp() {
5454

5555
// Setup Spring ApplicationContext mocks with custom bean names to test the prefix stripping
5656
Map<String, ProxyExchangeInterceptor> interceptors = new HashMap<>();
57-
interceptors.put("cxdevproxyInterceptorForwardedHeaders", mockInterceptor);
5857
interceptors.put("customInterceptorWithoutPrefix", mockInterceptor); // Edge case
5958

6059
Map<String, ProxyExchangeInterceptorCondition> conditions = new HashMap<>();
@@ -129,8 +128,7 @@ void testEvaluateScript_WithValidScriptAndBindings(@TempDir Path tempDir) throws
129128
assertNotNull(result, "Result list should not be null");
130129
assertEquals(2, result.size(), "Script should return exactly two interceptors");
131130

132-
// Assert that the first returned interceptor is the exact mock instance we injected,
133-
// proving that 'forwardedHeaders' was successfully bound to 'cxdevproxyInterceptorForwardedHeaders'
131+
// Assert that the first returned interceptor is the exact mock instance we injected
134132
assertEquals(mockInterceptor, result.get(0));
135133
}
136134

0 commit comments

Comments
 (0)