refactor: supported unified test cases provider

This commit is contained in:
ReaJason
2025-02-23 16:44:35 +08:00
parent f1d797295c
commit 7e84cab7bc
76 changed files with 634 additions and 1952 deletions
@@ -1,8 +1,50 @@
package com.reajason.javaweb.memshell; package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.server.*; import com.reajason.javaweb.memshell.server.*;
import com.reajason.javaweb.memshell.shelltool.antsword.*;
import com.reajason.javaweb.memshell.shelltool.antsword.jetty.AntSwordHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.undertow.AntSwordServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.*;
import com.reajason.javaweb.memshell.shelltool.behinder.jetty.BehinderHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.undertow.BehinderServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.*;
import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.*;
import com.reajason.javaweb.memshell.shelltool.godzilla.jetty.GodzillaHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.undertow.GodzillaServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter;
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor;
import lombok.Getter; import lombok.Getter;
import static com.reajason.javaweb.memshell.ShellType.*;
import static com.reajason.javaweb.memshell.server.ServerToolRegistry.addToolMapping;
/** /**
* @author ReaJason * @author ReaJason
* @since 2024/11/22 * @since 2024/11/22
@@ -93,4 +135,113 @@ public enum Server {
Server(AbstractShell shell) { Server(AbstractShell shell) {
this.shell = shell; this.shell = shell;
} }
static {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(JAKARTA_SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, CommandListener.class)
.addShellClass(JAKARTA_LISTENER, CommandListener.class)
.addShellClass(VALVE, CommandValve.class)
.addShellClass(JAKARTA_VALVE, CommandValve.class)
.addShellClass(WEBSOCKET, CommandWebSocket.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, CommandInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class)
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(SERVLET, GodzillaServlet.class)
.addShellClass(JAKARTA_SERVLET, GodzillaServlet.class)
.addShellClass(FILTER, GodzillaFilter.class)
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
.addShellClass(LISTENER, GodzillaListener.class)
.addShellClass(JAKARTA_LISTENER, GodzillaListener.class)
.addShellClass(VALVE, GodzillaValve.class)
.addShellClass(JAKARTA_VALVE, GodzillaValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, GodzillaWebFilter.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, GodzillaHandlerMethod.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, GodzillaHandlerFunction.class)
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class)
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
.addShellClass(SERVLET, BehinderServlet.class)
.addShellClass(JAKARTA_SERVLET, BehinderServlet.class)
.addShellClass(FILTER, BehinderFilter.class)
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
.addShellClass(LISTENER, BehinderListener.class)
.addShellClass(JAKARTA_LISTENER, BehinderListener.class)
.addShellClass(VALVE, BehinderValve.class)
.addShellClass(JAKARTA_VALVE, BehinderValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class)
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(SERVLET, Suo5Servlet.class)
.addShellClass(JAKARTA_SERVLET, Suo5Servlet.class)
.addShellClass(FILTER, Suo5Filter.class)
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
.addShellClass(LISTENER, Suo5Listener.class)
.addShellClass(JAKARTA_LISTENER, Suo5Listener.class)
.addShellClass(VALVE, Suo5Valve.class)
.addShellClass(JAKARTA_VALVE, Suo5Valve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class)
.build());
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(SERVLET, AntSwordServlet.class)
.addShellClass(FILTER, AntSwordFilter.class)
.addShellClass(LISTENER, AntSwordListener.class)
.addShellClass(VALVE, AntSwordValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, AntSwordInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, AntSwordControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class)
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class)
.build());
}
} }
@@ -1,49 +1,5 @@
package com.reajason.javaweb.memshell; package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.server.ToolMapping;
import com.reajason.javaweb.memshell.shelltool.antsword.*;
import com.reajason.javaweb.memshell.shelltool.antsword.jetty.AntSwordHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.undertow.AntSwordServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.*;
import com.reajason.javaweb.memshell.shelltool.behinder.jetty.BehinderHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.undertow.BehinderServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.*;
import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.*;
import com.reajason.javaweb.memshell.shelltool.godzilla.jetty.GodzillaHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.undertow.GodzillaServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter;
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor;
import static com.reajason.javaweb.memshell.ShellType.*;
import static com.reajason.javaweb.memshell.server.ServerToolRegistry.addToolMapping;
/** /**
* @author ReaJason * @author ReaJason
* @since 2024/11/22 * @since 2024/11/22
@@ -75,116 +31,4 @@ public enum ShellTool {
AntSword, AntSword,
; ;
static {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(JAKARTA_SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, CommandListener.class)
.addShellClass(JAKARTA_LISTENER, CommandListener.class)
.addShellClass(VALVE, CommandValve.class)
.addShellClass(JAKARTA_VALVE, CommandValve.class)
.addShellClass(WEBSOCKET, CommandWebSocket.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, CommandInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class)
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(SERVLET, GodzillaServlet.class)
.addShellClass(JAKARTA_SERVLET, GodzillaServlet.class)
.addShellClass(FILTER, GodzillaFilter.class)
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
.addShellClass(LISTENER, GodzillaListener.class)
.addShellClass(JAKARTA_LISTENER, GodzillaListener.class)
.addShellClass(VALVE, GodzillaValve.class)
.addShellClass(JAKARTA_VALVE, GodzillaValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, GodzillaWebFilter.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, GodzillaHandlerMethod.class)
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, GodzillaHandlerFunction.class)
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class)
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
.addShellClass(SERVLET, BehinderServlet.class)
.addShellClass(JAKARTA_SERVLET, BehinderServlet.class)
.addShellClass(FILTER, BehinderFilter.class)
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
.addShellClass(LISTENER, BehinderListener.class)
.addShellClass(JAKARTA_LISTENER, BehinderListener.class)
.addShellClass(VALVE, BehinderValve.class)
.addShellClass(JAKARTA_VALVE, BehinderValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class)
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(SERVLET, Suo5Servlet.class)
.addShellClass(JAKARTA_SERVLET, Suo5Servlet.class)
.addShellClass(FILTER, Suo5Filter.class)
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
.addShellClass(LISTENER, Suo5Listener.class)
.addShellClass(JAKARTA_LISTENER, Suo5Listener.class)
.addShellClass(VALVE, Suo5Valve.class)
.addShellClass(JAKARTA_VALVE, Suo5Valve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class)
.build());
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(SERVLET, AntSwordServlet.class)
.addShellClass(FILTER, AntSwordFilter.class)
.addShellClass(LISTENER, AntSwordListener.class)
.addShellClass(VALVE, AntSwordValve.class)
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, AntSwordInterceptor.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, AntSwordInterceptor.class)
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, AntSwordControllerHandler.class)
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, AntSwordControllerHandler.class)
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class)
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class)
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class)
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class)
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class)
.build());
}
} }
@@ -1,12 +1,6 @@
package com.reajason.javaweb.memshell.generator; package com.reajason.javaweb.memshell.generator;
import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper; import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderListener;
import com.reajason.javaweb.memshell.shelltool.command.CommandListener;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.utils.CommonUtil; import com.reajason.javaweb.memshell.utils.CommonUtil;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil; import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.ByteBuddy; import net.bytebuddy.ByteBuddy;
@@ -21,7 +21,7 @@ public abstract class AbstractShell {
* *
* @return 注入器映射 * @return 注入器映射
*/ */
abstract InjectorMapping getShellInjectorMapping(); public abstract InjectorMapping getShellInjectorMapping();
public Class<?> getListenerInterceptor() { public Class<?> getListenerInterceptor() {
return null; return null;
@@ -42,7 +42,11 @@ public abstract class AbstractShell {
if (toolMapping == null) { if (toolMapping == null) {
return Collections.emptySet(); return Collections.emptySet();
} }
return toolMapping.getSupportedShellTypes(); return Collections.unmodifiableSet(toolMapping.getSupportedShellTypes());
}
public Set<ShellTool> getSupportedShellTools(){
return Collections.unmodifiableSet(map.keySet());
} }
public Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) { public Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) {
@@ -16,7 +16,7 @@ public class BesShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, BesFilterInjector.class) .addInjector(FILTER, BesFilterInjector.class)
.addInjector(LISTENER, BesListenerInjector.class) .addInjector(LISTENER, BesListenerInjector.class)
@@ -40,7 +40,7 @@ public class GlassFishShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, GlassFishFilterInjector.class) .addInjector(FILTER, GlassFishFilterInjector.class)
.addInjector(JAKARTA_FILTER, GlassFishFilterInjector.class) .addInjector(JAKARTA_FILTER, GlassFishFilterInjector.class)
@@ -20,7 +20,7 @@ public class InforSuiteShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, InforSuiteFilterInjector.class) .addInjector(FILTER, InforSuiteFilterInjector.class)
.addInjector(JAKARTA_FILTER, InforSuiteFilterInjector.class) .addInjector(JAKARTA_FILTER, InforSuiteFilterInjector.class)
@@ -20,7 +20,7 @@ public class JbossShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, JbossFilterInjector.class) .addInjector(FILTER, JbossFilterInjector.class)
.addInjector(LISTENER, JbossListenerInjector.class) .addInjector(LISTENER, JbossListenerInjector.class)
@@ -34,7 +34,7 @@ public class JettyShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, JettyServletInjector.class) .addInjector(SERVLET, JettyServletInjector.class)
.addInjector(JAKARTA_SERVLET, JettyServletInjector.class) .addInjector(JAKARTA_SERVLET, JettyServletInjector.class)
@@ -29,7 +29,7 @@ public class ResinShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, ResinServletInjector.class) .addInjector(SERVLET, ResinServletInjector.class)
.addInjector(FILTER, ResinFilterInjector.class) .addInjector(FILTER, ResinFilterInjector.class)
@@ -14,7 +14,7 @@ import static com.reajason.javaweb.memshell.ShellType.*;
public class SpringWebFluxShell extends AbstractShell { public class SpringWebFluxShell extends AbstractShell {
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SPRING_WEBFLUX_WEB_FILTER, SpringWebFluxWebFilterInjector.class) .addInjector(SPRING_WEBFLUX_WEB_FILTER, SpringWebFluxWebFilterInjector.class)
.addInjector(SPRING_WEBFLUX_HANDLER_METHOD, SpringWebFluxHandlerMethodInjector.class) .addInjector(SPRING_WEBFLUX_HANDLER_METHOD, SpringWebFluxHandlerMethodInjector.class)
@@ -13,7 +13,7 @@ import static com.reajason.javaweb.memshell.ShellType.*;
public class SpringWebMvcShell extends AbstractShell { public class SpringWebMvcShell extends AbstractShell {
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SPRING_WEBMVC_INTERCEPTOR, SpringWebMvcInterceptorInjector.class) .addInjector(SPRING_WEBMVC_INTERCEPTOR, SpringWebMvcInterceptorInjector.class)
.addInjector(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, SpringWebMvcInterceptorInjector.class) .addInjector(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, SpringWebMvcInterceptorInjector.class)
@@ -31,7 +31,7 @@ public class TomcatShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, TomcatServletInjector.class) .addInjector(SERVLET, TomcatServletInjector.class)
.addInjector(JAKARTA_SERVLET, TomcatServletInjector.class) .addInjector(JAKARTA_SERVLET, TomcatServletInjector.class)
@@ -16,7 +16,7 @@ public class TongWeb6Shell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, TongWebFilterInjector.class) .addInjector(FILTER, TongWebFilterInjector.class)
.addInjector(JAKARTA_FILTER, TongWebFilterInjector.class) .addInjector(JAKARTA_FILTER, TongWebFilterInjector.class)
@@ -16,7 +16,7 @@ public class TongWeb7Shell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(FILTER, TongWebFilterInjector.class) .addInjector(FILTER, TongWebFilterInjector.class)
.addInjector(JAKARTA_FILTER, TongWebFilterInjector.class) .addInjector(JAKARTA_FILTER, TongWebFilterInjector.class)
@@ -39,7 +39,7 @@ public class UndertowShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, UndertowServletInjector.class) .addInjector(SERVLET, UndertowServletInjector.class)
.addInjector(JAKARTA_SERVLET, UndertowServletInjector.class) .addInjector(JAKARTA_SERVLET, UndertowServletInjector.class)
@@ -19,7 +19,7 @@ public class WebLogicShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, WebLogicServletInjector.class) .addInjector(SERVLET, WebLogicServletInjector.class)
.addInjector(FILTER, WebLogicFilterInjector.class) .addInjector(FILTER, WebLogicFilterInjector.class)
@@ -30,7 +30,7 @@ public class WebSphereShell extends AbstractShell {
} }
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(SERVLET, WebSphereServletInjector.class) .addInjector(SERVLET, WebSphereServletInjector.class)
.addInjector(FILTER, WebSphereFilterInjector.class) .addInjector(FILTER, WebSphereFilterInjector.class)
@@ -11,7 +11,7 @@ import static com.reajason.javaweb.memshell.ShellType.NETTY_HANDLER;
public class XxlJobShell extends AbstractShell { public class XxlJobShell extends AbstractShell {
@Override @Override
protected InjectorMapping getShellInjectorMapping() { public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder() return InjectorMapping.builder()
.addInjector(NETTY_HANDLER, XxlJobNettyHandlerInjector.class) .addInjector(NETTY_HANDLER, XxlJobNettyHandlerInjector.class)
.build(); .build();
-7
View File
@@ -1,10 +1,3 @@
<%@ page import="java.lang.Class" %>
<%@ page import="java.lang.ClassLoader" %>
<%@ page import="java.lang.Exception" %>
<%@ page import="java.lang.Object" %>
<%@ page import="java.lang.Override" %>
<%@ page import="java.lang.String" %>
<%@ page import="java.lang.Thread" %>
<%! <%!
public static class ClassDefiner extends ClassLoader { public static class ClassDefiner extends ClassLoader {
public ClassDefiner() { public ClassDefiner() {
@@ -1,6 +1,5 @@
package com.reajason.javaweb.memshell.generator; package com.reajason.javaweb.memshell.generator;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve; import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import net.bytebuddy.jar.asm.ClassReader; import net.bytebuddy.jar.asm.ClassReader;
import net.bytebuddy.jar.asm.ClassVisitor; import net.bytebuddy.jar.asm.ClassVisitor;
@@ -1,14 +1,10 @@
package com.reajason.javaweb.integration; package com.reajason.javaweb.integration;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.MemShellGenerator;
import com.reajason.javaweb.antsword.AntSwordManager; import com.reajason.javaweb.antsword.AntSwordManager;
import com.reajason.javaweb.behinder.BehinderManager; import com.reajason.javaweb.behinder.BehinderManager;
import com.reajason.javaweb.godzilla.GodzillaManager; import com.reajason.javaweb.godzilla.GodzillaManager;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.*;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.config.*; import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.packer.jar.JarPacker; import com.reajason.javaweb.memshell.packer.jar.JarPacker;
import com.reajason.javaweb.suo5.Suo5Manager; import com.reajason.javaweb.suo5.Suo5Manager;
import lombok.SneakyThrows; import lombok.SneakyThrows;
@@ -17,6 +13,7 @@ import okhttp3.HttpUrl;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import org.junit.jupiter.api.Assumptions;
import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.GenericContainer;
import org.testcontainers.shaded.org.apache.commons.io.FileUtils; import org.testcontainers.shaded.org.apache.commons.io.FileUtils;
import org.testcontainers.shaded.org.apache.commons.lang3.StringUtils; import org.testcontainers.shaded.org.apache.commons.lang3.StringUtils;
@@ -0,0 +1,62 @@
package com.reajason.javaweb.integration;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.ShellType;
import org.junit.jupiter.params.provider.Arguments;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
* @since 2025/2/23
*/
public class TestCasesProvider {
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers, Set<Triple<String, ShellTool, Packers>> unSupportedCases) {
return getTestCases(imageName, server, testShellTypes, testPackers, unSupportedCases, null);
}
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers, Set<Triple<String, ShellTool, Packers>> unSupportedCases, Set<ShellTool> unSupportedShellTools) {
Set<ShellTool> supportedShellTools = new HashSet<>(server.getShell().getSupportedShellTools());
if (unSupportedShellTools != null) {
supportedShellTools.removeAll(unSupportedShellTools);
}
Set<String> unSupported = unSupportedCases == null ? Collections.emptySet() : unSupportedCases.stream().map(i -> i.getLeft() + i.getMiddle() + i.getRight()).collect(Collectors.toSet());
return supportedShellTools.stream()
.flatMap(supportedShellTool -> {
Set<String> toolSupportedShellTypes = new HashSet<>(server.getShell().getSupportedShellTypes(supportedShellTool));
toolSupportedShellTypes.retainAll(testShellTypes);
return toolSupportedShellTypes.stream().flatMap(supportedShellType -> {
if (supportedShellType.startsWith(ShellType.AGENT)) {
if (!unSupported.contains(supportedShellType + supportedShellTool + Packers.AgentJar)) {
return Stream.of(arguments(imageName, supportedShellType, supportedShellTool, Packers.AgentJar));
}
return Stream.empty();
} else {
return testPackers.stream()
.map(testPacker -> {
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)) {
return arguments(imageName, supportedShellType, supportedShellTool, testPacker);
} else {
return null;
}
}).filter(Objects::nonNull);
}
});
});
}
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers) {
return getTestCases(imageName, server, testShellTypes, testPackers, null);
}
}
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,15 +16,16 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.time.Duration; import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -48,54 +50,22 @@ public class GlassFish3ContainerTest {
} }
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), Triple.of(ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), // ClassFormatError
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize), Triple.of(ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) // ClassFormatError
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
); );
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
} }
@AfterAll @AfterAll
static void tearDown() { static void tearDown() {
String logs = container.getLogs(); String logs = container.getLogs();
log.info(logs); // log.info(logs);
assertThat("Logs should not contain any exceptions", logs, doesNotContainException()); // assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
} }
@ParameterizedTest(name = "{0}|{1}{2}|{3}") @ParameterizedTest(name = "{0}|{1}{2}|{3}")
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,8 +16,10 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.time.Duration; import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -49,46 +52,11 @@ public class GlassFish4ContainerTest {
} }
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,46 +43,11 @@ public class GlassFish501ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,59 +43,11 @@ public class GlassFish510ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,14 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -42,37 +42,12 @@ public class GlassFish6ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish; package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,14 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -42,25 +42,12 @@ public class GlassFish7ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.GlassFish;
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP), null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas; package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,46 +42,11 @@ public class Jboss423ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossAS;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas; package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,14 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ContainerTool.jbossPid;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -42,45 +42,12 @@ public class Jboss510ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossAS;
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Deserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), null, Set.of(ShellTool.Behinder) // Behinder SocketTimeOuts
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jbossas; package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,46 +43,11 @@ public class Jboss610ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossAS;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas; package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -44,32 +45,11 @@ public class Jboss711ContainerTest {
* 找不到 Templates 类暂时先不测试反序列化 * 找不到 Templates 类暂时先不测试反序列化
*/ */
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossAS;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbosseap; package com.reajason.javaweb.integration.jbosseap;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,31 +42,11 @@ public class JbossEap6ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossEAP6;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbosseap; package com.reajason.javaweb.integration.jbosseap;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,42 +42,10 @@ public class JbossEap7ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.JBossEAP7;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,34 +42,10 @@ public class Jetty10ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar));
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -40,34 +41,11 @@ public class Jetty11ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -40,41 +41,10 @@ public class Jetty61ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,43 +42,10 @@ public class Jetty76ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,42 +42,10 @@ public class Jetty81ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,42 +43,10 @@ public class Jetty92ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,42 +42,10 @@ public class Jetty93ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty; package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,42 +42,10 @@ public class Jetty94ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Jetty;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.payara; package com.reajason.javaweb.integration.payara;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,14 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -42,61 +42,11 @@ public class Payara5201ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Payara;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -108,6 +58,6 @@ public class Payara5201ContainerTest {
@ParameterizedTest(name = "{0}|{1}{2}|{3}") @ParameterizedTest(name = "{0}|{1}{2}|{3}")
@MethodSource("casesProvider") @MethodSource("casesProvider")
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) { void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer, container); testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
} }
} }
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.payara; package com.reajason.javaweb.integration.payara;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -42,46 +44,11 @@ public class Payara520225ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Payara;
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.payara; package com.reajason.javaweb.integration.payara;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,37 +42,12 @@ public class Payara620222ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Payara;
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP), null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin; package com.reajason.javaweb.integration.resin;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -16,6 +17,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,42 +43,10 @@ public class Resin3116ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Resin;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.resin; package com.reajason.javaweb.integration.resin;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,14 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ContainerTool.resinPid;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,42 +41,10 @@ public class Resin318ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Resin;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin; package com.reajason.javaweb.integration.resin;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,42 +42,10 @@ public class Resin4058ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Resin;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin; package com.reajason.javaweb.integration.resin;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,42 +42,10 @@ public class Resin4067ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Resin;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.springmvc; package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -16,13 +17,13 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -42,42 +43,10 @@ public class SpringBoot2ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.SpringWebMvc;
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine), Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL), Set<Packers> testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springmvc; package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.getUrl; import static com.reajason.javaweb.integration.ContainerTool.getUrl;
@@ -40,32 +42,10 @@ public class SpringBoot2WarContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.SpringWebMvc;
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine), Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL), Set<Packers> testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springmvc; package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -42,19 +44,10 @@ public class SpringBoot3ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.SpringWebMvc;
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Behinder, Packers.Base64), Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Command, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springwebflux; package com.reajason.javaweb.integration.springwebflux;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.springBoot2WebfluxDockerfile; import static com.reajason.javaweb.integration.ContainerTool.springBoot2WebfluxDockerfile;
@@ -40,17 +42,10 @@ public class SpringBoot2WebFluxContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.SpringWebFlux;
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64), Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER);
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springwebflux; package com.reajason.javaweb.integration.springwebflux;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.springBoot3WebfluxDockerfile; import static com.reajason.javaweb.integration.ContainerTool.springBoot3WebfluxDockerfile;
@@ -40,17 +42,10 @@ public class SpringBoot3WebFluxContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.SpringWebFlux;
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64), Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER);
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,62 +42,11 @@ public class Tomcat10ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSPX), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,30 +42,11 @@ public class Tomcat11ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,30 +42,11 @@ public class Tomcat11JRE21ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,71 +42,10 @@ public class Tomcat5ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSPX), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize)
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packer.INSTANCE.AgentJar)
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,56 +43,11 @@ public class Tomcat6ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,56 +43,11 @@ public class Tomcat7ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,76 +43,11 @@ public class Tomcat8ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat; package com.reajason.javaweb.integration.tomcat;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -40,56 +42,11 @@ public class Tomcat9ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Tomcat;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize), ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic; package com.reajason.javaweb.integration.weblogic;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -14,12 +15,13 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -38,27 +40,14 @@ public class WebLogic1036ContainerTest {
.withExposedPorts(7001); .withExposedPorts(7001);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebLogic;
// arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64), Triple.of(ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), // java.net.SocketTimeoutException
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64), Triple.of(ShellType.FILTER, ShellTool.Behinder, Packers.Base64) // java.net.SocketTimeoutException
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
); );
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic; package com.reajason.javaweb.integration.weblogic;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -40,27 +41,10 @@ public class WebLogic12214ContainerTest {
.withExposedPorts(7001); .withExposedPorts(7001);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebLogic;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic; package com.reajason.javaweb.integration.weblogic;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -40,27 +41,10 @@ public class WebLogic14110ContainerTest {
.withExposedPorts(7001); .withExposedPorts(7001);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebLogic;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64), Set<Packers> testPackers = Set.of(Packers.Base64);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.websphere; package com.reajason.javaweb.integration.websphere;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration; import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -43,28 +45,10 @@ public class WebSphere855ContainerTest {
.withPrivilegedMode(true); .withPrivilegedMode(true);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebSphere;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.websphere; package com.reajason.javaweb.integration.websphere;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration; import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -43,27 +45,10 @@ public class WebSphere905ContainerTest {
.withPrivilegedMode(true); .withPrivilegedMode(true);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebSphere;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.websphere7; package com.reajason.javaweb.integration.websphere7;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -17,13 +18,13 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration; import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -43,27 +44,10 @@ public class WebSphere700ContainerTest {
.withPrivilegedMode(true); .withPrivilegedMode(true);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.WebSphere;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly; package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,27 +42,10 @@ public class Wildfly18ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Undertow;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly; package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -41,27 +43,10 @@ public class Wildfly23ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Undertow;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
} }
@AfterAll @AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly; package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes; import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
@@ -15,13 +16,13 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -41,22 +42,11 @@ public class Wildfly30ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Undertow;
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP), return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP), null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
); );
} }
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly; package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -14,7 +15,9 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*; import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -44,42 +47,13 @@ public class Wildfly9ContainerTest {
.withExposedPorts(8080); .withExposedPorts(8080);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.Undertow;
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP), Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine), Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP), Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine), Triple.of(ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar) // Request ClassNotFound in module
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
// arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar)
); );
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.xxljob; package com.reajason.javaweb.integration.xxljob;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers; import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool; import com.reajason.javaweb.memshell.ShellTool;
@@ -15,12 +16,12 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.io.File; import java.io.File;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk; import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/** /**
* @author ReaJason * @author ReaJason
@@ -38,10 +39,10 @@ public class XxlJob220ContainerTest {
.withExposedService("executor", 9999); .withExposedService("executor", 9999);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.XXLJOB;
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob), Set<String> supportedShellTypes = Set.of(ShellType.NETTY_HANDLER);
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob) Set<Packers> testPackers = Set.of(Packers.XxlJob);
); return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
} }
@AfterAll @AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.xxljob; package com.reajason.javaweb.integration.xxljob;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType; import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.server.XxlJobShell; import com.reajason.javaweb.memshell.server.XxlJobShell;
import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.Server;
@@ -16,6 +17,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.junit.jupiter.Testcontainers;
import java.io.File; import java.io.File;
import java.util.Set;
import java.util.stream.Stream; import java.util.stream.Stream;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException; import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
@@ -39,10 +41,10 @@ public class XxlJob230ContainerTest {
.withExposedService("executor", 9999); .withExposedService("executor", 9999);
static Stream<Arguments> casesProvider() { static Stream<Arguments> casesProvider() {
return Stream.of( Server server = Server.XXLJOB;
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob), Set<String> supportedShellTypes = Set.of(ShellType.NETTY_HANDLER);
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob) Set<Packers> testPackers = Set.of(Packers.XxlJob);
); return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
} }
@AfterAll @AfterAll
@@ -58,7 +58,6 @@ public class GodzillaServletInitialHandlerAdvisor {
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length); Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
session.getClass().getMethod("setAttribute", String.class, Object.class).invoke(session, "payload", payload); session.getClass().getMethod("setAttribute", String.class, Object.class).invoke(session, "payload", payload);
} else { } else {
System.out.println(new String(data));
request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data); request.getClass().getMethod("setAttribute", String.class, Object.class).invoke(request, "parameters", data);
ByteArrayOutputStream arrOut = new ByteArrayOutputStream(); ByteArrayOutputStream arrOut = new ByteArrayOutputStream();
Object f = ((Class<?>) sessionPayload).newInstance(); Object f = ((Class<?>) sessionPayload).newInstance();