Skip to content

Commit 5274ec0

Browse files
author
‘niuerzhuang’
committed
fix: add option disabled_plugins.
1 parent f1eb0f0 commit 5274ec0

File tree

16 files changed

+73
-24
lines changed

16 files changed

+73
-24
lines changed

dongtai-agent/module-info.java

Whitespace-only changes.

dongtai-agent/src/main/java/io/dongtai/iast/agent/Agent.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ private static String[] parseAgentArgs(String[] args) throws ParseException {
3838
attachOptions.addOption(build("log_level", "log_level", "optional: DongTai agent log print level."));
3939
attachOptions.addOption(build("log_path", "log_path", "optional: DongTai agent log print path."));
4040
attachOptions.addOption(build("log_disable_collector", "log_disable_collector", "optional: DongTai agent disable log collector."));
41+
attachOptions.addOption(build("disabled_plugins", "disabled_plugins", "optional: DongTai agent disable plugins."));
4142

4243
CommandLineParser parser = new DefaultParser();
4344
HelpFormatter formatter = new HelpFormatter();

dongtai-agent/src/main/java/io/dongtai/iast/agent/AgentLauncher.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import io.dongtai.iast.agent.manager.EngineManager;
44
import io.dongtai.iast.agent.monitor.MonitorDaemonThread;
5-
import io.dongtai.iast.agent.monitor.impl.AgentStateMonitor;
65
import io.dongtai.iast.agent.report.AgentRegisterReport;
76
import io.dongtai.iast.common.constants.AgentConstant;
87
import io.dongtai.iast.common.scope.ScopeManager;

dongtai-agent/src/main/java/io/dongtai/iast/agent/IastProperties.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class IastProperties {
3333
put("log_path", PropertyConstant.PROPERTY_LOG_PATH);
3434
put("log_disable_collector", PropertyConstant.PROPERTY_LOG_DISABLE_COLLECTOR);
3535
put("uuid_path", PropertyConstant.PROPERTY_UUID_PATH);
36+
put("disabled_plugins", PropertyConstant.PROPERTY_DISABLED_PLUGINS);
3637
}};
3738

3839
private static IastProperties instance;

dongtai-common/src/main/java/io/dongtai/iast/common/constants/PropertyConstant.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ public class PropertyConstant {
3232
public static final String PROPERTY_RESPONSE_LENGTH = "dongtai.response.length";
3333
public static final String PROPERTY_POLICY_PATH = "dongtai.policy.path";
3434
public static final String PROPERTY_UUID_PATH = "dongtai.uuid.path";
35+
public static final String PROPERTY_DISABLED_PLUGINS = "dongtai.disabled.plugins";
3536
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,6 @@ public interface DispatchPlugin {
1616
* @return ClassVisitor 命中的类访问起
1717
*/
1818
ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext context, Policy policy);
19+
20+
String getName();
1921
}

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

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
import io.dongtai.iast.core.bytecode.enhance.plugin.hardcoded.DispatchHardcodedPlugin;
1010
import io.dongtai.iast.core.bytecode.enhance.plugin.service.jdbc.DispatchJdbc;
1111
import io.dongtai.iast.core.bytecode.enhance.plugin.service.kafka.DispatchKafka;
12-
import io.dongtai.iast.core.bytecode.enhance.plugin.spring.DispatchSpringApplication;
12+
import io.dongtai.iast.core.bytecode.enhance.plugin.spring.DispatchApiCollector;
1313
import io.dongtai.iast.core.handler.hookpoint.models.policy.Policy;
1414
import io.dongtai.iast.core.handler.hookpoint.models.policy.PolicyManager;
1515
import org.objectweb.asm.ClassVisitor;
1616

17-
import java.util.ArrayList;
18-
import java.util.List;
17+
import java.util.*;
1918

2019
/**
2120
@@ -28,25 +27,26 @@ public class PluginRegister {
2827
private final List<DispatchPlugin> plugins;
2928

3029
public PluginRegister() {
31-
this.plugins = new ArrayList<DispatchPlugin>();
32-
if(!"false".equals(System.getProperty("dongtai.plugin.api"))){
33-
this.plugins.add(new DispatchSpringApplication());
34-
}
35-
this.plugins.add(new DispatchJ2ee());
36-
if(!"false".equals(System.getProperty("dongtai.plugin.kafka"))) {
37-
this.plugins.add(new DispatchKafka());
38-
}
39-
this.plugins.add(new DispatchJdbc());
40-
if(!"false".equals(System.getProperty("dongtai.plugin.shiro"))) {
41-
this.plugins.add(new DispatchShiro());
42-
}
43-
if(!"false".equals(System.getProperty("dongtai.plugin.feign"))) {
44-
this.plugins.add(new DispatchFeign());
45-
}
46-
if(!"false".equals(System.getProperty("dongtai.plugin.dubbo"))) {
47-
this.plugins.add(new DispatchDubbo());
48-
}
49-
this.plugins.add(new DispatchClassPlugin());
30+
this.plugins = new ArrayList<>();
31+
List<String> disabledPlugins = getdisabledPlugins();
32+
List<DispatchPlugin> allPlugins = new ArrayList<>(Arrays.asList(
33+
new DispatchApiCollector(),
34+
new DispatchJ2ee(),
35+
new DispatchKafka(),
36+
new DispatchJdbc(),
37+
new DispatchShiro(),
38+
new DispatchFeign(),
39+
new DispatchDubbo(),
40+
new DispatchClassPlugin()
41+
));
42+
allPlugins.removeIf(plugin -> disabledPlugins != null && disabledPlugins.contains(plugin.getName()));
43+
this.plugins.addAll(allPlugins);
44+
}
45+
46+
private List<String> getdisabledPlugins() {
47+
return Optional.ofNullable(System.getProperty("dongtai.disabled.plugins"))
48+
.map(s -> Arrays.asList(s.split(",")))
49+
.orElse(null);
5050
}
5151

5252
public ClassVisitor initial(ClassVisitor classVisitor, ClassContext context, PolicyManager policyManager) {

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/enhance/plugin/authentication/shiro/DispatchShiro.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@ public ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext context, Po
1717
}
1818
return classVisitor;
1919
}
20+
21+
@Override
22+
public String getName() {
23+
return "shiro";
24+
}
2025
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ public ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext classContex
3939
return new ClassVisit(classVisitor, classContext, policy);
4040
}
4141

42+
@Override
43+
public String getName() {
44+
return "class";
45+
}
46+
4247
public class ClassVisit extends AbstractClassVisitor {
4348
private int classVersion;
4449
private final MethodAdapter[] methodAdapters;

dongtai-core/src/main/java/io/dongtai/iast/core/bytecode/enhance/plugin/framework/dubbo/DispatchDubbo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,9 @@ public ClassVisitor dispatch(ClassVisitor classVisitor, ClassContext context, Po
3636

3737
return classVisitor;
3838
}
39+
40+
@Override
41+
public String getName() {
42+
return "dubbo";
43+
}
3944
}

0 commit comments

Comments
 (0)