Commit Graph

10 Commits

Author SHA1 Message Date
ZacharyZcR
888a3d8d34 perf: 移除插件系统冗余适配器层
优化内容:
1. 删除servicePluginAdapter适配器
   - 移除无意义的类型转换层
   - 插件直接注册到统一系统

2. 删除webPluginAdapter适配器
   - 消除中间转发调用
   - 简化Web插件注册流程

3. 删除localPluginAdapter适配器
   - 移除多余的包装层
   - 统一插件调用路径

性能提升:
- 消除每次插件调用的中间层开销
- 减少函数调用栈深度
- 删除18行无用适配器代码

功能保持:
- 用户参数调用插件功能完全保持
- 智能端口匹配逻辑不受影响
- 所有扫描功能正常工作
2025-09-02 06:27:14 +08:00
ZacharyZcR
95497da8ca refactor: 优化插件系统设计,消除代码重复
主要改进:
1. 修复Services插件端口数据重复问题
   - 删除插件结构体中的ports字段和GetPorts()方法
   - 系统统一使用注册时的端口信息

2. 引入BasePlugin基础结构体
   - 消除51个插件中重复的name字段和Name()方法
   - 统一插件基础功能,简化代码维护

3. 统一插件接口设计
   - 保持向后兼容,功能完全不变
   - 代码更简洁,符合工程最佳实践

影响范围:
- services插件:29个文件简化
- web插件:2个文件简化
- local插件:21个文件简化
- 总计删除约150行重复代码
2025-09-02 05:36:12 +08:00
ZacharyZcR
8f54702c02 refactor: 精准修复插件系统三个设计问题
经Linus式架构审计,发现并修复插件系统中的具体问题:

## 核心修复

### 1. 消除local插件GetPorts()方法冗余
- 删除21个local插件中无意义的GetPorts()方法
- 简化local.Plugin接口:移除端口概念
- 理由:本地插件不涉及网络,端口概念完全多余

### 2. 消除web插件GetPorts()方法冗余
- 删除2个web插件中无用的GetPorts()方法
- 简化web.WebPlugin接口:专注智能HTTP检测
- 理由:Web插件使用动态HTTP检测,预定义端口无价值

### 3. 统一插件命名规范
- 统一所有插件接口使用Name()方法(符合Go惯例)
- 消除GetName()与Name()不一致问题
- 简化适配器:不再需要方法名转换

## 技术改进

接口精简:
- local插件:GetName() + GetPorts() → Name()
- web插件:GetName() + GetPorts() → Name()
- services插件:GetName() → Name()(保留GetPorts(),业务必需)

代码减少:
- 删除23个无用GetPorts()方法
- 重命名52个Name()方法
- 简化3个插件接口定义

## 影响范围

修改文件:55个插件文件
代码变更:-155行 +61行(净减少94行)
功能影响:零破坏性,保持所有业务逻辑不变

这是基于业务需求分析的精准重构,消除真正多余的部分,
保持系统架构合理性和向后兼容性。
2025-08-26 20:38:39 +08:00
ZacharyZcR
3e0617f525 refactor: 优化插件注册机制,消除启动时不必要实例化
- 添加RegisterPluginWithPorts高效注册方式,直接传递端口信息
- 优化关键服务插件(MySQL/SSH/Redis)使用新注册方式
- 移除无意义的反向适配函数GetPlugin/GetLocalPlugin
- 清理总是返回nil的无用接口,提升代码清晰度

性能优化:
* 消除服务插件注册时的实例创建开销
* MySQL/SSH/Redis等关键插件不再在启动时被实例化
* 简化插件获取流程,直接使用plugins.Get()

