mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 05:56:46 +08:00

移除了36个静态分析工具识别的未使用函数,减少代码体积534行: 核心模块: - core/PluginAdapter.go: 移除7个未使用的插件适配器方法 - core/Registry.go: 移除5个未使用的注册器方法 - core/Scanner.go: 移除1个未使用的扫描方法 - core/WebDetection.go: 移除4个未使用的Web检测方法 通用模块: - common/ConcurrencyMonitor.go: 移除3个未使用的并发监控方法 - common/common.go: 移除1个未使用的插件注册方法 - common/base/Plugin.go: 移除4个未使用的插件管理方法 - common/parsers/Simple.go: 移除1个未使用的端口解析方法 - common/utils/memmonitor.go: 移除9个未使用的内存监控方法 - common/utils/slicepool.go: 移除1个未使用的切片去重方法 插件模块: - plugins/services/vnc/plugin.go: 移除1个未使用的服务识别方法 所有移除的函数均替换为中文注释标记,保持代码可读性。
149 lines
4.7 KiB
Go
149 lines
4.7 KiB
Go
package base
|
||
|
||
import (
|
||
"sync"
|
||
)
|
||
|
||
/*
|
||
Plugin.go - 插件系统管理
|
||
|
||
整合Types.go中的插件系统,提供统一的插件注册和管理机制。
|
||
*/
|
||
|
||
// =============================================================================
|
||
// 核心数据结构 (从Types.go迁移)
|
||
// =============================================================================
|
||
|
||
// HostInfo 主机信息结构
|
||
type HostInfo struct {
|
||
Host string // 主机地址
|
||
Ports string // 端口范围
|
||
Url string // URL地址
|
||
Infostr []string // 附加信息
|
||
}
|
||
|
||
// =============================================================================
|
||
// 插件类型常量
|
||
// =============================================================================
|
||
|
||
const (
|
||
PluginTypeService = "service" // 服务类型插件
|
||
PluginTypeWeb = "web" // Web类型插件
|
||
PluginTypeLocal = "local" // 本地类型插件
|
||
PluginTypeBrute = "brute" // 暴力破解插件
|
||
PluginTypePoc = "poc" // POC验证插件
|
||
PluginTypeScan = "scan" // 扫描探测插件
|
||
)
|
||
|
||
// =============================================================================
|
||
// 插件定义和管理
|
||
// =============================================================================
|
||
|
||
// ScanPlugin 定义扫描插件的结构
|
||
type ScanPlugin struct {
|
||
Name string // 插件名称
|
||
Version string // 插件版本
|
||
Description string // 插件描述
|
||
Author string // 插件作者
|
||
Ports []int // 适用端口
|
||
Types []string // 插件类型标签,一个插件可以有多个类型
|
||
Priority int // 插件优先级(数字越小优先级越高)
|
||
Enabled bool // 是否启用
|
||
ScanFunc func(*HostInfo) error // 扫描函数
|
||
}
|
||
|
||
// PluginManager 插件管理器
|
||
type PluginManager struct {
|
||
mu sync.RWMutex
|
||
plugins map[string]*ScanPlugin
|
||
types map[string][]*ScanPlugin // 按类型索引的插件
|
||
ports map[int][]*ScanPlugin // 按端口索引的插件
|
||
}
|
||
|
||
// 全局插件管理器实例
|
||
var globalPluginManager = NewPluginManager()
|
||
|
||
// NewPluginManager 创建新的插件管理器
|
||
func NewPluginManager() *PluginManager {
|
||
return &PluginManager{
|
||
plugins: make(map[string]*ScanPlugin),
|
||
types: make(map[string][]*ScanPlugin),
|
||
ports: make(map[int][]*ScanPlugin),
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// 插件基础方法
|
||
// =============================================================================
|
||
|
||
// HasType 检查插件是否具有指定类型
|
||
func (p *ScanPlugin) HasType(typeName string) bool {
|
||
for _, t := range p.Types {
|
||
if t == typeName {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
// HasPort 检查插件是否支持指定端口
|
||
func (p *ScanPlugin) HasPort(port int) bool {
|
||
// 如果没有指定端口列表,表示支持所有端口
|
||
if len(p.Ports) == 0 {
|
||
return true
|
||
}
|
||
|
||
// 检查端口是否在支持列表中
|
||
for _, supportedPort := range p.Ports {
|
||
if port == supportedPort {
|
||
return true
|
||
}
|
||
}
|
||
return false
|
||
}
|
||
|
||
// IsEnabled 检查插件是否启用
|
||
func (p *ScanPlugin) IsEnabled() bool {
|
||
return p.Enabled
|
||
}
|
||
|
||
// GetInfo 获取插件基本信息
|
||
func (p *ScanPlugin) GetInfo() map[string]interface{} {
|
||
return map[string]interface{}{
|
||
"name": p.Name,
|
||
"version": p.Version,
|
||
"description": p.Description,
|
||
"author": p.Author,
|
||
"types": p.Types,
|
||
"ports": p.Ports,
|
||
"priority": p.Priority,
|
||
"enabled": p.Enabled,
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// 插件管理器方法
|
||
// =============================================================================
|
||
|
||
// 已移除未使用的 RegisterPlugin 方法
|
||
|
||
// ========================================================================================
|
||
// 未使用的插件管理器方法已删除(死代码清理)
|
||
// 包括:GetPlugin, GetPluginsByType, GetPluginsByPort, GetAllPlugins,
|
||
// EnablePlugin, DisablePlugin, UnregisterPlugin, GetPluginCount, GetEnabledPluginCount
|
||
// ========================================================================================
|
||
|
||
// =============================================================================
|
||
// 全局插件管理函数 (保持向后兼容)
|
||
// =============================================================================
|
||
|
||
// 已移除未使用的 RegisterPlugin 方法
|
||
|
||
// 已移除未使用的 Clear 方法
|
||
|
||
// 已移除未使用的 ClearPluginsByType 方法
|
||
|
||
// GetGlobalPluginManager 方法已删除(死代码清理)
|
||
|
||
// 向后兼容的全局变量 (已废弃,建议使用PluginManager)
|
||
var LegacyPluginManager = make(map[string]ScanPlugin) |