package common import ( "sync" "time" "github.com/schollz/progressbar/v3" "github.com/shadow1ng/fscan/common/base" "github.com/shadow1ng/fscan/common/logging" ) /* globals.go - 全局变量定义 使用线程安全的配置管理,消除双向同步机制,直接使用core包作为唯一数据源。 保持向后兼容的同时提供并发安全的访问。 */ // ============================================================================= // 版本信息 // ============================================================================= var version = "2.0.2" // ============================================================================= // 简化的全局状态管理(仅保留必要的同步机制) // ============================================================================= // globalState已简化,因为大部分管理函数未被使用 // 保留基本的时间记录用于向后兼容 var startTimeInit = time.Now() // ============================================================================= // 核心扫描配置 - 直接使用core包变量(单一数据源) // ============================================================================= var ( ScanMode string // 直接映射到base.ScanMode ThreadNum int // 直接映射到base.ThreadNum Timeout int64 // 直接映射到base.Timeout DisablePing bool // 直接映射到base.DisablePing LocalMode bool // 直接映射到base.LocalMode ) // ============================================================================= // 基础认证配置 - 直接使用core包变量 // ============================================================================= var ( Username string // 直接映射到base.Username Password string // 直接映射到base.Password Userdict map[string][]string // 直接映射到base.Userdict Passwords []string // 直接映射到base.Passwords ) // ============================================================================= // 网络配置 - 直接使用core包变量 // ============================================================================= var ( HttpProxy string // 直接映射到base.HttpProxy Socks5Proxy string // 直接映射到base.Socks5Proxy ) // ============================================================================= // 显示控制 - 直接使用core包变量 // ============================================================================= var ( NoColor bool // 直接映射到base.NoColor Language string // 直接映射到base.Language LogLevel string // 直接映射到base.LogLevel ) // ============================================================================= // 端口映射 - 直接使用core包变量 // ============================================================================= var ( PortMap map[int][]string // 直接映射到base.PortMap DefaultMap []string // 直接映射到base.DefaultMap ) // ============================================================================= // 线程安全的输出状态管理(已移除未使用的函数) // ============================================================================= // 注意:GetOutputfile, SetOutputfile, GetOutputFormat, SetOutputFormat, // GetProgressBar, SetProgressBar, GetStats, SetStats, IncrementNum等函数 // 已根据死代码分析移除,因为它们在代码库中没有被使用。 // 如有需要,可以通过直接访问向后兼容的全局变量实现相同功能。 // ============================================================================= // 核心配置同步(线程安全) // ============================================================================= // SyncFromCore 从core包同步配置到common包(读操作) func SyncFromCore() { ScanMode = base.ScanMode ThreadNum = base.ThreadNum Timeout = base.Timeout DisablePing = base.DisablePing LocalMode = base.LocalMode Username = base.Username Password = base.Password Userdict = base.Userdict Passwords = base.Passwords HttpProxy = base.HttpProxy Socks5Proxy = base.Socks5Proxy NoColor = base.NoColor Language = base.Language LogLevel = base.LogLevel PortMap = base.PortMap DefaultMap = base.DefaultMap } // SyncToCore 同步common包配置到core包(写操作) func SyncToCore() { base.ScanMode = ScanMode base.ThreadNum = ThreadNum base.Timeout = Timeout base.DisablePing = DisablePing base.LocalMode = LocalMode base.Username = Username base.Password = Password base.Userdict = Userdict base.Passwords = Passwords base.HttpProxy = HttpProxy base.Socks5Proxy = Socks5Proxy base.NoColor = NoColor base.Language = Language base.LogLevel = LogLevel base.PortMap = PortMap base.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包配置 base.InitGlobalConfig() // 从core包同步初始配置 SyncFromCore() // 初始化向后兼容的时间变量 StartTime = startTimeInit }