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