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

- 删除整个legacy插件系统(7794行代码) - 完成所有插件向单文件架构迁移 - 移除19个插件的虚假Exploit功能,只保留真实利用: * Redis: 文件写入、SSH密钥注入、计划任务 * SSH: 命令执行 * MS17010: EternalBlue漏洞利用 - 统一插件接口,简化架构复杂度 - 清理临时文件和备份文件 重构效果: - 代码行数: -7794行 - 插件文件数: 从3文件架构→单文件架构 - 真实利用插件: 从22个→3个 - 架构复杂度: 大幅简化
65 lines
1.3 KiB
Go
65 lines
1.3 KiB
Go
package app
|
||
|
||
import (
|
||
"sort"
|
||
|
||
"github.com/shadow1ng/fscan/common"
|
||
"github.com/shadow1ng/fscan/plugins/services"
|
||
)
|
||
|
||
// Initializer 初始化器接口
|
||
type Initializer interface {
|
||
Initialize() error
|
||
Name() string
|
||
}
|
||
|
||
// PluginInitializer 插件初始化器
|
||
type PluginInitializer struct{}
|
||
|
||
func (p *PluginInitializer) Name() string {
|
||
return "PluginInitializer"
|
||
}
|
||
|
||
func (p *PluginInitializer) Initialize() error {
|
||
var localPlugins []string
|
||
|
||
// 获取所有注册的插件
|
||
allPlugins := services.GetAllPlugins()
|
||
|
||
for _, pluginName := range allPlugins {
|
||
// 新插件系统中local插件在plugins/local目录中,暂时跳过分类
|
||
// 后续可以通过插件名或其他方式区分
|
||
localPlugins = append(localPlugins, pluginName)
|
||
}
|
||
|
||
// 排序以保持一致性
|
||
sort.Strings(localPlugins)
|
||
|
||
// 设置全局变量
|
||
common.LocalPluginsList = localPlugins
|
||
|
||
return nil
|
||
}
|
||
|
||
// LoggerInitializer 日志初始化器
|
||
type LoggerInitializer struct{}
|
||
|
||
func (l *LoggerInitializer) Name() string {
|
||
return "LoggerInitializer"
|
||
}
|
||
|
||
func (l *LoggerInitializer) Initialize() error {
|
||
common.InitLogger()
|
||
return nil
|
||
}
|
||
|
||
// OutputInitializer 输出初始化器
|
||
type OutputInitializer struct{}
|
||
|
||
func (o *OutputInitializer) Name() string {
|
||
return "OutputInitializer"
|
||
}
|
||
|
||
func (o *OutputInitializer) Initialize() error {
|
||
return common.InitOutput()
|
||
} |