代码清理:
* 删除说谎的函数接口,遵循"不要说谎"原则
* 保持向后兼容:旧的RegisterPlugin仍可用但效率较低
* 所有插件控制逻辑和功能保持完整
2025-08-26 19:59:59 +08:00
ZacharyZcR
43ddb3630d feat: 完善本地插件控制机制和参数验证
- 实现本地插件严格单个指定控制,拒绝多插件分隔符
- 修复本地插件自动调用问题,避免不必要的插件实例创建
- 添加-local与-h/-u参数的互斥性检查
- 优化插件存在性检查,使用pluginExists()替代plugins.Get()
- 完善统一插件系统的端口信息管理
- 增强Web插件的协议智能检测功能

主要变更:
* 本地插件现在只能通过-local参数明确指定单个插件运行
* 插件适用性检查不再创建不必要的插件实例,提升性能
* 本地扫描与网络扫描参数完全隔离,避免配置冲突
2025-08-26 19:34:14 +08:00
ZacharyZcR
d570be1f50 Linus式插件系统重写第一阶段完成
- 删除460行过度工程代码,替换为273行简洁实现
- 统一三套独立注册系统为单一全局注册表
- 删除app/container.go容器依赖注入系统(107行)
- 删除app/initializer.go复杂初始化器(75行)
- 删除core/PluginAdapter.go适配器层(82行)
- 删除plugins/{services,web,local}/init.go重复代码(238行)
- 创建plugins/init.go统一插件接口(116行)
- 添加向后兼容适配层保持现有插件不变

架构简化效果:
- 代码减少: 460行 → 273行 (减少41%)
- 接口统一: 3个Plugin接口 → 1个Plugin接口
- 注册系统: 3套独立系统 → 1套全局系统
- 消除特殊情况,符合'好代码没有特殊情况'原则

编译测试通过,基本功能验证正常
2025-08-26 18:03:57 +08:00
ZacharyZcR
859e9fadfa 修复编译错误:移除未使用的bufio导入 2025-08-26 17:46:03 +08:00
ZacharyZcR
4cd8ed5668 feat: 完成本地插件架构统一迁移
迁移所有本地插件到统一Plugin接口架构:
- socks5proxy/systemdservice: 网络代理和Linux服务持久化
- winregistry/winservice/winschtask/winstartup/winwmi: Windows持久化套件
- 所有插件消除BaseLocalPlugin继承,统一使用Plugin接口
- 保持原有功能完整性,支持跨平台编译标记
- 删除过度设计的继承体系,实现直接简洁实现
2025-08-26 14:39:53 +08:00
ZacharyZcR
678d750c8a refactor: 重构插件架构,实现单文件插件系统
将复杂的三文件插件架构(connector/exploiter/plugin)重构为简化的单文件插件架构,
大幅减少代码重复和维护成本,提升插件开发效率。

主要改进:
• 将每个服务插件从3个文件简化为1个文件
• 删除过度设计的工厂模式、适配器模式等抽象层
• 消除plugins/services/、plugins/adapters/、plugins/base/复杂目录结构
• 实现直接的插件注册机制,提升系统简洁性
• 保持完全向后兼容,所有扫描功能和输出格式不变

重构统计:
• 删除文件:100+个复杂架构文件
• 新增文件:20个简化的单文件插件
• 代码减少:每个插件减少60-80%代码量
• 功能增强:所有插件包含完整扫描和利用功能

已重构插件: MySQL, SSH, Redis, MongoDB, PostgreSQL, MSSQL, Oracle,
Neo4j, Memcached, RabbitMQ, ActiveMQ, Cassandra, FTP, Kafka, LDAP,
Rsync, SMTP, SNMP, Telnet, VNC

验证通过: 新系统编译运行正常,所有插件功能验证通过
2025-08-25 23:57:00 +08:00
ZacharyZcR
4a3f281b6b refactor: 统一Plugins目录大小写为小写
- 将所有Plugins路径重命名为plugins
- 修复Git索引与实际文件系统大小写不一致问题
- 确保跨平台兼容性和路径一致性
2025-08-12 13:08:06 +08:00