Java Code Examples for org.apache.catalina.Context#addFilterMap()
The following examples show how to use
org.apache.catalina.Context#addFilterMap() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ServletRamlMessageTest.java From raml-tester with Apache License 2.0 | 6 votes |
@Override protected void init(Context ctx) { final FilterDef filterDef = new FilterDef(); filterDef.setFilter(testFilter); filterDef.setFilterName("filter"); ctx.addFilterDef(filterDef); final FilterMap filterMap = new FilterMap(); filterMap.addURLPattern("/*"); filterMap.setFilterName("filter"); ctx.addFilterMap(filterMap); Tomcat.addServlet(ctx, "test", testServlet); Tomcat.addServlet(ctx, "gzip", gzipTestServlet); ctx.addServletMapping("/test/*", "test"); ctx.addServletMapping("/gzip/*", "gzip"); }
Example 2
Source File: TestRemoteIpFilter.java From Tomcat8-Source-Read with MIT License | 6 votes |
private MockFilterChain testRemoteIpFilter(FilterDef filterDef, Request request) throws LifecycleException, IOException, ServletException { Tomcat tomcat = getTomcatInstance(); Context root = tomcat.addContext("", TEMP_DIR); RemoteIpFilter remoteIpFilter = new RemoteIpFilter(); filterDef.setFilterClass(RemoteIpFilter.class.getName()); filterDef.setFilter(remoteIpFilter); filterDef.setFilterName(RemoteIpFilter.class.getName()); root.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName(RemoteIpFilter.class.getName()); filterMap.addURLPatternDecoded("*"); root.addFilterMap(filterMap); getTomcatInstance().start(); MockFilterChain filterChain = new MockFilterChain(); // TEST TesterResponse response = new TesterResponse(); response.setRequest(request); remoteIpFilter.doFilter(request, response, filterChain); return filterChain; }
Example 3
Source File: AbstractValveTest.java From tomcat-mongo-access-log with Apache License 2.0 | 6 votes |
@Override public void setUp() throws Exception { super.setUp(); Tomcat tomcat = getTomcatInstance(); tomcat.getConnector().setURIEncoding("UTF-8"); Context ctx = tomcat.addContext("", getTemporaryDirectory().getAbsolutePath()); Tomcat.addServlet(ctx, "servlet", new FakeServlet()); ctx.addServletMapping("/", "servlet"); FilterDef filterDef = new FilterDef(); filterDef.setFilterClass("org.apache.catalina.filters.SetCharacterEncodingFilter"); filterDef.setFilterName("setCharacterEncodingFilter"); filterDef.addInitParameter("encoding", "UTF-8"); filterDef.setAsyncSupported("true"); ctx.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("setCharacterEncodingFilter"); filterMap.addURLPattern("/*"); ctx.addFilterMap(filterMap); this.sb = new StringBuilder(); setUpValve(tomcat); }
Example 4
Source File: TestStandardContext.java From Tomcat8-Source-Read with MIT License | 6 votes |
private static void configureTest46243Context(Context context, boolean fail) { // Add a test filter that fails FilterDef filterDef = new FilterDef(); filterDef.setFilterClass(Bug46243Filter.class.getName()); filterDef.setFilterName("Bug46243"); filterDef.addInitParameter("fail", Boolean.toString(fail)); context.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("Bug46243"); filterMap.addURLPatternDecoded("*"); context.addFilterMap(filterMap); // Add a test servlet so there is something to generate a response if // it works (although it shouldn't) Tomcat.addServlet(context, "Bug46243", new HelloWorldServlet()); context.addServletMappingDecoded("/", "Bug46243"); }
Example 5
Source File: TestStandardContext.java From tomcatsrc with Apache License 2.0 | 6 votes |
private static void configureTest46243Context(Context context, boolean fail) { // Add a test filter that fails FilterDef filterDef = new FilterDef(); filterDef.setFilterClass(Bug46243Filter.class.getName()); filterDef.setFilterName("Bug46243"); filterDef.addInitParameter("fail", Boolean.toString(fail)); context.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("Bug46243"); filterMap.addURLPattern("*"); context.addFilterMap(filterMap); // Add a test servlet so there is something to generate a response if // it works (although it shouldn't) Tomcat.addServlet(context, "Bug46243", new HelloWorldServlet()); context.addServletMapping("/", "Bug46243"); }
Example 6
Source File: TestRemoteIpFilter.java From Tomcat7.0.67 with Apache License 2.0 | 6 votes |
private MockFilterChain testRemoteIpFilter(FilterDef filterDef, Request request) throws LifecycleException, IOException, ServletException { Tomcat tomcat = getTomcatInstance(); Context root = tomcat.addContext("", TEMP_DIR); RemoteIpFilter remoteIpFilter = new RemoteIpFilter(); filterDef.setFilterClass(RemoteIpFilter.class.getName()); filterDef.setFilter(remoteIpFilter); filterDef.setFilterName(RemoteIpFilter.class.getName()); root.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName(RemoteIpFilter.class.getName()); filterMap.addURLPattern("*"); root.addFilterMap(filterMap); getTomcatInstance().start(); MockFilterChain filterChain = new MockFilterChain(); // TEST TesterResponse response = new TesterResponse(); response.setRequest(request); remoteIpFilter.doFilter(request, response, filterChain); return filterChain; }
Example 7
Source File: TestRequest.java From Tomcat8-Source-Read with MIT License | 6 votes |
private synchronized void init() throws Exception { if (init) return; Tomcat tomcat = getTomcatInstance(); Context root = tomcat.addContext("", TEMP_DIR); Tomcat.addServlet(root, "Bug37794", new Bug37794Servlet()); root.addServletMappingDecoded("/test", "Bug37794"); if (createFilter) { FilterDef failedRequestFilter = new FilterDef(); failedRequestFilter.setFilterName("failedRequestFilter"); failedRequestFilter.setFilterClass( FailedRequestFilter.class.getName()); FilterMap failedRequestFilterMap = new FilterMap(); failedRequestFilterMap.setFilterName("failedRequestFilter"); failedRequestFilterMap.addURLPatternDecoded("/*"); root.addFilterDef(failedRequestFilter); root.addFilterMap(failedRequestFilterMap); } tomcat.start(); setPort(tomcat.getConnector().getLocalPort()); init = true; }
Example 8
Source File: ProgrammaticTomcat.java From tutorials with MIT License | 5 votes |
public void startTomcat() throws LifecycleException { tomcat = new Tomcat(); tomcat.setPort(randomPort); tomcat.setHostname("localhost"); String appBase = "."; tomcat.getHost().setAppBase(appBase); File docBase = new File(System.getProperty("java.io.tmpdir")); Context context = tomcat.addContext("", docBase.getAbsolutePath()); // add a servlet Class servletClass = MyServlet.class; Tomcat.addServlet(context, servletClass.getSimpleName(), servletClass.getName()); context.addServletMappingDecoded("/my-servlet/*", servletClass.getSimpleName()); // add a filter and filterMapping Class filterClass = MyFilter.class; FilterDef myFilterDef = new FilterDef(); myFilterDef.setFilterClass(filterClass.getName()); myFilterDef.setFilterName(filterClass.getSimpleName()); context.addFilterDef(myFilterDef); FilterMap myFilterMap = new FilterMap(); myFilterMap.setFilterName(filterClass.getSimpleName()); myFilterMap.addURLPattern("/my-servlet/*"); context.addFilterMap(myFilterMap); tomcat.start(); // uncomment for live test // tomcat // .getServer() // .await(); }
Example 9
Source File: MdwServletContainerFactory.java From mdw with Apache License 2.0 | 5 votes |
@Override public void customize(Context context) { context.addApplicationListener("org.apache.tomcat.websocket.server.WsContextListener"); context.addErrorPage(new ErrorPage() { @Override public int getErrorCode() { return 404; } @Override public String getLocation() { return "/404"; } }); context.addErrorPage(new ErrorPage() { @Override public int getErrorCode() { return 500; } @Override public String getLocation() { return "/error"; } }); // CORS access is wide open FilterDef corsFilter = new FilterDef(); corsFilter.setFilterName("CorsFilter"); corsFilter.setFilterClass("org.apache.catalina.filters.CorsFilter"); corsFilter.addInitParameter("cors.allowed.methods", "GET,POST,PUT,DELETE,HEAD,OPTIONS"); corsFilter.addInitParameter("cors.allowed.headers", "Authorization,Content-Type,X-Requested-With,Accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Accept-Encoding,Accept-Language,Cache-Control,Connection,Host,Pragma,Referer,User-Agent"); corsFilter.addInitParameter("cors.allowed.origins", "*"); context.addFilterDef(corsFilter); FilterMap filterMap = new FilterMap(); filterMap.setFilterName(corsFilter.getFilterName()); filterMap.addURLPattern("/api/*"); filterMap.addURLPattern("/services/AppSummary"); context.addFilterMap(filterMap); }
Example 10
Source File: Runner.java From myrrix-recommender with Apache License 2.0 | 5 votes |
private static void addFilter(Context context, Filter filter, String path, Map<String,String> args) { String name = filter.getClass().getSimpleName(); FilterDef dosFilterDef = new FilterDef(); dosFilterDef.setFilter(filter); dosFilterDef.setFilterName(name); for (Map.Entry<String,String> entry : args.entrySet()) { dosFilterDef.addInitParameter(entry.getKey(), entry.getValue()); } context.addFilterDef(dosFilterDef); FilterMap dosFilterMap = new FilterMap(); dosFilterMap.setFilterName(name); dosFilterMap.addURLPattern(path); context.addFilterMap(dosFilterMap); }
Example 11
Source File: TestAddCharSetFilter.java From tomcatsrc with Apache License 2.0 | 5 votes |
private void doTest(String encoding, String expected, int mode) throws Exception { // Setup Tomcat instance Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("", null); // Add the Servlet CharsetServlet servlet = new CharsetServlet(mode); Tomcat.addServlet(ctx, "servlet", servlet); ctx.addServletMapping("/", "servlet"); // Add the Filter FilterDef filterDef = new FilterDef(); filterDef.setFilterClass(AddDefaultCharsetFilter.class.getName()); filterDef.setFilterName("filter"); if (encoding != null) { filterDef.addInitParameter("encoding", encoding); } ctx.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("filter"); filterMap.addServletName("servlet"); ctx.addFilterMap(filterMap); tomcat.start(); Map<String, List<String>> headers = new HashMap<String, List<String>>(); getUrl("http://localhost:" + getPort() + "/", new ByteChunk(), headers); List<String> ctHeaders = headers.get("Content-Type"); assertEquals(1, ctHeaders.size()); String ct = ctHeaders.get(0); assertEquals("text/plain;charset=" + expected, ct); }
Example 12
Source File: TestRequest.java From tomcatsrc with Apache License 2.0 | 5 votes |
private synchronized void init() throws Exception { if (init) return; Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context root = tomcat.addContext("", null); Tomcat.addServlet(root, "Bug37794", new Bug37794Servlet()); root.addServletMapping("/test", "Bug37794"); if (createFilter) { FilterDef failedRequestFilter = new FilterDef(); failedRequestFilter.setFilterName("failedRequestFilter"); failedRequestFilter.setFilterClass( FailedRequestFilter.class.getName()); FilterMap failedRequestFilterMap = new FilterMap(); failedRequestFilterMap.setFilterName("failedRequestFilter"); failedRequestFilterMap.addURLPattern("/*"); root.addFilterDef(failedRequestFilter); root.addFilterMap(failedRequestFilterMap); } tomcat.start(); setPort(tomcat.getConnector().getLocalPort()); init = true; }
Example 13
Source File: AbstractTomcatMetricsTest.java From tomcat_exporter with Apache License 2.0 | 5 votes |
public static void setUpTomcat(String dataSourceFactory) throws LifecycleException, ServletException { // create a tomcat instance tomcat = new Tomcat(); tomcat.setBaseDir("."); tomcat.setPort(0); tomcat.enableNaming(); // create a context with our test servlet Context ctx = tomcat.addContext(CONTEXT_PATH, new File(".").getAbsolutePath()); Tomcat.addServlet(ctx, SERVLET_NAME, new TestServlet()); ctx.addServletMappingDecoded("/*", SERVLET_NAME); // add our metrics filter FilterDef def = new FilterDef(); def.setFilterClass(TomcatServletMetricsFilter.class.getName()); def.setFilterName("metricsFilter"); def.addInitParameter("buckets",".01, .05, .1, .25, .5, 1, 2.5, 5, 10, 30"); ctx.addFilterDef(def); FilterMap map = new FilterMap(); map.setFilterName("metricsFilter"); map.addURLPattern("/*"); ctx.addFilterMap(map); // create a datasource ContextResource resource = new ContextResource(); resource.setName("jdbc/db"); resource.setAuth("Container"); resource.setType("javax.sql.DataSource"); resource.setScope("Sharable"); resource.setProperty("name", "foo"); resource.setProperty("factory", dataSourceFactory); resource.setProperty("driverClassName", "org.h2.Driver"); resource.setProperty("url", "jdbc:h2:mem:dummy"); resource.setProperty("jdbcInterceptors", "nl.nlighten.prometheus.tomcat.TomcatJdbcInterceptor(logFailed=true,logSlow=true,threshold=0,buckets=.01|.05|.1|1|10,slowQueryBuckets=1|10|30)"); ctx.getNamingResources().addResource(resource); // start instance tomcat.init(); tomcat.start(); }
Example 14
Source File: TestAddCharSetFilter.java From Tomcat7.0.67 with Apache License 2.0 | 5 votes |
private void doTest(String encoding, String expected, int mode) throws Exception { // Setup Tomcat instance Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("", null); // Add the Servlet CharsetServlet servlet = new CharsetServlet(mode); Tomcat.addServlet(ctx, "servlet", servlet); ctx.addServletMapping("/", "servlet"); // Add the Filter FilterDef filterDef = new FilterDef(); filterDef.setFilterClass(AddDefaultCharsetFilter.class.getName()); filterDef.setFilterName("filter"); if (encoding != null) { filterDef.addInitParameter("encoding", encoding); } ctx.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("filter"); filterMap.addServletName("servlet"); ctx.addFilterMap(filterMap); tomcat.start(); Map<String, List<String>> headers = new HashMap<String, List<String>>(); getUrl("http://localhost:" + getPort() + "/", new ByteChunk(), headers); List<String> ctHeaders = headers.get("Content-Type"); assertEquals(1, ctHeaders.size()); String ct = ctHeaders.get(0); assertEquals("text/plain;charset=" + expected, ct); }
Example 15
Source File: TestRequest.java From Tomcat7.0.67 with Apache License 2.0 | 5 votes |
private synchronized void init() throws Exception { if (init) return; Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context root = tomcat.addContext("", null); Tomcat.addServlet(root, "Bug37794", new Bug37794Servlet()); root.addServletMapping("/test", "Bug37794"); if (createFilter) { FilterDef failedRequestFilter = new FilterDef(); failedRequestFilter.setFilterName("failedRequestFilter"); failedRequestFilter.setFilterClass( FailedRequestFilter.class.getName()); FilterMap failedRequestFilterMap = new FilterMap(); failedRequestFilterMap.setFilterName("failedRequestFilter"); failedRequestFilterMap.addURLPattern("/*"); root.addFilterDef(failedRequestFilter); root.addFilterMap(failedRequestFilterMap); } tomcat.start(); setPort(tomcat.getConnector().getLocalPort()); init = true; }
Example 16
Source File: TestAddCharSetFilter.java From Tomcat8-Source-Read with MIT License | 5 votes |
private void doTest(String encoding, String expected, int mode, boolean useSetContentType) throws Exception { // Setup Tomcat instance Tomcat tomcat = getTomcatInstance(); // No file system docBase required Context ctx = tomcat.addContext("", null); // Add the Servlet CharsetServlet servlet = new CharsetServlet(mode, useSetContentType); Tomcat.addServlet(ctx, "servlet", servlet); ctx.addServletMappingDecoded("/", "servlet"); // Add the Filter FilterDef filterDef = new FilterDef(); filterDef.setFilterClass(AddDefaultCharsetFilter.class.getName()); filterDef.setFilterName("filter"); if (encoding != null) { filterDef.addInitParameter("encoding", encoding); } ctx.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName("filter"); filterMap.addServletName("servlet"); ctx.addFilterMap(filterMap); tomcat.start(); Map<String, List<String>> headers = new HashMap<>(); getUrl("http://localhost:" + getPort() + "/", new ByteChunk(), headers); String ct = getSingleHeader("Content-Type", headers).toLowerCase(Locale.ENGLISH); Assert.assertEquals("text/plain;charset=" + expected.toLowerCase(Locale.ENGLISH), ct); }
Example 17
Source File: TomcatRsRegistry.java From tomee with Apache License 2.0 | 4 votes |
@Override public AddressInfo createRsHttpListener(final String appId, final String webContext, final HttpListener listener, final ClassLoader classLoader, final String completePath, final String virtualHost, final String auth, final String realm) { String path = webContext; if (path == null) { throw new NullPointerException("contextRoot is null"); } if (listener == null) { throw new NullPointerException("listener is null"); } // find the existing host (we do not auto-create hosts) Container host; Context context = null; if (virtualHost == null) { host = hosts.getDefault(); } else { host = hosts.get(virtualHost); } if (host == null) { for (final Host h : hosts) { context = findContext(h, webContext); if (context != null) { host = h; if (classLoader != null && classLoader.equals(context.getLoader().getClassLoader())) { break; } // else try next to find something better } } if (host == null) { throw new IllegalArgumentException("Invalid virtual host '" + virtualHost + "'. Do you have a matching Host entry in the server.xml?"); } } else { context = findContext(host, webContext); } if (context == null) { throw new IllegalStateException("Invalid context '" + webContext + "'. Cannot find context in host " + host.getName()); } final CxfRsHttpListener cxfRsHttpListener = findCxfRsHttpListener(listener); final String description = "tomee-jaxrs-" + listener; String mapping = completePath; if (!completePath.endsWith("/*")) { // respect servlet spec (!= from our embedded listeners) if (completePath.endsWith("*")) { mapping = completePath.substring(0, completePath.length() - 1); } mapping = mapping + "/*"; } final String urlPattern = removeWebContext(webContext, mapping); cxfRsHttpListener.setUrlPattern(urlPattern.substring(0, urlPattern.length() - 1)); final FilterDef filterDef = new FilterDef(); filterDef.setAsyncSupported("true"); filterDef.setDescription(description); filterDef.setFilterName(description); filterDef.setDisplayName(description); filterDef.setFilter(new CXFJAXRSFilter(cxfRsHttpListener, context.findWelcomeFiles())); filterDef.setFilterClass(CXFJAXRSFilter.class.getName()); filterDef.addInitParameter("mapping", urlPattern.substring(0, urlPattern.length() - "/*".length())); // just keep base path context.addFilterDef(filterDef); final FilterMap filterMap = new FilterMap(); filterMap.addURLPattern(urlPattern); for (final DispatcherType type : DispatcherType.values()) { filterMap.setDispatcher(type.name()); } filterMap.setFilterName(filterDef.getFilterName()); context.addFilterMap(filterMap); Registrations.addFilterConfig(context, filterDef); path = address(connectors, host.getName(), webContext); final String key = address(connectors, host.getName(), completePath); listeners.put(new Key(appId, key), listener); return new AddressInfo(path, key); }
Example 18
Source File: TestRemoteIpFilter.java From tomcatsrc with Apache License 2.0 | 4 votes |
/** * Test {@link RemoteIpFilter} in Tomcat standalone server */ @Test public void testWithTomcatServer() throws Exception { // mostly default configuration : enable "x-forwarded-proto" Map<String, String> remoteIpFilterParameter = new HashMap<String, String>(); remoteIpFilterParameter.put("protocolHeader", "x-forwarded-proto"); // SETUP Tomcat tomcat = getTomcatInstance(); Context root = tomcat.addContext("", TEMP_DIR); FilterDef filterDef = new FilterDef(); filterDef.getParameterMap().putAll(remoteIpFilterParameter); filterDef.setFilterClass(RemoteIpFilter.class.getName()); filterDef.setFilterName(RemoteIpFilter.class.getName()); root.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName(RemoteIpFilter.class.getName()); filterMap.addURLPattern("*"); root.addFilterMap(filterMap); MockHttpServlet mockServlet = new MockHttpServlet(); Tomcat.addServlet(root, mockServlet.getClass().getName(), mockServlet); root.addServletMapping("/test", mockServlet.getClass().getName()); getTomcatInstance().start(); // TEST HttpURLConnection httpURLConnection = (HttpURLConnection) new URL( "http://localhost:" + tomcat.getConnector().getLocalPort() + "/test").openConnection(); String expectedRemoteAddr = "my-remote-addr"; httpURLConnection.addRequestProperty("x-forwarded-for", expectedRemoteAddr); httpURLConnection.addRequestProperty("x-forwarded-proto", "https"); // VALIDATE Assert.assertEquals(HttpURLConnection.HTTP_OK, httpURLConnection.getResponseCode()); HttpServletRequest request = mockServlet.getRequest(); Assert.assertNotNull(request); // VALIDATE X-FOWARDED-FOR Assert.assertEquals(expectedRemoteAddr, request.getRemoteAddr()); Assert.assertEquals(expectedRemoteAddr, request.getRemoteHost()); // VALIDATE X-FORWARDED-PROTO Assert.assertTrue(request.isSecure()); Assert.assertEquals("https", request.getScheme()); Assert.assertEquals(443, request.getServerPort()); }
Example 19
Source File: TomcatFilterUtil.java From aceql-http with GNU Lesser General Public License v2.1 | 4 votes |
/** * Adds a predefined Filter definition and mapping to a Context Method * * @param rootCtx * the Context to add the predefined Filter to */ public static void addFilterToContext(Context rootCtx) { // See https://tomcat.apache.org/tomcat-8.5-doc/config/filter.html for // filters /* * <filter> <filter-name>CorsFilter</filter-name> * <filter-class>org.apache.catalina.filters.CorsFilter</filter-class> * <init-param> <param-name>cors.allowed.origins</param-name> * <param-value>*</param-value> </init-param> <init-param> * <param-name>cors.allowed.methods</param-name> * <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value> </init-param> * <init-param> <param-name>cors.allowed.headers</param-name> * <param-value>Content-Type,X-Requested-With,accept,Origin,Access- * Control-Request-Method,Access-Control-Request-Headers</param-value> * </init-param> * * </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> * <url-pattern>/*</url-pattern> </filter-mapping> */ String filterName = "CorsFilter"; String filterClass = "org.apache.catalina.filters.CorsFilter"; FilterDef filterDef = new FilterDef(); filterDef.setFilterName(filterName); filterDef.setFilterClass(filterClass); filterDef.addInitParameter("cors.allowed.origins", "*"); filterDef.addInitParameter("cors.allowed.methods", "GET,POST,HEAD,OPTIONS,PUT"); filterDef.addInitParameter("cors.allowed.headers", "Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers"); // Don't forget mapping FilterMap filterMap = new FilterMap(); filterMap.setFilterName(filterName); filterMap.addURLPattern("/*"); // Add both filter definition & mapping to context that will be used by // a servlet: rootCtx.addFilterDef(filterDef); rootCtx.addFilterMap(filterMap); }
Example 20
Source File: TestRemoteIpFilter.java From Tomcat8-Source-Read with MIT License | 4 votes |
@Test public void testWithTomcatServer() throws Exception { // mostly default configuration : enable "x-forwarded-proto" Map<String, String> remoteIpFilterParameter = new HashMap<>(); remoteIpFilterParameter.put("protocolHeader", "x-forwarded-proto"); // SETUP Tomcat tomcat = getTomcatInstance(); Context root = tomcat.addContext("", TEMP_DIR); FilterDef filterDef = new FilterDef(); filterDef.getParameterMap().putAll(remoteIpFilterParameter); filterDef.setFilterClass(RemoteIpFilter.class.getName()); filterDef.setFilterName(RemoteIpFilter.class.getName()); root.addFilterDef(filterDef); FilterMap filterMap = new FilterMap(); filterMap.setFilterName(RemoteIpFilter.class.getName()); filterMap.addURLPatternDecoded("*"); root.addFilterMap(filterMap); MockHttpServlet mockServlet = new MockHttpServlet(); Tomcat.addServlet(root, mockServlet.getClass().getName(), mockServlet); root.addServletMappingDecoded("/test", mockServlet.getClass().getName()); getTomcatInstance().start(); // TEST HttpURLConnection httpURLConnection = (HttpURLConnection) new URL( "http://localhost:" + tomcat.getConnector().getLocalPort() + "/test").openConnection(); String expectedRemoteAddr = "my-remote-addr"; httpURLConnection.addRequestProperty("x-forwarded-for", expectedRemoteAddr); httpURLConnection.addRequestProperty("x-forwarded-proto", "https"); // VALIDATE Assert.assertEquals(HttpURLConnection.HTTP_OK, httpURLConnection.getResponseCode()); HttpServletRequest request = mockServlet.getRequest(); Assert.assertNotNull(request); // VALIDATE X-FORWARDED-FOR Assert.assertEquals(expectedRemoteAddr, request.getRemoteAddr()); Assert.assertEquals(expectedRemoteAddr, request.getRemoteHost()); // VALIDATE X-FORWARDED-PROTO Assert.assertTrue(request.isSecure()); Assert.assertEquals("https", request.getScheme()); Assert.assertEquals(443, request.getServerPort()); }