mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00

目录结构优化: - 保留 plugins/ 目录下的老版本插件代码不变 - 新增 adapters/ 目录专门存放适配器相关代码 - adapters/legacy_plugin.go - 老版本插件适配器框架 - adapters/legacy_plugins/ - 老版本插件适配器实现 架构分离: - plugins/ - 原始老版本插件代码,保持不变 - plugins/services/ - 新架构服务插件 - adapters/ - 各种适配器,实现架构间桥接 设计原则: - 零侵入性:老版本插件完全不需要修改 - 分离关注点:不同类型的代码放在合适的目录 - 统一管理:通过注册表统一管理所有插件 测试验证:✓ 重组后所有插件功能正常
77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
# Adapters Directory
|
||
|
||
这个目录包含了各种适配器实现,用于将不同架构的代码无缝集成到新的插件系统中。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
adapters/
|
||
├── README.md # 本文档
|
||
├── legacy_plugin.go # 老版本插件适配器框架
|
||
└── legacy_plugins/ # 老版本插件适配器实现
|
||
├── README.md # 老版本插件适配器说明
|
||
├── ms17010/ # MS17010漏洞检测适配器
|
||
├── smbghost/ # SMBGhost漏洞检测适配器
|
||
├── smb/ # SMB服务检测适配器
|
||
├── smb2/ # SMB2服务检测适配器
|
||
├── rdp/ # RDP服务检测适配器
|
||
├── netbios/ # NetBIOS信息收集适配器
|
||
└── elasticsearch/ # Elasticsearch服务检测适配器
|
||
```
|
||
|
||
## 设计原则
|
||
|
||
### 1. 分离关注点
|
||
- **plugins/**: 存放原始的老版本插件代码,保持不变
|
||
- **plugins/services/**: 存放新架构的服务插件
|
||
- **adapters/**: 存放各种适配器,实现不同架构间的桥接
|
||
|
||
### 2. 零侵入性
|
||
- 老版本插件代码完全不需要修改
|
||
- 通过适配器模式实现无缝集成
|
||
- 保持原有功能和行为不变
|
||
|
||
### 3. 统一管理
|
||
- 所有插件(新架构 + 适配器)通过统一的插件注册表管理
|
||
- 提供一致的调用接口和结果格式
|
||
- 支持统一的配置和控制机制
|
||
|
||
## 适配器类型
|
||
|
||
### LegacyPlugin适配器
|
||
将老版本插件函数适配为新架构的Plugin接口:
|
||
|
||
```go
|
||
// 老版本插件函数
|
||
func PluginFunc(*common.HostInfo) error
|
||
|
||
// 通过适配器转换为
|
||
type Plugin interface {
|
||
Scanner
|
||
Exploiter
|
||
// ...其他接口方法
|
||
}
|
||
```
|
||
|
||
## 扩展方式
|
||
|
||
如需添加新的适配器类型:
|
||
|
||
1. 在此目录创建对应的适配器框架文件
|
||
2. 在子目录中实现具体的适配器插件
|
||
3. 在 core/Registry.go 中注册适配器插件
|
||
4. 更新相关文档
|
||
|
||
## 使用示例
|
||
|
||
适配器插件会自动注册,使用方式与标准插件相同:
|
||
|
||
```bash
|
||
# 使用老版本插件(通过适配器)
|
||
fscan -h target -m ms17010,smb2
|
||
|
||
# 混合使用新旧插件
|
||
fscan -h target -m mysql,redis,ms17010
|
||
```
|
||
|
||
适配器确保了新旧插件的完全兼容性和统一体验。 |