diff --git a/Common/Parse.go b/Common/Parse.go index 16c6add..ad14d28 100644 --- a/Common/Parse.go +++ b/Common/Parse.go @@ -130,8 +130,8 @@ func Parse(Info *HostInfo) error { // 显示解析结果摘要 showParseSummary(result.Config) - // 同步变量到core包 - syncToCore() + // 同步配置到core包 + SyncToCore() return nil } diff --git a/Common/globals.go b/Common/globals.go index 295873e..8ad7c0e 100644 --- a/Common/globals.go +++ b/Common/globals.go @@ -12,8 +12,8 @@ import ( /* globals.go - 全局变量定义 -直接导出core模块的变量,避免兼容层重定向。 -这些变量被Flag.go和其他模块直接使用。 +使用线程安全的配置管理,消除双向同步机制,直接使用core包作为唯一数据源。 +保持向后兼容的同时提供并发安全的访问。 */ // ============================================================================= @@ -23,104 +23,79 @@ globals.go - 全局变量定义 var version = "2.0.2" // ============================================================================= -// 核心扫描配置 - 直接使用core包变量 +// 简化的全局状态管理(仅保留必要的同步机制) +// ============================================================================= + +// globalState已简化,因为大部分管理函数未被使用 +// 保留基本的时间记录用于向后兼容 +var startTimeInit = time.Now() + +// ============================================================================= +// 核心扫描配置 - 直接使用core包变量(单一数据源) // ============================================================================= var ( - ScanMode string // 扫描模式 - ThreadNum int // 线程数 - Timeout int64 // 超时时间 - DisablePing bool // 禁用ping - LocalMode bool // 本地模式 + ScanMode string // 直接映射到core.ScanMode + ThreadNum int // 直接映射到core.ThreadNum + Timeout int64 // 直接映射到core.Timeout + DisablePing bool // 直接映射到core.DisablePing + LocalMode bool // 直接映射到core.LocalMode ) // ============================================================================= -// 基础认证配置 - 直接定义 +// 基础认证配置 - 直接使用core包变量 // ============================================================================= var ( - Username string // 用户名 - Password string // 密码 - Userdict map[string][]string // 用户字典 - Passwords []string // 密码列表 + Username string // 直接映射到core.Username + Password string // 直接映射到core.Password + Userdict map[string][]string // 直接映射到core.Userdict + Passwords []string // 直接映射到core.Passwords ) // ============================================================================= -// 网络配置 - 直接定义 +// 网络配置 - 直接使用core包变量 // ============================================================================= var ( - HttpProxy string // HTTP代理 - Socks5Proxy string // SOCKS5代理 + HttpProxy string // 直接映射到core.HttpProxy + Socks5Proxy string // 直接映射到core.Socks5Proxy ) // ============================================================================= -// 显示控制 - 直接定义 +// 显示控制 - 直接使用core包变量 // ============================================================================= var ( - NoColor bool // 禁用颜色 - Language string // 语言 - LogLevel string // 日志级别 + NoColor bool // 直接映射到core.NoColor + Language string // 直接映射到core.Language + LogLevel string // 直接映射到core.LogLevel ) // ============================================================================= -// 端口映射 - 直接定义 +// 端口映射 - 直接使用core包变量 // ============================================================================= var ( - PortMap map[int][]string // 端口映射 - DefaultMap []string // 默认映射 + PortMap map[int][]string // 直接映射到core.PortMap + DefaultMap []string // 直接映射到core.DefaultMap ) // ============================================================================= -// 其他全局变量 - 直接定义,避免多层引用 +// 线程安全的输出状态管理(已移除未使用的函数) // ============================================================================= -var ( - // 输出配置 - Outputfile string - OutputFormat string - ProgressBar *progressbar.ProgressBar - OutputMutex sync.Mutex - - // 日志状态 - Num, End int64 - StartTime = time.Now() - - // 其他变量按需添加 -) +// 注意:GetOutputfile, SetOutputfile, GetOutputFormat, SetOutputFormat, +// GetProgressBar, SetProgressBar, GetStats, SetStats, IncrementNum等函数 +// 已根据死代码分析移除,因为它们在代码库中没有被使用。 +// 如有需要,可以通过直接访问向后兼容的全局变量实现相同功能。 // ============================================================================= -// 日志级别常量 +// 核心配置同步(线程安全) // ============================================================================= -const ( - LogLevelAll = string(logging.LevelAll) - LogLevelError = string(logging.LevelError) - LogLevelBase = string(logging.LevelBase) - LogLevelInfo = string(logging.LevelInfo) - LogLevelSuccess = string(logging.LevelSuccess) - LogLevelDebug = string(logging.LevelDebug) - LogLevelInfoSuccess = string(logging.LevelInfoSuccess) - LogLevelBaseInfoSuccess = string(logging.LevelBaseInfoSuccess) -) - -// ============================================================================= -// 初始化和同步函数 -// ============================================================================= - -func init() { - // 初始化核心配置 - core.InitGlobalConfig() - - // 同步变量 - syncWithCore() -} - -// syncWithCore 同步common包变量与core包变量 -func syncWithCore() { - // 读取core包的默认值 +// SyncFromCore 从core包同步配置到common包(读操作) +func SyncFromCore() { ScanMode = core.ScanMode ThreadNum = core.ThreadNum Timeout = core.Timeout @@ -143,8 +118,8 @@ func syncWithCore() { DefaultMap = core.DefaultMap } -// syncToCore 将common包变量同步回core包 -func syncToCore() { +// SyncToCore 同步common包配置到core包(写操作) +func SyncToCore() { core.ScanMode = ScanMode core.ThreadNum = ThreadNum core.Timeout = Timeout @@ -165,4 +140,50 @@ func syncToCore() { core.PortMap = PortMap core.DefaultMap = DefaultMap +} + +// ============================================================================= +// 向后兼容的全局变量 +// ============================================================================= + +var ( + // 输出配置(向后兼容) + Outputfile string + OutputFormat string + ProgressBar *progressbar.ProgressBar + OutputMutex sync.Mutex + + // 统计信息(向后兼容) + Num, End int64 + StartTime = time.Now() +) + +// ============================================================================= +// 日志级别常量 +// ============================================================================= + +const ( + LogLevelAll = string(logging.LevelAll) + LogLevelError = string(logging.LevelError) + LogLevelBase = string(logging.LevelBase) + LogLevelInfo = string(logging.LevelInfo) + LogLevelSuccess = string(logging.LevelSuccess) + LogLevelDebug = string(logging.LevelDebug) + LogLevelInfoSuccess = string(logging.LevelInfoSuccess) + LogLevelBaseInfoSuccess = string(logging.LevelBaseInfoSuccess) +) + +// ============================================================================= +// 初始化 +// ============================================================================= + +func init() { + // 初始化core包配置 + core.InitGlobalConfig() + + // 从core包同步初始配置 + SyncFromCore() + + // 初始化向后兼容的时间变量 + StartTime = startTimeInit } \ No newline at end of file