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/ - 各种适配器,实现架构间桥接 设计原则: - 零侵入性:老版本插件完全不需要修改 - 分离关注点:不同类型的代码放在合适的目录 - 统一管理:通过注册表统一管理所有插件 测试验证:✓ 重组后所有插件功能正常
2.2 KiB
2.2 KiB
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接口:
// 老版本插件函数
func PluginFunc(*common.HostInfo) error
// 通过适配器转换为
type Plugin interface {
Scanner
Exploiter
// ...其他接口方法
}
扩展方式
如需添加新的适配器类型:
- 在此目录创建对应的适配器框架文件
- 在子目录中实现具体的适配器插件
- 在 core/Registry.go 中注册适配器插件
- 更新相关文档
使用示例
适配器插件会自动注册,使用方式与标准插件相同:
# 使用老版本插件(通过适配器)
fscan -h target -m ms17010,smb2
# 混合使用新旧插件
fscan -h target -m mysql,redis,ms17010
适配器确保了新旧插件的完全兼容性和统一体验。