fscan/Common/globals.go
ZacharyZcR c8038bdc62 fix: 修复进度条显示错位问题,实现真正的固定底部进度条
- 简化进度条定位逻辑,移除复杂的光标定位操作
- 优化LogWithProgress协调机制,确保日志与进度条正确交互
- 修复ANSI转义序列被直接输出的问题
- 进度条现在能够在底部原地更新,不再与日志输出争抢显示空间
2025-08-06 05:00:21 +08:00

169 lines
4.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package common
import (
"sync"
"time"
"github.com/schollz/progressbar/v3"
"github.com/shadow1ng/fscan/common/core"
"github.com/shadow1ng/fscan/common/logging"
)
/*
globals.go - 全局变量定义
直接导出core模块的变量避免兼容层重定向。
这些变量被Flag.go和其他模块直接使用。
*/
// =============================================================================
// 版本信息
// =============================================================================
var version = "2.0.2"
// =============================================================================
// 核心扫描配置 - 直接使用core包变量
// =============================================================================
var (
ScanMode string // 扫描模式
ThreadNum int // 线程数
Timeout int64 // 超时时间
DisablePing bool // 禁用ping
LocalMode bool // 本地模式
)
// =============================================================================
// 基础认证配置 - 直接定义
// =============================================================================
var (
Username string // 用户名
Password string // 密码
Userdict map[string][]string // 用户字典
Passwords []string // 密码列表
)
// =============================================================================
// 网络配置 - 直接定义
// =============================================================================
var (
HttpProxy string // HTTP代理
Socks5Proxy string // SOCKS5代理
)
// =============================================================================
// 显示控制 - 直接定义
// =============================================================================
var (
NoColor bool // 禁用颜色
Language string // 语言
LogLevel string // 日志级别
)
// =============================================================================
// 端口映射 - 直接定义
// =============================================================================
var (
PortMap map[int][]string // 端口映射
DefaultMap []string // 默认映射
)
// =============================================================================
// 其他全局变量 - 直接定义,避免多层引用
// =============================================================================
var (
// 输出配置
Outputfile string
OutputFormat string
ProgressBar *progressbar.ProgressBar
OutputMutex sync.Mutex
// 日志状态
status = logging.NewScanStatus()
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.InitGlobalConfig()
// 同步变量
syncWithCore()
}
// syncWithCore 同步common包变量与core包变量
func syncWithCore() {
// 读取core包的默认值
ScanMode = core.ScanMode
ThreadNum = core.ThreadNum
Timeout = core.Timeout
DisablePing = core.DisablePing
LocalMode = core.LocalMode
Username = core.Username
Password = core.Password
Userdict = core.Userdict
Passwords = core.Passwords
HttpProxy = core.HttpProxy
Socks5Proxy = core.Socks5Proxy
NoColor = core.NoColor
Language = core.Language
LogLevel = core.LogLevel
PortMap = core.PortMap
DefaultMap = core.DefaultMap
}
// syncToCore 将common包变量同步回core包
func syncToCore() {
core.ScanMode = ScanMode
core.ThreadNum = ThreadNum
core.Timeout = Timeout
core.DisablePing = DisablePing
core.LocalMode = LocalMode
core.Username = Username
core.Password = Password
core.Userdict = Userdict
core.Passwords = Passwords
core.HttpProxy = HttpProxy
core.Socks5Proxy = Socks5Proxy
core.NoColor = NoColor
core.Language = Language
core.LogLevel = LogLevel
core.PortMap = PortMap
core.DefaultMap = DefaultMap
}