mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
feat: support shell registry for all server
This commit is contained in:
@@ -30,9 +30,9 @@ public class ConfigController {
|
||||
continue;
|
||||
}
|
||||
ShellTool[] supportedShellTools = ShellTool.values();
|
||||
Map<String, List<String>> map = new LinkedHashMap<>(16);
|
||||
Map<String, Set<String>> map = new LinkedHashMap<>(16);
|
||||
for (ShellTool shellTool : supportedShellTools) {
|
||||
List<String> supportedShellTypes = shell.getSupportedShellTypes(shellTool);
|
||||
Set<String> supportedShellTypes = shell.getSupportedShellTypes(shellTool);
|
||||
if (supportedShellTypes.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.reajason.javaweb.boot.controller;
|
||||
|
||||
import com.reajason.javaweb.memshell.GeneratorMain;
|
||||
import com.reajason.javaweb.memshell.MemShellGenerator;
|
||||
import com.reajason.javaweb.boot.dto.GenerateRequest;
|
||||
import com.reajason.javaweb.boot.dto.GenerateResponse;
|
||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||
@@ -28,7 +28,7 @@ public class GeneratorController {
|
||||
ShellConfig shellConfig = request.getShellConfig();
|
||||
ShellToolConfig shellToolConfig = request.parseShellToolConfig();
|
||||
InjectorConfig injectorConfig = request.getInjectorConfig();
|
||||
GenerateResult generateResult = GeneratorMain.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
GenerateResult generateResult = MemShellGenerator.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
Packer packer = request.getPacker().getInstance();
|
||||
if (packer instanceof JarPacker) {
|
||||
return ResponseEntity.ok(new GenerateResponse(generateResult, Base64.getEncoder().encodeToString(((JarPacker) packer).packBytes(generateResult))));
|
||||
|
||||
+1
-43
@@ -4,56 +4,14 @@ import com.reajason.javaweb.memshell.config.*;
|
||||
import com.reajason.javaweb.memshell.generator.*;
|
||||
import com.reajason.javaweb.memshell.server.AbstractShell;
|
||||
import com.reajason.javaweb.memshell.utils.CommonUtil;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/11/24
|
||||
*/
|
||||
public class GeneratorMain {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
ShellConfig shellConfig = ShellConfig.builder()
|
||||
.server(Server.Apusic)
|
||||
.shellTool(ShellTool.Behinder)
|
||||
.shellType(ShellType.LISTENER)
|
||||
.targetJreVersion(Opcodes.V1_8)
|
||||
.debug(true)
|
||||
.build();
|
||||
GodzillaConfig godzillaConfig = GodzillaConfig.builder()
|
||||
.pass("pass")
|
||||
.key("key")
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test123").build();
|
||||
CommandConfig commandConfig = CommandConfig.builder().paramName("listener").build();
|
||||
|
||||
BehinderConfig behinderConfig = BehinderConfig.builder()
|
||||
.pass("test123")
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test").build();
|
||||
|
||||
Suo5Config suo5Config = Suo5Config.builder()
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test").build();
|
||||
|
||||
InjectorConfig injectorConfig = new InjectorConfig();
|
||||
|
||||
GenerateResult generateResult = generate(shellConfig, injectorConfig, behinderConfig);
|
||||
if (generateResult != null) {
|
||||
Files.write(Paths.get(generateResult.getInjectorClassName() + ".class"), generateResult.getInjectorBytes(), StandardOpenOption.CREATE_NEW);
|
||||
Files.write(Paths.get(generateResult.getShellClassName() + ".class"), generateResult.getShellBytes(), StandardOpenOption.CREATE_NEW);
|
||||
// System.out.println(Base64.encodeBase64String(generateResult.getInjectorBytes()));
|
||||
// System.out.println(Packers.ScriptEngine.getInstance().pack(generateResult));
|
||||
// Files.write(Path.of("target.jar"), Packer.INSTANCE.AgentJar.getPacker().packBytes(generateResult));
|
||||
}
|
||||
}
|
||||
public class MemShellGenerator {
|
||||
|
||||
public static GenerateResult generate(ShellConfig shellConfig, InjectorConfig injectorConfig, ShellToolConfig shellToolConfig) {
|
||||
Server server = shellConfig.getServer();
|
||||
@@ -1,5 +1,49 @@
|
||||
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
|
||||
* @since 2024/11/22
|
||||
@@ -29,4 +73,118 @@ public enum ShellTool {
|
||||
* 蚁剑
|
||||
*/
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class ShellType {
|
||||
public static final String SPRING_WEBMVC_JAKARTA_INTERCEPTOR = "JakartaInterceptor";
|
||||
public static final String SPRING_WEBMVC_CONTROLLER_HANDLER = "ControllerHandler";
|
||||
public static final String SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler";
|
||||
public static final String SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET = "AgentFrameworkServlet";
|
||||
public static final String SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET = AGENT + "FrameworkServlet";
|
||||
|
||||
public static final String SPRING_WEBFLUX_WEB_FILTER = "WebFilter";
|
||||
public static final String SPRING_WEBFLUX_HANDLER_METHOD = "HandlerMethod";
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordGenerator {
|
||||
public class AntSwordGenerator {
|
||||
private final ShellConfig shellConfig;
|
||||
private final AntSwordConfig antSwordConfig;
|
||||
|
||||
|
||||
+1
-3
@@ -32,9 +32,7 @@ public class InjectorGenerator {
|
||||
|
||||
@SneakyThrows
|
||||
public DynamicType.Builder<?> getBuilder() {
|
||||
String base64String = Base64.encodeBase64String(
|
||||
CommonUtil.gzipCompress(injectorConfig.getShellClassBytes()))
|
||||
.replace(System.lineSeparator(), "");
|
||||
String base64String = Base64.encodeBase64String(CommonUtil.gzipCompress(injectorConfig.getShellClassBytes()));
|
||||
DynamicType.Builder<?> builder = new ByteBuddy()
|
||||
.redefine(injectorConfig.getInjectorClass())
|
||||
.name(injectorConfig.getInjectorClassName())
|
||||
|
||||
+1
-21
@@ -25,27 +25,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
*/
|
||||
public class ListenerGenerator {
|
||||
|
||||
public static Class<?> generateListenerShellClass(Class<?> implInterceptor, ShellTool shellTool) {
|
||||
Class<?> targetClass = null;
|
||||
switch (shellTool) {
|
||||
case Suo5:
|
||||
targetClass = Suo5Listener.class;
|
||||
break;
|
||||
case Godzilla:
|
||||
targetClass = GodzillaListener.class;
|
||||
break;
|
||||
case Behinder:
|
||||
targetClass = BehinderListener.class;
|
||||
break;
|
||||
case AntSword:
|
||||
targetClass = AntSwordListener.class;
|
||||
break;
|
||||
case Command:
|
||||
targetClass = CommandListener.class;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown shell tool: " + shellTool);
|
||||
}
|
||||
public static Class<?> generateListenerShellClass(Class<?> implInterceptor, Class<?> targetClass) {
|
||||
String newClassName = targetClass.getName() + CommonUtil.getRandomString(5);
|
||||
|
||||
try (DynamicType.Unloaded<?> unloaded = new ByteBuddy()
|
||||
|
||||
+1
-37
@@ -1,11 +1,5 @@
|
||||
package com.reajason.javaweb.memshell.generator;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.utils.CommonUtil;
|
||||
import com.tongweb.web.thor.comet.CometEvent;
|
||||
import com.tongweb.web.thor.connector.Request;
|
||||
@@ -81,27 +75,7 @@ public class ValveGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
public static Class<?> generateValveClass(String packageName, ShellTool shellTool) {
|
||||
Class<?> targetClass = null;
|
||||
switch (shellTool) {
|
||||
case Suo5:
|
||||
targetClass = Suo5Valve.class;
|
||||
break;
|
||||
case Godzilla:
|
||||
targetClass = GodzillaValve.class;
|
||||
break;
|
||||
case Behinder:
|
||||
targetClass = BehinderValve.class;
|
||||
break;
|
||||
case AntSword:
|
||||
targetClass = AntSwordValve.class;
|
||||
break;
|
||||
case Command:
|
||||
targetClass = CommandValve.class;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown shell tool: " + shellTool);
|
||||
}
|
||||
public static Class<?> generateValveClass(String packageName, Class<?> targetClass) {
|
||||
String newClassName = targetClass.getName() + CommonUtil.getRandomString(5);
|
||||
|
||||
DynamicType.Builder<?> builder = new ByteBuddy()
|
||||
@@ -118,18 +92,8 @@ public class ValveGenerator {
|
||||
.intercept(FixedValue.originType());
|
||||
}
|
||||
|
||||
|
||||
try (DynamicType.Unloaded<?> unloaded = builder.make()) {
|
||||
return unloaded.load(ValveGenerator.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER_PERSISTENT).getLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
private static Class<?> generateClass(String className) {
|
||||
try (DynamicType.Unloaded<Object> unloaded = new ByteBuddy()
|
||||
.subclass(Object.class)
|
||||
.name(className)
|
||||
.make()) {
|
||||
return unloaded.load(ValveGenerator.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER_PERSISTENT).getLoaded();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
@@ -16,10 +16,6 @@ public abstract class AbstractShell {
|
||||
|
||||
private final Map<ShellTool, ToolMapping> map = new LinkedHashMap<>();
|
||||
|
||||
public AbstractShell() {
|
||||
init();
|
||||
}
|
||||
|
||||
/**
|
||||
* 定义注入器映射
|
||||
*
|
||||
@@ -27,26 +23,24 @@ public abstract class AbstractShell {
|
||||
*/
|
||||
abstract InjectorMapping getShellInjectorMapping();
|
||||
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return null;
|
||||
}
|
||||
|
||||
protected void addToolMapping(ShellTool shellTool, ToolMapping mapping) {
|
||||
map.put(shellTool, mapping);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化方法,用来定义 shellToolMapping 填充 map
|
||||
*/
|
||||
abstract void init();
|
||||
|
||||
|
||||
/**
|
||||
* 获取内存马功能所支持的注入类型列表
|
||||
*
|
||||
* @param shellTool 内存马功能
|
||||
* @return shellTypes
|
||||
*/
|
||||
public List<String> getSupportedShellTypes(ShellTool shellTool) {
|
||||
public Set<String> getSupportedShellTypes(ShellTool shellTool) {
|
||||
ToolMapping toolMapping = map.get(shellTool);
|
||||
if (toolMapping == null) {
|
||||
return Collections.emptyList();
|
||||
return Collections.emptySet();
|
||||
}
|
||||
return toolMapping.getSupportedShellTypes();
|
||||
}
|
||||
|
||||
@@ -1,20 +1,8 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicServletInjector;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.injector.apusic.ApusicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.apusic.ApusicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.apusic.ApusicServletInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -34,6 +22,11 @@ public class ApusicShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -41,32 +34,4 @@ public class ApusicShell extends AbstractShell {
|
||||
.addInjector(FILTER, ApusicFilterInjector.class)
|
||||
.addInjector(LISTENER, ApusicListenerInjector.class).build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, GodzillaServlet.class)
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla)).build());
|
||||
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, CommandServlet.class)
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command)).build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, BehinderServlet.class)
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder)).build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, Suo5Servlet.class)
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5)).build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword)).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,6 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.bes.injector.*;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.generator.ValveGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.injector.bes.*;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -22,6 +10,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class BesShell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -32,47 +25,4 @@ public class BesShell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, BesContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
|
||||
.addShellClass(VALVE, ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Command))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla))
|
||||
.addShellClass(VALVE, ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Godzilla))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder))
|
||||
.addShellClass(VALVE, ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Behinder))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5))
|
||||
.addShellClass(VALVE, ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Suo5))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword))
|
||||
.addShellClass(VALVE, ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.AntSword))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,10 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.glassfish.GlassFishFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.glassfish.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.glassfish.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -50,6 +34,11 @@ public class GlassFishShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -63,63 +52,4 @@ public class GlassFishShell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(VALVE, CommandValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, CommandValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(VALVE, GodzillaValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, GodzillaValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder);
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(VALVE, BehinderValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, BehinderValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5);
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.addShellClass(VALVE, Suo5Valve.class)
|
||||
.addShellClass(JAKARTA_VALVE, Suo5Valve.class)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(VALVE, AntSwordValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,10 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.inforsuite.injector.InforSuiteFilterInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.glassfish.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.glassfish.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.injector.inforsuite.InforSuiteFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatFilterChainAgentInjector;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -30,6 +14,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class InforSuiteShell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -43,62 +32,4 @@ public class InforSuiteShell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(VALVE, CommandValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, CommandValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(VALVE, GodzillaValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, GodzillaValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder);
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(VALVE, BehinderValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, BehinderValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5);
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.addShellClass(VALVE, Suo5Valve.class)
|
||||
.addShellClass(JAKARTA_VALVE, Suo5Valve.class)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(VALVE, AntSwordValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,32 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Singular;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/21
|
||||
*/
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public class InjectorMapping {
|
||||
|
||||
@Singular("addInjector")
|
||||
private final Map<String, Class<?>> injectorMap;
|
||||
|
||||
public InjectorMapping(Map<String, Class<?>> injectorMap) {
|
||||
this.injectorMap = new LinkedHashMap<>(injectorMap);
|
||||
}
|
||||
|
||||
public Class<?> getInjector(String type) {
|
||||
return injectorMap.get(type);
|
||||
}
|
||||
|
||||
public List<String> getSupportedShellTypes() {
|
||||
return new ArrayList<>(injectorMap.keySet());
|
||||
public Set<String> getSupportedShellTypes() {
|
||||
return Collections.unmodifiableSet(injectorMap.keySet());
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,10 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossFilterInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossValveInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jboss.JbossFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jboss.JbossListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jboss.JbossValveInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatContextValveAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.TomcatFilterChainAgentInjector;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -30,6 +14,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class JbossShell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -40,45 +29,4 @@ public class JbossShell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
|
||||
.addShellClass(VALVE, CommandValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla))
|
||||
.addShellClass(VALVE, GodzillaValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder))
|
||||
.addShellClass(VALVE, BehinderValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5))
|
||||
.addShellClass(VALVE, Suo5Valve.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword))
|
||||
.addShellClass(VALVE, AntSwordValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,9 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.behinder.BehinderHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.command.CommandHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.godzilla.GodzillaHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyFilterInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyServletInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.injector.jetty.JettyFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jetty.JettyHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jetty.JettyListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.jetty.JettyServletInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -44,6 +28,11 @@ public class JettyShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -56,58 +45,4 @@ public class JettyShell extends AbstractShell {
|
||||
.addInjector(JETTY_AGENT_HANDLER, JettyHandlerAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
|
||||
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, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(JETTY_AGENT_HANDLER, CommandHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
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, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(JETTY_AGENT_HANDLER, GodzillaHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder);
|
||||
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, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(JETTY_AGENT_HANDLER, BehinderHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5);
|
||||
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, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(JETTY_AGENT_HANDLER, AntSwordHandlerAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,9 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinFilterInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinListenerInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinServletInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.injector.resin.ResinFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.resin.ResinFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.resin.ResinListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.resin.ResinServletInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -39,6 +23,11 @@ public class ResinShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -48,41 +37,4 @@ public class ResinShell extends AbstractShell {
|
||||
.addInjector(AGENT_FILTER_CHAIN, ResinFilterChainAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, CommandServlet.class)
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, GodzillaServlet.class)
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, BehinderServlet.class)
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, Suo5Servlet.class)
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5))
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword))
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
+43
-1
@@ -1,12 +1,54 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.Server;
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.ShellType;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.generator.ValveGenerator;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/22
|
||||
*/
|
||||
public class ServerToolRegistry {
|
||||
|
||||
public static void addToolMapping(){
|
||||
public static void addToolMapping(ShellTool shellTool, ToolMapping toolMapping) {
|
||||
Map<String, Class<?>> rawToolMapping = toolMapping.getShellClassMap();
|
||||
for (Server value : Server.values()) {
|
||||
AbstractShell shell = value.getShell();
|
||||
InjectorMapping shellInjectorMapping = shell.getShellInjectorMapping();
|
||||
Set<String> injectorSupportedShellTypes = shellInjectorMapping.getSupportedShellTypes();
|
||||
ToolMapping.ToolMappingBuilder toolMappingBuilder = ToolMapping.builder();
|
||||
|
||||
for (Map.Entry<String, Class<?>> entry : rawToolMapping.entrySet()) {
|
||||
String shellType = entry.getKey();
|
||||
if (!injectorSupportedShellTypes.contains(shellType)) {
|
||||
continue;
|
||||
}
|
||||
Class<?> shellClass = entry.getValue();
|
||||
|
||||
if (ShellType.LISTENER.equals(shellType) || ShellType.JAKARTA_LISTENER.equals(shellType)) {
|
||||
shellClass = ListenerGenerator.generateListenerShellClass(shell.getListenerInterceptor(), shellClass);
|
||||
}
|
||||
boolean isValve = (ShellType.VALVE.equals(shellType) || ShellType.JAKARTA_VALVE.equals(shellType));
|
||||
if (isValve && shell instanceof TongWeb6Shell) {
|
||||
shellClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, shellClass);
|
||||
}
|
||||
|
||||
if (isValve && shell instanceof TongWeb7Shell) {
|
||||
shellClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, shellClass);
|
||||
}
|
||||
|
||||
if (isValve && shell instanceof BesShell) {
|
||||
shellClass = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, shellClass);
|
||||
}
|
||||
|
||||
toolMappingBuilder.addShellClass(shellType, shellClass);
|
||||
}
|
||||
shell.addToolMapping(shellTool, toolMappingBuilder.build());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,9 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
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.injector.SpringWebFluxHandlerFunctionInjector;
|
||||
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxHandlerMethodInjector;
|
||||
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxNettyHandlerInjector;
|
||||
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxWebFilterInjector;
|
||||
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -32,25 +22,4 @@ public class SpringWebFluxShell extends AbstractShell {
|
||||
.addInjector(NETTY_HANDLER, SpringWebFluxNettyHandlerInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(SPRING_WEBFLUX_WEB_FILTER, Suo5WebFilter.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,8 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
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.injector.SpringWebMvcControllerHandlerInjector;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentInjector;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcInterceptorInjector;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -37,46 +22,4 @@ public class SpringWebMvcShell extends AbstractShell {
|
||||
.addInjector(SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, SpringWebMvcFrameworkServletAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.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)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,6 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.*;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.injector.*;
|
||||
import com.reajason.javaweb.memshell.injector.tomcat.*;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -43,6 +25,11 @@ public class TomcatShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -59,72 +46,4 @@ public class TomcatShell extends AbstractShell {
|
||||
.addInjector(WEBSOCKET, TomcatWebSocketInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
|
||||
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, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(VALVE, CommandValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, CommandValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(WEBSOCKET, CommandWebSocket.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
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, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(VALVE, GodzillaValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, GodzillaValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder);
|
||||
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, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(VALVE, BehinderValve.class)
|
||||
.addShellClass(JAKARTA_VALVE, BehinderValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5);
|
||||
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, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.addShellClass(VALVE, Suo5Valve.class)
|
||||
.addShellClass(JAKARTA_VALVE, Suo5Valve.class)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(VALVE, AntSwordValve.class)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@@ -1,18 +1,6 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.generator.ValveGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tongweb.injector.*;
|
||||
import com.reajason.javaweb.memshell.injector.tongweb.*;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -22,6 +10,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class TongWeb6Shell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -35,68 +28,4 @@ public class TongWeb6Shell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, TongWebContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
|
||||
Class<?> commandValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, ShellTool.Command);
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(VALVE, commandValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, commandValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
Class<?> godzillaValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, ShellTool.Godzilla);
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(VALVE, godzillaValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, godzillaValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder);
|
||||
Class<?> behinderValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, ShellTool.Behinder);
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(VALVE, behinderValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, behinderValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5);
|
||||
Class<?> suo5ValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, ShellTool.Suo5);
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.addShellClass(VALVE, suo5ValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, suo5ValveClass)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword);
|
||||
Class<?> antSwordValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(VALVE, antSwordValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,6 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.generator.ValveGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tongweb.injector.*;
|
||||
import com.reajason.javaweb.memshell.injector.tongweb.*;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -22,6 +10,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class TongWeb7Shell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -35,68 +28,4 @@ public class TongWeb7Shell extends AbstractShell {
|
||||
.addInjector(CATALINA_AGENT_CONTEXT_VALVE, TongWebContextValveAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
|
||||
Class<?> commandValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, ShellTool.Command);
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(VALVE, commandValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, commandValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
Class<?> godzillaValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, ShellTool.Godzilla);
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(VALVE, godzillaValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, godzillaValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder);
|
||||
Class<?> behinderValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, ShellTool.Behinder);
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(JAKARTA_FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(VALVE, behinderValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, behinderValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5);
|
||||
Class<?> suo5ValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, ShellTool.Suo5);
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(JAKARTA_FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.addShellClass(VALVE, suo5ValveClass)
|
||||
.addShellClass(JAKARTA_VALVE, suo5ValveClass)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword);
|
||||
Class<?> antSwordValveClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, ShellTool.Command);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(VALVE, antSwordValveClass)
|
||||
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
|
||||
.addShellClass(CATALINA_AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,31 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Singular;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/21
|
||||
*/
|
||||
@Builder
|
||||
@Getter
|
||||
public class ToolMapping {
|
||||
|
||||
@Singular("addShellClass")
|
||||
private final Map<String, Class<?>> shellClassMap;
|
||||
|
||||
public List<String> getSupportedShellTypes() {
|
||||
return new ArrayList<>(shellClassMap.keySet());
|
||||
public ToolMapping(Map<String, Class<?>> shellClassMap) {
|
||||
this.shellClassMap = new LinkedHashMap<>(shellClassMap);
|
||||
}
|
||||
|
||||
public Set<String> getSupportedShellTypes() {
|
||||
return shellClassMap.keySet();
|
||||
}
|
||||
|
||||
public Map<String, Pair<Class<?>, Class<?>>> getShellClassMap(InjectorMapping injectorMapping) {
|
||||
|
||||
@@ -1,25 +1,9 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.behinder.BehinderServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.command.CommandServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.godzilla.GodzillaServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.injector.UndertowFilterInjector;
|
||||
import com.reajason.javaweb.memshell.undertow.injector.UndertowListenerInjector;
|
||||
import com.reajason.javaweb.memshell.undertow.injector.UndertowServletInitialHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.undertow.injector.UndertowServletInjector;
|
||||
import com.reajason.javaweb.memshell.injector.undertow.UndertowFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.undertow.UndertowListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.undertow.UndertowServletInitialHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.undertow.UndertowServletInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
@@ -49,6 +33,11 @@ public class UndertowShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -61,58 +50,4 @@ public class UndertowShell extends AbstractShell {
|
||||
.addInjector(UNDERTOW_AGENT_SERVLET_HANDLER, UndertowServletInitialHandlerAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
|
||||
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, commandListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
|
||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla);
|
||||
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, godzillaListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, godzillaListenerClass)
|
||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder);
|
||||
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, behinderListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, behinderListenerClass)
|
||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class)
|
||||
.build());
|
||||
|
||||
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5);
|
||||
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, suo5ListenerClass)
|
||||
.addShellClass(JAKARTA_LISTENER, suo5ListenerClass)
|
||||
.build());
|
||||
|
||||
Class<?> antSwordListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword);
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, antSwordListenerClass)
|
||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,9 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletContextAgentInjector;
|
||||
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletInjector;
|
||||
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicServletContextAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.weblogic.WebLogicServletInjector;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
|
||||
@@ -29,6 +13,11 @@ import static com.reajason.javaweb.memshell.ShellType.*;
|
||||
*/
|
||||
public class WebLogicShell extends AbstractShell {
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return TomcatShell.ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -38,41 +27,4 @@ public class WebLogicShell extends AbstractShell {
|
||||
.addInjector(WEBLOGIC_AGENT_SERVLET_CONTEXT, WebLogicServletContextAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, CommandServlet.class)
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
|
||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, GodzillaServlet.class)
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Godzilla))
|
||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, BehinderServlet.class)
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Behinder))
|
||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, Suo5Servlet.class)
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Suo5))
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword))
|
||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,26 +1,10 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.injector.websphere.WebSphereFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.injector.websphere.WebSphereFilterInjector;
|
||||
import com.reajason.javaweb.memshell.injector.websphere.WebSphereListenerInjector;
|
||||
import com.reajason.javaweb.memshell.injector.websphere.WebSphereServletInjector;
|
||||
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
|
||||
import com.reajason.javaweb.memshell.websphere.injector.WebSphereFilterChainAgentInjector;
|
||||
import com.reajason.javaweb.memshell.websphere.injector.WebSphereFilterInjector;
|
||||
import com.reajason.javaweb.memshell.websphere.injector.WebSphereListenerInjector;
|
||||
import com.reajason.javaweb.memshell.websphere.injector.WebSphereServletInjector;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import net.bytebuddy.implementation.bytecode.assign.Assigner;
|
||||
|
||||
@@ -40,6 +24,11 @@ public class WebSphereShell extends AbstractShell {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getListenerInterceptor() {
|
||||
return ListenerInterceptor.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
return InjectorMapping.builder()
|
||||
@@ -49,41 +38,4 @@ public class WebSphereShell extends AbstractShell {
|
||||
.addInjector(WAS_AGENT_FILTER_MANAGER, WebSphereFilterChainAgentInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, CommandServlet.class)
|
||||
.addShellClass(FILTER, CommandFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command))
|
||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, CommandFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, GodzillaServlet.class)
|
||||
.addShellClass(FILTER, GodzillaFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla))
|
||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, GodzillaFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, BehinderServlet.class)
|
||||
.addShellClass(FILTER, BehinderFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder))
|
||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, BehinderFilterChainAdvisor.class)
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, Suo5Servlet.class)
|
||||
.addShellClass(FILTER, Suo5Filter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5))
|
||||
.build());
|
||||
|
||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||
.addShellClass(SERVLET, AntSwordServlet.class)
|
||||
.addShellClass(FILTER, AntSwordFilter.class)
|
||||
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword))
|
||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package com.reajason.javaweb.memshell.server;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
|
||||
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler;
|
||||
import com.reajason.javaweb.memshell.xxljob.injector.XxlJobNettyHandlerInjector;
|
||||
|
||||
import static com.reajason.javaweb.memshell.ShellType.NETTY_HANDLER;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/1/21
|
||||
*/
|
||||
public class XxlJobShell extends AbstractShell {
|
||||
public static final String NETTY_HANDLER = "NettyHandler";
|
||||
|
||||
@Override
|
||||
protected InjectorMapping getShellInjectorMapping() {
|
||||
@@ -18,13 +16,4 @@ public class XxlJobShell extends AbstractShell {
|
||||
.addInjector(NETTY_HANDLER, XxlJobNettyHandlerInjector.class)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void init() {
|
||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class).build());
|
||||
|
||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class).build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.config.*;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/22
|
||||
*/
|
||||
class GeneratorMainTest {
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
@Disabled
|
||||
void test() {
|
||||
ShellConfig shellConfig = ShellConfig.builder()
|
||||
.server(Server.Apusic)
|
||||
.shellTool(ShellTool.Behinder)
|
||||
.shellType(ShellType.LISTENER)
|
||||
.targetJreVersion(Opcodes.V1_8)
|
||||
.debug(true)
|
||||
.build();
|
||||
GodzillaConfig godzillaConfig = GodzillaConfig.builder()
|
||||
.pass("pass")
|
||||
.key("key")
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test123").build();
|
||||
CommandConfig commandConfig = CommandConfig.builder().paramName("listener").build();
|
||||
|
||||
BehinderConfig behinderConfig = BehinderConfig.builder()
|
||||
.pass("test123")
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test").build();
|
||||
|
||||
Suo5Config suo5Config = Suo5Config.builder()
|
||||
.headerName("User-Agent")
|
||||
.headerValue("test").build();
|
||||
|
||||
InjectorConfig injectorConfig = new InjectorConfig();
|
||||
|
||||
GenerateResult generateResult = MemShellGenerator.generate(shellConfig, injectorConfig, behinderConfig);
|
||||
if (generateResult != null) {
|
||||
Files.write(Paths.get(generateResult.getInjectorClassName() + ".class"), generateResult.getInjectorBytes(), StandardOpenOption.CREATE_NEW);
|
||||
Files.write(Paths.get(generateResult.getShellClassName() + ".class"), generateResult.getShellBytes(), StandardOpenOption.CREATE_NEW);
|
||||
// System.out.println(Base64.encodeBase64String(generateResult.getInjectorBytes()));
|
||||
// System.out.println(Packers.ScriptEngine.getInstance().pack(generateResult));
|
||||
// Files.write(Path.of("target.jar"), Packer.INSTANCE.AgentJar.getPacker().packBytes(generateResult));
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package com.reajason.javaweb.memshell.generator;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import net.bytebuddy.jar.asm.ClassReader;
|
||||
import net.bytebuddy.jar.asm.ClassVisitor;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
@@ -18,7 +19,7 @@ class ValveGeneratorTest {
|
||||
|
||||
@Test
|
||||
void test() throws Exception {
|
||||
Class<?> clazz = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, ShellTool.Command);
|
||||
Class<?> clazz = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, CommandValve.class);
|
||||
InputStream resourceAsStream = clazz.getClassLoader().getResourceAsStream(clazz.getName().replace('.', '/') + ".class");
|
||||
assert resourceAsStream != null;
|
||||
ClassReader cr = new ClassReader(resourceAsStream);
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
package com.reajason.javaweb.integration;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellType;
|
||||
import com.reajason.javaweb.memshell.GeneratorMain;
|
||||
import com.reajason.javaweb.memshell.MemShellGenerator;
|
||||
import com.reajason.javaweb.antsword.AntSwordManager;
|
||||
import com.reajason.javaweb.behinder.BehinderManager;
|
||||
import com.reajason.javaweb.godzilla.GodzillaManager;
|
||||
@@ -210,7 +210,7 @@ public class ShellAssertionTool {
|
||||
log.info("generated {} antSword with pass: {}, headerValue: {}", shellType, antPassword, uniqueName);
|
||||
break;
|
||||
}
|
||||
return GeneratorMain.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
return MemShellGenerator.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
}
|
||||
|
||||
public static void assertInjectIsOk(String url, String shellType, ShellTool shellTool, String content, Packers packer, GenericContainer<?> container) {
|
||||
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
package com.reajason.javaweb.integration.xxljob;
|
||||
|
||||
import com.reajason.javaweb.memshell.server.XxlJobShell;
|
||||
import com.reajason.javaweb.memshell.Packers;
|
||||
import com.reajason.javaweb.memshell.Server;
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
import com.reajason.javaweb.memshell.Packers;
|
||||
import com.reajason.javaweb.memshell.ShellType;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
@@ -39,8 +39,8 @@ public class XxlJob220ContainerTest {
|
||||
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, XxlJobShell.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
|
||||
arguments(imageName, XxlJobShell.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
|
||||
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
|
||||
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.integration.xxljob;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellType;
|
||||
import com.reajason.javaweb.memshell.server.XxlJobShell;
|
||||
import com.reajason.javaweb.memshell.Server;
|
||||
import com.reajason.javaweb.memshell.ShellTool;
|
||||
@@ -39,8 +40,8 @@ public class XxlJob230ContainerTest {
|
||||
|
||||
static Stream<Arguments> casesProvider() {
|
||||
return Stream.of(
|
||||
arguments(imageName, XxlJobShell.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
|
||||
arguments(imageName, XxlJobShell.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
|
||||
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
|
||||
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.apusic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.apusic;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.apusic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.apusic;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.apusic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.apusic;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.bes.injector;
|
||||
package com.reajason.javaweb.memshell.injector.bes;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.bes.injector;
|
||||
package com.reajason.javaweb.memshell.injector.bes;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.bes.injector;
|
||||
package com.reajason.javaweb.memshell.injector.bes;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import java.io.ByteArrayInputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.bes.injector;
|
||||
package com.reajason.javaweb.memshell.injector.bes;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.bes.injector;
|
||||
package com.reajason.javaweb.memshell.injector.bes;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.glassfish.injector;
|
||||
package com.reajason.javaweb.memshell.injector.glassfish;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.glassfish.injector;
|
||||
package com.reajason.javaweb.memshell.injector.glassfish;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.glassfish.injector;
|
||||
package com.reajason.javaweb.memshell.injector.glassfish;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.inforsuite.injector;
|
||||
package com.reajason.javaweb.memshell.injector.inforsuite;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jboss.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jboss;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jboss.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jboss;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jboss.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jboss;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jetty;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jetty;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jetty;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.injector;
|
||||
package com.reajason.javaweb.memshell.injector.jetty;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.resin.injector;
|
||||
package com.reajason.javaweb.memshell.injector.resin;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.resin.injector;
|
||||
package com.reajason.javaweb.memshell.injector.resin;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.resin.injector;
|
||||
package com.reajason.javaweb.memshell.injector.resin;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.resin.injector;
|
||||
package com.reajason.javaweb.memshell.injector.resin;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tomcat;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tongweb;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tongweb;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tongweb;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tongweb;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.injector;
|
||||
package com.reajason.javaweb.memshell.injector.tongweb;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.injector;
|
||||
package com.reajason.javaweb.memshell.injector.undertow;
|
||||
|
||||
import javax.servlet.DispatcherType;
|
||||
import java.io.ByteArrayInputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.injector;
|
||||
package com.reajason.javaweb.memshell.injector.undertow;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.injector;
|
||||
package com.reajason.javaweb.memshell.injector.undertow;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.injector;
|
||||
package com.reajason.javaweb.memshell.injector.undertow;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.weblogic;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.weblogic;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.weblogic;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.injector;
|
||||
package com.reajason.javaweb.memshell.injector.weblogic;
|
||||
|
||||
import javax.servlet.Servlet;
|
||||
import java.io.ByteArrayInputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.websphere.injector;
|
||||
package com.reajason.javaweb.memshell.injector.websphere;
|
||||
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.websphere.injector;
|
||||
package com.reajason.javaweb.memshell.injector.websphere;
|
||||
|
||||
import javax.servlet.Filter;
|
||||
import java.io.ByteArrayInputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.websphere.injector;
|
||||
package com.reajason.javaweb.memshell.injector.websphere;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.websphere.injector;
|
||||
package com.reajason.javaweb.memshell.injector.websphere;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.antsword;
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword.jetty;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.antsword;
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword.undertow;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.behinder;
|
||||
package com.reajason.javaweb.memshell.shelltool.behinder.jetty;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.behinder;
|
||||
package com.reajason.javaweb.memshell.shelltool.behinder.undertow;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.command;
|
||||
package com.reajason.javaweb.memshell.shelltool.command.jetty;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.command;
|
||||
package com.reajason.javaweb.memshell.shelltool.command.undertow;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.jetty.godzilla;
|
||||
package com.reajason.javaweb.memshell.shelltool.godzilla.jetty;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.memshell.undertow.godzilla;
|
||||
package com.reajason.javaweb.memshell.shelltool.godzilla.undertow;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
Reference in New Issue
Block a user