refactor: 清理common/core包中的死代码并精简常量定义

- 删除未使用的扫描模式、服务类型、输出格式等常量定义
- 移除Manager.go中的死代码访问器函数
- 清理Plugin.go中的未使用插件管理方法
- 简化配置管理架构,保留核心功能
- 总计删除约200行死代码,提升代码维护性
This commit is contained in:
ZacharyZcR 2025-08-06 07:23:17 +08:00
parent aee8720a72
commit cb89558ce6
4 changed files with 15 additions and 292 deletions

View File

@ -22,11 +22,6 @@ var (
const ( const (
ScanModeAll = "all" // 全扫描模式 ScanModeAll = "all" // 全扫描模式
ScanModePortScan = "portscan" // 端口扫描模式
ScanModeTcpScan = "tcpscan" // TCP扫描模式
ScanModeUdpScan = "udpscan" // UDP扫描模式
ScanModeWebScan = "webscan" // Web扫描模式
ScanModeNoPoc = "nopoc" // 无POC扫描模式
) )
// ============================================================================= // =============================================================================
@ -35,80 +30,8 @@ const (
const ( const (
DefaultThreadNum = 600 // 默认线程数 DefaultThreadNum = 600 // 默认线程数
DefaultModuleThreadNum = 6 // 默认模块线程数
DefaultTimeout = 3 // 默认超时时间(秒) DefaultTimeout = 3 // 默认超时时间(秒)
DefaultWebTimeout = 10 // 默认Web超时时间(秒)
DefaultGlobalTimeout = 7200 // 默认全局超时时间(秒)
DefaultLiveTop = 1000 // 默认存活探测端口数
DefaultPocNum = 20 // 默认POC线程数
DefaultScanMode = ScanModeAll // 默认扫描模式 DefaultScanMode = ScanModeAll // 默认扫描模式
DefaultLanguage = "zh" // 默认语言 DefaultLanguage = "zh" // 默认语言
DefaultLogLevel = "base" // 默认日志级别 DefaultLogLevel = "base" // 默认日志级别
DefaultOutputFormat = "txt" // 默认输出格式
DefaultUserAgent = "fscan/2.0.2" // 默认User-Agent
DefaultMaxTargets = 10000 // 默认最大目标数量
DefaultMaxPorts = 5000 // 默认最大端口数量
DefaultMaxCredentials = 1000 // 默认最大凭据数量
)
// =============================================================================
// 服务类型常量
// =============================================================================
const (
ServiceTypeSSH = "ssh" // SSH服务
ServiceTypeFTP = "ftp" // FTP服务
ServiceTypeSMB = "smb" // SMB服务
ServiceTypeMySQL = "mysql" // MySQL服务
ServiceTypeMSSQL = "mssql" // MSSQL服务
ServiceTypeOracle = "oracle" // Oracle服务
ServiceTypeRedis = "redis" // Redis服务
ServiceTypeMongo = "mongo" // MongoDB服务
ServiceTypeHTTP = "http" // HTTP服务
ServiceTypeHTTPS = "https" // HTTPS服务
ServiceTypeTelnet = "telnet" // Telnet服务
ServiceTypeLDAP = "ldap" // LDAP服务
ServiceTypeVNC = "vnc" // VNC服务
ServiceTypeRDP = "rdp" // RDP服务
)
// =============================================================================
// 输出格式常量
// =============================================================================
const (
OutputFormatTXT = "txt" // 文本格式
OutputFormatJSON = "json" // JSON格式
OutputFormatCSV = "csv" // CSV格式
OutputFormatXML = "xml" // XML格式
)
// =============================================================================
// 错误常量
// =============================================================================
const (
ErrInvalidIP = "invalid_ip" // 无效IP地址
ErrInvalidPort = "invalid_port" // 无效端口
ErrInvalidURL = "invalid_url" // 无效URL
ErrFileNotFound = "file_not_found" // 文件未找到
ErrConnectionTimeout = "connection_timeout" // 连接超时
ErrConnectionRefused = "connection_refused" // 连接被拒绝
ErrAuthenticationFail = "authentication_fail" // 认证失败
ErrPermissionDenied = "permission_denied" // 权限不足
ErrInvalidFormat = "invalid_format" // 格式无效
ErrResourceNotFound = "resource_not_found" // 资源未找到
)
// =============================================================================
// 版本信息常量
// =============================================================================
const (
Version = "2.0.2" // 版本号
BuildTime = "2024-01-01 00:00:00" // 构建时间
GitCommit = "unknown" // Git提交哈希
Description = "Fast comprehensive scanner" // 项目描述
Author = "shadow1ng" // 作者
Repository = "github.com/shadow1ng/fscan" // 仓库地址
) )

View File

@ -6,29 +6,6 @@ import (
"github.com/shadow1ng/fscan/common/config" "github.com/shadow1ng/fscan/common/config"
) )
/*
Manager.go - 简化的核心管理器
移除了复杂的配置管理器架构保留核心常量和必要的全局变量
大幅简化代码结构提高性能和可维护性
*/
// =============================================================================
// 核心常量定义
// =============================================================================
// 日志级别常量
const (
LogLevelAll = "all"
LogLevelError = "error"
LogLevelBase = "base"
LogLevelInfo = "info"
LogLevelSuccess = "success"
LogLevelDebug = "debug"
LogLevelInfoSuccess = "info,success"
LogLevelBaseInfoSuccess = "base,info,success"
)
// ============================================================================= // =============================================================================
// 全局配置变量 // 全局配置变量
// ============================================================================= // =============================================================================
@ -60,13 +37,6 @@ var (
PortMap map[int][]string // 端口映射 PortMap map[int][]string // 端口映射
DefaultMap []string // 默认映射 DefaultMap []string // 默认映射
// 输出配置变量
Outputfile string // 输出文件
OutputFormat string // 输出格式
// 其他全局状态
SlowLogOutput bool // 慢速日志输出
// 初始化锁 // 初始化锁
initOnce sync.Once initOnce sync.Once
) )
@ -104,29 +74,10 @@ func InitGlobalConfig() {
} }
// ============================================================================= // =============================================================================
// 简化的访问函数(保持向后兼容) // 访问器函数已移除(未使用的死代码)
// 直接使用全局变量进行访问
// ============================================================================= // =============================================================================
// GetScanMode 获取扫描模式
func GetScanMode() string {
return ScanMode
}
// SetScanMode 设置扫描模式
func SetScanMode(mode string) {
ScanMode = mode
}
// GetThreadNum 获取线程数
func GetThreadNum() int {
return ThreadNum
}
// SetThreadNum 设置线程数
func SetThreadNum(num int) {
ThreadNum = num
}
// init 自动初始化 // init 自动初始化
func init() { func init() {
InitGlobalConfig() InitGlobalConfig()

View File

@ -162,157 +162,11 @@ func (pm *PluginManager) RegisterPlugin(plugin *ScanPlugin) error {
return nil return nil
} }
// GetPlugin 获取指定名称的插件 // ========================================================================================
func (pm *PluginManager) GetPlugin(name string) (*ScanPlugin, bool) { // 未使用的插件管理器方法已删除(死代码清理)
pm.mu.RLock() // 包括GetPlugin, GetPluginsByType, GetPluginsByPort, GetAllPlugins,
defer pm.mu.RUnlock() // EnablePlugin, DisablePlugin, UnregisterPlugin, GetPluginCount, GetEnabledPluginCount
plugin, exists := pm.plugins[name] // ========================================================================================
return plugin, exists
}
// GetPluginsByType 获取指定类型的所有插件
func (pm *PluginManager) GetPluginsByType(pluginType string) []*ScanPlugin {
pm.mu.RLock()
defer pm.mu.RUnlock()
plugins := make([]*ScanPlugin, 0)
if typePlugins, exists := pm.types[pluginType]; exists {
for _, plugin := range typePlugins {
if plugin.IsEnabled() {
plugins = append(plugins, plugin)
}
}
}
return plugins
}
// GetPluginsByPort 获取支持指定端口的所有插件
func (pm *PluginManager) GetPluginsByPort(port int) []*ScanPlugin {
pm.mu.RLock()
defer pm.mu.RUnlock()
plugins := make([]*ScanPlugin, 0)
// 检查按端口索引的插件
if portPlugins, exists := pm.ports[port]; exists {
for _, plugin := range portPlugins {
if plugin.IsEnabled() {
plugins = append(plugins, plugin)
}
}
}
// 检查支持所有端口的插件
for _, plugin := range pm.plugins {
if len(plugin.Ports) == 0 && plugin.IsEnabled() {
plugins = append(plugins, plugin)
}
}
return plugins
}
// GetAllPlugins 获取所有插件
func (pm *PluginManager) GetAllPlugins() map[string]*ScanPlugin {
pm.mu.RLock()
defer pm.mu.RUnlock()
// 创建副本避免并发修改
result := make(map[string]*ScanPlugin)
for name, plugin := range pm.plugins {
result[name] = plugin
}
return result
}
// EnablePlugin 启用插件
func (pm *PluginManager) EnablePlugin(name string) error {
pm.mu.Lock()
defer pm.mu.Unlock()
plugin, exists := pm.plugins[name]
if !exists {
return fmt.Errorf("plugin %s not found", name)
}
plugin.Enabled = true
return nil
}
// DisablePlugin 禁用插件
func (pm *PluginManager) DisablePlugin(name string) error {
pm.mu.Lock()
defer pm.mu.Unlock()
plugin, exists := pm.plugins[name]
if !exists {
return fmt.Errorf("plugin %s not found", name)
}
plugin.Enabled = false
return nil
}
// UnregisterPlugin 注销插件
func (pm *PluginManager) UnregisterPlugin(name string) error {
pm.mu.Lock()
defer pm.mu.Unlock()
plugin, exists := pm.plugins[name]
if !exists {
return fmt.Errorf("plugin %s not found", name)
}
// 从主索引删除
delete(pm.plugins, name)
// 从类型索引删除
for _, pluginType := range plugin.Types {
if typePlugins, exists := pm.types[pluginType]; exists {
for i, p := range typePlugins {
if p.Name == name {
pm.types[pluginType] = append(typePlugins[:i], typePlugins[i+1:]...)
break
}
}
}
}
// 从端口索引删除
for _, port := range plugin.Ports {
if portPlugins, exists := pm.ports[port]; exists {
for i, p := range portPlugins {
if p.Name == name {
pm.ports[port] = append(portPlugins[:i], portPlugins[i+1:]...)
break
}
}
}
}
return nil
}
// GetPluginCount 获取插件总数
func (pm *PluginManager) GetPluginCount() int {
pm.mu.RLock()
defer pm.mu.RUnlock()
return len(pm.plugins)
}
// GetEnabledPluginCount 获取启用的插件数量
func (pm *PluginManager) GetEnabledPluginCount() int {
pm.mu.RLock()
defer pm.mu.RUnlock()
count := 0
for _, plugin := range pm.plugins {
if plugin.IsEnabled() {
count++
}
}
return count
}
// ============================================================================= // =============================================================================
// 全局插件管理函数 (保持向后兼容) // 全局插件管理函数 (保持向后兼容)
@ -341,10 +195,7 @@ func RegisterPlugin(name string, plugin ScanPlugin) error {
return nil return nil
} }
// GetGlobalPluginManager 获取全局插件管理器 // GetGlobalPluginManager 方法已删除(死代码清理)
func GetGlobalPluginManager() *PluginManager {
return globalPluginManager
}
// 向后兼容的全局变量 (已废弃建议使用PluginManager) // 向后兼容的全局变量 (已废弃建议使用PluginManager)
var LegacyPluginManager = make(map[string]ScanPlugin) var LegacyPluginManager = make(map[string]ScanPlugin)

View File

@ -51,9 +51,7 @@ func RegisterPlugin(name string, plugin ScanPlugin) {
} }
} }
func GetGlobalPluginManager() *core.PluginManager { // GetGlobalPluginManager 函数已删除(死代码清理)
return core.GetGlobalPluginManager()
}
// ============================================================================= // =============================================================================
// 日志系统简化接口 // 日志系统简化接口