/** * Create a new Remote Address Filter Valve. * * @param parent MBean Name of the associated parent component * * @exception Exception if an MBean cannot be created or registered * * @deprecated Will be removed in Tomcat 8.0.x. Replaced by {@link * #createValve(String, String)}. */ @Deprecated public String createRemoteAddrValve(String parent) throws Exception { // Create a new RemoteAddrValve instance RemoteAddrValve valve = new RemoteAddrValve(); // Add the new instance to its parent component ObjectName pname = new ObjectName(parent); ContainerBase containerBase = getParentContainerFromParent(pname); containerBase.getPipeline().addValve(valve); ObjectName oname = valve.getObjectName(); return (oname.toString()); }
/** * Create a new Remote Address Filter Valve. * * @param parent MBean Name of the associated parent component * * @exception Exception if an MBean cannot be created or registered */ public String createRemoteAddrValve(String parent) throws Exception { // Create a new RemoteAddrValve instance RemoteAddrValve valve = new RemoteAddrValve(); // Add the new instance to its parent component ObjectName pname = new ObjectName(parent); ContainerBase containerBase = getParentContainerFromParent(pname); containerBase.addValve(valve); ObjectName oname = valve.getObjectName(); return (oname.toString()); }
/** * Create a new Remote Address Filter Valve. * * @param parent * MBean Name of the associated parent component * * @exception Exception * if an MBean cannot be created or registered * * @deprecated Will be removed in Tomcat 8.0.x. Replaced by * {@link #createValve(String, String)}. */ @Deprecated public String createRemoteAddrValve(String parent) throws Exception { // Create a new RemoteAddrValve instance RemoteAddrValve valve = new RemoteAddrValve(); // Add the new instance to its parent component ObjectName pname = new ObjectName(parent); ContainerBase containerBase = getParentContainerFromParent(pname); containerBase.getPipeline().addValve(valve); ObjectName oname = valve.getObjectName(); return (oname.toString()); }
/** * Create a new Remote Address Filter Valve. * * @param parent MBean Name of the associated parent component * * @exception Exception if an MBean cannot be created or registered */ public String createRemoteAddrValve(String parent) throws Exception { // Create a new RemoteAddrValve instance RemoteAddrValve valve = new RemoteAddrValve(); // Add the new instance to its parent component ObjectName pname = new ObjectName(parent); ContainerBase containerBase = getParentContainerFromParent(pname); containerBase.getPipeline().addValve(valve); ObjectName oname = valve.getObjectName(); return (oname.toString()); }
@Test public void testRedirect() throws Exception { // Disable the following of redirects for this test only boolean originalValue = HttpURLConnection.getFollowRedirects(); HttpURLConnection.setFollowRedirects(false); try { Tomcat tomcat = getTomcatInstance(); // Use standard test webapp as ROOT File rootDir = new File("test/webapp-3.0"); org.apache.catalina.Context root = tomcat.addWebapp(null, "", rootDir.getAbsolutePath()); // Add a security constraint SecurityConstraint constraint = new SecurityConstraint(); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/welcome-files/*"); collection.addPattern("/welcome-files"); constraint.addCollection(collection); constraint.addAuthRole("foo"); root.addConstraint(constraint); // Also make examples available File examplesDir = new File(getBuildDirectory(), "webapps/examples"); org.apache.catalina.Context examples = tomcat.addWebapp( null, "/examples", examplesDir.getAbsolutePath()); examples.setMapperContextRootRedirectEnabled(false); // Then block access to the examples to test redirection RemoteAddrValve rav = new RemoteAddrValve(); rav.setDeny(".*"); rav.setDenyStatus(404); examples.getPipeline().addValve(rav); tomcat.start(); // Redirects within a web application doRedirectTest("/welcome-files", 401); doRedirectTest("/welcome-files/", 401); doRedirectTest("/jsp", 302); doRedirectTest("/jsp/", 404); doRedirectTest("/WEB-INF", 404); doRedirectTest("/WEB-INF/", 404); // Redirects between web applications doRedirectTest("/examples", 404); doRedirectTest("/examples/", 404); } finally { HttpURLConnection.setFollowRedirects(originalValue); } }