Skip to content

Commit 8a8f866

Browse files
committed
feat: dubbo api gather plugin support disable
1 parent 181791e commit 8a8f866

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/enhance/plugin/PluginRegister.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
import io.dongtai.iast.core.utils.PropertyUtils;
1616
import org.objectweb.asm.ClassVisitor;
1717

18-
import java.util.*;
18+
import java.util.ArrayList;
19+
import java.util.Arrays;
20+
import java.util.List;
1921

2022
/**
2123
@@ -63,4 +65,15 @@ public ClassVisitor initial(ClassVisitor classVisitor, ClassContext context, Pol
6365
}
6466
return classVisitor;
6567
}
68+
69+
/**
70+
* 查询给定的插件是否被禁用
71+
*
72+
* @return
73+
*/
74+
public static boolean isPluginDisable(String pluginName) {
75+
// 现在插件比较少,O(n)性能损耗能够接受
76+
return PropertyUtils.getDisabledPlugins().contains(pluginName);
77+
}
78+
6679
}

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/api/DubboApiGatherThread.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.dongtai.iast.core.handler.hookpoint.api;
22

33
import io.dongtai.iast.common.constants.AgentConstant;
4+
import io.dongtai.iast.core.bytecode.enhance.plugin.PluginRegister;
45
import io.dongtai.iast.core.handler.hookpoint.controller.impl.DubboImpl;
56
import io.dongtai.log.DongTaiLog;
67

@@ -12,6 +13,9 @@ public class DubboApiGatherThread extends AbstractApiGatherThread {
1213

1314
public static final String FRAMEWORK_NAME = "dubbo";
1415

16+
// dubbo api采集插件的名字,可以在启动agent的时候通过指定属性禁用它
17+
public static final String PLUGIN_NAME = "dubbo-api";
18+
1519
// Dubbo的包名是alibaba还是apache的
1620
public static enum DubboPackage {
1721
ALIBABA,
@@ -27,6 +31,12 @@ public static void gather(Class handlerClass) {
2731
}
2832
isStarted = true;
2933

34+
// 判断插件是否开启,仅当开启的情况下才采集
35+
if (PluginRegister.isPluginDisable(PLUGIN_NAME)) {
36+
DongTaiLog.debug("dubbo api gather plugin disable");
37+
return;
38+
}
39+
3040
DubboPackage dubboPackage = parseDubboPackage(handlerClass);
3141
if (dubboPackage == null) {
3242
return;

dongtai-core/src/main/java/io/dongtai/iast/core/handler/hookpoint/api/SpringGatherApiThread.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public static void gather(Object applicationContext) {
2222
return;
2323
}
2424
isStarted = true;
25+
2526
new SpringGatherApiThread(applicationContext).start();
2627
}
2728

0 commit comments

Comments
 (0)