mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-05-28 17:20:48 +00:00
1.8 KiB
1.8 KiB
FScan 插件开发指南
1. 创建插件
在 Plugins
目录下创建你的插件文件,例如 myPlugin.go
:
package Plugins
import (
"github.com/shadow1ng/fscan/Common"
)
func MyPluginScan(info *Common.HostInfo) error {
// 1. 基础检查
if info == nil {
return errors.New("Invalid host info")
}
// 2. 实现扫描逻辑
result, err := doScan(info)
if err != nil {
return err
}
// 3. 处理结果
if result.Vulnerable {
Common.LogSuccess(fmt.Sprintf("Found vulnerability in %s:%d", info.Host, info.Port))
}
return nil
}
2. 注册插件
在 Core/Registry.go
中注册你的插件:
Common.RegisterPlugin("myplugin", Common.ScanPlugin{
Name: "MyPlugin",
Port: 12345, // 指定端口,如果是web类插件可设为0
ScanFunc: Plugins.MyPluginScan,
})
3. 开发规范
插件结构
- 每个插件应当是独立的功能模块
- 使用清晰的函数名和变量名
- 添加必要的注释说明功能和实现逻辑
错误处理
// 推荐的错误处理方式
if err != nil {
return fmt.Errorf("plugin_name scan error: %v", err)
}
日志输出
// 使用内置的日志函数
Common.LogSuccess("发现漏洞")
Common.LogError("扫描错误")
4. 测试验证
- 编译整个项目确保无错误
- 实际环境测试插件功能
- 验证与其他插件的兼容性
5. 提交流程
- Fork 项目仓库
- 创建功能分支
- 提交代码更改
- 编写清晰的提交信息
- 创建 Pull Request
注意事项
- 遵循 Go 编码规范
- 保证代码可读性和可维护性
- 禁止提交恶意代码
- 做好异常处理和超时控制
- 避免过度消耗系统资源
- 注意信息安全,不要泄露敏感数据