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() }