fscan/app/initializer.go
ZacharyZcR 8a79f3cf0f refactor: 简化Web插件系统并移除冗余代码
- 更新插件初始化器集成三个插件系统(Service、Web、Local)
- 清理WebPOC插件:移除重复端口检测和模拟漏洞数据
- 简化WebTitle插件:去除过度设计的WebInfo结构和技术检测
- 移除Web插件系统中的冗余辅助函数
- 统一插件接口实现,提升代码一致性
2025-08-26 16:30:46 +08:00

75 lines
1.7 KiB
Go

package app
import (
"fmt"
"sort"
"github.com/shadow1ng/fscan/common"
"github.com/shadow1ng/fscan/plugins/services"
"github.com/shadow1ng/fscan/plugins/web"
"github.com/shadow1ng/fscan/plugins/local"
)
// Initializer 初始化器接口
type Initializer interface {
Initialize() error
Name() string
}
// PluginInitializer 插件初始化器
type PluginInitializer struct{}
func (p *PluginInitializer) Name() string {
return "PluginInitializer"
}
func (p *PluginInitializer) Initialize() error {
// 直接调用三个包的函数
servicePlugins := services.GetAllPlugins()
webPlugins := web.GetAllWebPlugins()
localPlugins := local.GetAllLocalPlugins()
// 排序
sort.Strings(servicePlugins)
sort.Strings(webPlugins)
sort.Strings(localPlugins)
// 合并所有插件
var allPlugins []string
allPlugins = append(allPlugins, servicePlugins...)
allPlugins = append(allPlugins, webPlugins...)
allPlugins = append(allPlugins, localPlugins...)
sort.Strings(allPlugins)
// 设置全局变量
common.LocalPluginsList = localPlugins
// 记录插件统计
common.LogInfo(fmt.Sprintf("插件系统初始化完成: Service(%d) Web(%d) Local(%d) Total(%d)",
len(servicePlugins), len(webPlugins), len(localPlugins), len(allPlugins)))
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()
}