Skip to content

Commit

Permalink
Add filter for tls protocol and tls cipher
Browse files Browse the repository at this point in the history
  • Loading branch information
hamadodene committed Jul 21, 2022
1 parent 95973f6 commit 5645e78
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@
import javax.ws.rs.Produces;
import org.carapaceproxy.core.HttpProxyServer;
import org.carapaceproxy.core.RequestFilter;
import org.carapaceproxy.server.filters.RegexpMapSessionIdFilter;
import org.carapaceproxy.server.filters.RegexpMapUserIdFilter;
import org.carapaceproxy.server.filters.XForwardedForRequestFilter;
import org.carapaceproxy.server.filters.*;

/**
* Access to request filters
Expand Down Expand Up @@ -79,6 +77,12 @@ public List<RequestFilterBean> getAllRequestFilters() {
if (f instanceof XForwardedForRequestFilter) {
filterBean.setType(XForwardedForRequestFilter.TYPE);
res.add(filterBean);
} else if(f instanceof XTlsCipherRequestFilter){
filterBean.setType(XTlsCipherRequestFilter.TYPE);
res.add(filterBean);
} else if(f instanceof XTlsProtocolRequestFilter){
filterBean.setType(XTlsProtocolRequestFilter.TYPE);
res.add(filterBean);
} else if (f instanceof RegexpMapUserIdFilter) {
RegexpMapUserIdFilter filter = (RegexpMapUserIdFilter) f;
filterBean.setType(RegexpMapUserIdFilter.TYPE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ public static RequestFilter buildRequestFilter(RequestFilterConfiguration config
switch (type) {
case XForwardedForRequestFilter.TYPE:
return new XForwardedForRequestFilter(matcher);
case XTlsCipherRequestFilter.TYPE:
return new XTlsCipherRequestFilter(matcher);
case XTlsProtocolRequestFilter.TYPE:
return new XTlsProtocolRequestFilter(matcher);
case RegexpMapUserIdFilter.TYPE: {
String param = filterConfig.getOrDefault("param", "userid").trim();
String regexp = filterConfig.getOrDefault("regexp", "(.*)").trim();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.carapaceproxy.server.filters;

import org.carapaceproxy.core.ProxyRequest;
import org.carapaceproxy.server.mapper.requestmatcher.RequestMatcher;

public class XTlsCipherRequestFilter extends BasicRequestFilter{
public static final String TYPE = "add-x-tls-cipher";

public XTlsCipherRequestFilter(RequestMatcher matcher) {
super(matcher);
}

@Override
public void apply(ProxyRequest request) {
if (!checkRequestMatching(request)) {
return;
}

request.getRequestHeaders().remove("X-Tls-Cipher");
request.getRequestHeaders().add("X-Tls-Cipher", request.getCipherSuite());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.carapaceproxy.server.filters;

import org.carapaceproxy.core.ProxyRequest;
import org.carapaceproxy.server.mapper.requestmatcher.RequestMatcher;

public class XTlsProtocolRequestFilter extends BasicRequestFilter {

public static final String TYPE = "add-x-tls-protocol";

public XTlsProtocolRequestFilter(RequestMatcher matcher) {
super(matcher);
}

@Override
public void apply(ProxyRequest request) {
if (!checkRequestMatching(request)) {
return;
}

request.getRequestHeaders().remove("X-Tls-Protocol");
request.getRequestHeaders().add("X-Tls-Protocol", request.getSslProtocol());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,9 @@
import static org.carapaceproxy.server.certificates.DynamicCertificateState.WAITING;
import static org.carapaceproxy.server.certificates.DynamicCertificatesManager.DEFAULT_KEYPAIRS_SIZE;
import org.carapaceproxy.server.certificates.DynamicCertificatesManager;
import org.carapaceproxy.server.filters.*;
import org.carapaceproxy.server.mapper.requestmatcher.MatchAllRequestMatcher;
import org.carapaceproxy.server.filters.RegexpMapSessionIdFilter;
import org.carapaceproxy.server.filters.RegexpMapUserIdFilter;
import org.carapaceproxy.server.filters.XForwardedForRequestFilter;

import static org.carapaceproxy.utils.CertificatesTestUtils.uploadCertificate;
import org.carapaceproxy.utils.RawHttpClient;
import org.carapaceproxy.utils.TestUtils;
Expand Down Expand Up @@ -520,6 +519,9 @@ public void testResourcesFilter() throws Exception {
properties.put("filter.2.regexp", "(.*)");

properties.put("filter.3.type", "add-x-forwarded-for");

properties.put("filter.4.type", "add-x-tls-protocol");
properties.put("filter.5.type", "add-x-tls-cipher");
startServer(properties);

// full list request
Expand All @@ -532,6 +534,9 @@ public void testResourcesFilter() throws Exception {
assertThat(json, containsString(RegexpMapSessionIdFilter.TYPE));
assertThat(json, containsString("param_test_user"));
assertThat(json, containsString(XForwardedForRequestFilter.TYPE));
System.out.println(response.getBodyString());
assertThat(json, containsString(XTlsProtocolRequestFilter.TYPE));
assertThat(json, containsString(XTlsCipherRequestFilter.TYPE));
}
}

Expand Down

0 comments on commit 5645e78

Please sign in to comment.