fix: 修复扫描逻辑

This commit is contained in:
ZacharyZcR
2025-04-26 06:18:01 +08:00
parent a8bd8ca508
commit e58a48ba9b
8 changed files with 672 additions and 476 deletions
+71
View File
@@ -0,0 +1,71 @@
package Core
import (
"fmt"
"github.com/shadow1ng/fscan/Common"
"sort"
"strings"
)
// 插件列表解析和验证
func parsePluginList(pluginStr string) []string {
if pluginStr == "" {
return nil
}
// 按逗号分割并去除每个插件名称两端的空白
plugins := strings.Split(pluginStr, ",")
for i, p := range plugins {
plugins[i] = strings.TrimSpace(p)
}
// 过滤空字符串
var result []string
for _, p := range plugins {
if p != "" {
result = append(result, p)
}
}
return result
}
// 验证扫描插件的有效性
func validateScanPlugins() error {
// 如果未指定扫描模式或使用All模式,则无需验证
if Common.ScanMode == "" || Common.ScanMode == "all" {
return nil
}
// 解析插件列表
plugins := parsePluginList(Common.ScanMode)
if len(plugins) == 0 {
plugins = []string{Common.ScanMode}
}
// 验证每个插件是否有效
var invalidPlugins []string
for _, plugin := range plugins {
if _, exists := Common.PluginManager[plugin]; !exists {
invalidPlugins = append(invalidPlugins, plugin)
}
}
if len(invalidPlugins) > 0 {
return fmt.Errorf("无效的插件: %s", strings.Join(invalidPlugins, ", "))
}
return nil
}
// 根据类型获取插件列表
func GetPluginsByType(typeName string) []string {
var result []string
for name, plugin := range Common.PluginManager {
if plugin.HasType(typeName) {
result = append(result, name)
}
}
sort.Strings(result)
return result
}