package core import ( "github.com/shadow1ng/fscan/common" "github.com/shadow1ng/fscan/common/i18n" "sync" ) // LocalScanStrategy 本地扫描策略 type LocalScanStrategy struct { *BaseScanStrategy } // NewLocalScanStrategy 创建新的本地扫描策略 func NewLocalScanStrategy() *LocalScanStrategy { return &LocalScanStrategy{ BaseScanStrategy: NewBaseScanStrategy("本地扫描", FilterLocal), } } // Name 返回策略名称 func (s *LocalScanStrategy) Name() string { return i18n.GetText("scan_strategy_local_name") } // Description 返回策略描述 func (s *LocalScanStrategy) Description() string { return i18n.GetText("scan_strategy_local_desc") } // Execute 执行本地扫描策略 func (s *LocalScanStrategy) Execute(info common.HostInfo, ch *chan struct{}, wg *sync.WaitGroup) { // 输出扫描开始信息 s.LogScanStart() // 验证插件配置 if err := s.ValidateConfiguration(); err != nil { common.LogError(err.Error()) return } // 输出插件信息 s.LogPluginInfo() // 准备目标(本地扫描通常只有一个目标,即本机) targets := s.PrepareTargets(info) // 执行扫描任务 ExecuteScanTasks(targets, s, ch, wg) } // PrepareTargets 准备本地扫描目标 func (s *LocalScanStrategy) PrepareTargets(info common.HostInfo) []common.HostInfo { // 本地扫描只使用传入的目标信息,不做额外处理 return []common.HostInfo{info} }