# das-sdap-plugin-demo
**Repository Path**: blackg/das-sdap-plugin-demo
## Basic Information
- **Project Name**: das-sdap-plugin-demo
- **Description**: DAS-SDAP 平台插件 demo
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-04-02
- **Last Updated**: 2024-04-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# **DAS-SDAP** 插件开发 SDK 指南
## SDK **介绍**
在实际给客户交付方案的过程中,经常开发针对性的代码用来调用客户已有的扫描器完成相关的扫描任务。客户具有开发能里的情况下,可根据 DAS-SDAP 提供的插件开发 SDK自行开发插件
## 依赖引用
+ 安装 sdk 依赖到本地仓库,替换**path/to/dipper-plugin-sdk.jar**为自己的 sdk 路径
```shell
mvn install:install-file -Dfile=path/to/dipper-plugin-sdk.jar -DgroupId=com.dbapp -DartifactId=dipper-plugin-sdk -Dversion=3.8 -Dpackaging=jar -Dscope=provided
```
+ pom 中引用依赖,scope设置为provided,不将其打包到最终的构建产物
```xml
com.dbapp
dipper-plugin-sdk
3.8
provided
```
+ 添加 **maven-shade-plugin** 打包插件,将所有第三方依赖都打入 jar 中
```xml
org.apache.maven.plugins
maven-shade-plugin
3.2.4
package
shade
```
## **插件****初始化****类**
● 包中添加插件初始化类,用于平台识别插件
```
package com.dbapp.dassdap.plugin.demo;
import org.pf4j.PluginWrapper;
import org.pf4j.spring.SpringPlugin;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Plugin extends SpringPlugin {
public Plugin(PluginWrapper wrapper) {
super(wrapper);
}
@Override
public void stop() {
super.stop();
}
@Override
protected ApplicationContext createApplicationContext() {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
applicationContext.setClassLoader(getWrapper().getPluginClassLoader());
applicationContext.refresh();
return applicationContext;
}
}
```
## 插件描述配置
+ 项目**resource** 下添加 **plugin.properties** 配置,用于配置插件基础信息
```properties
plugin.id=das-sdap-plugin-demo
plugin.key=plugin-demo
plugin.class=com.dbapp.dassdap.plugin.demo.Plugin
plugin.version=1.0
plugin.provider=www.dbappsecurity.com.cn
plugin.description=我是插件描述
plugin.capability=SOURCE_CODE
```
+ **plugin.capability**:插件能力,多种能力以英文逗号','隔开
+ HOST:主机安全检测
+ SOURCE_CODE:静态源代码安全检测
+ WEB:动态安全检测
+ APP:移动应用安全检测
+ **plugin.class**:填写插件初始化类的类路径
+
## 插件任务实现
+ 创建实现类,实现 **PluginTask** 接口
```java
package com.dbapp.dassdap.plugin.demo.main;
import cn.hutool.core.bean.BeanUtil;
import com.dbapp.dassdap.plugin.demo.Config;
import com.dbapp.dipper.plugin.sdk.bean.to.TaskCreateModel;
import com.dbapp.dipper.plugin.sdk.bean.to.VulDataModel;
import com.dbapp.dipper.plugin.sdk.common.enums.TaskStatus;
import com.dbapp.dipper.plugin.sdk.interfaces.PluginTask;
import com.dbapp.dipper.util.Result;
import org.pf4j.Extension;
import java.io.File;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
@Extension
public class PluginTaskImpl implements PluginTask {
private Config config;
/**
* 创建任务
*
* @param taskCreateModel 平台新建任务时相关的参数
* @param file 平台新建任务时上传的文件
*/
@Override
public Result