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

新增功能: - 添加-ao参数启用存活探测模式,专注于ICMP ping检测 - 实现AliveScanner专用扫描器,提供详细统计信息 - 集成到Scanner架构,支持与其他扫描模式无缝切换 - 完善i18n国际化支持,覆盖中英文界面 技术实现: - 新增core/AliveScanner.go实现专用存活检测逻辑 - 扩展Scanner.go选择策略支持存活探测模式 - 优化目标解析和错误处理机制 - 提供成功率、耗时等详细扫描统计 使用场景: - 快速批量主机存活性验证 - 网络拓扑发现前期探测 - 大规模网络资产盘点预检
193 lines
6.2 KiB
Go
193 lines
6.2 KiB
Go
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
|
||
AliveOnly bool // 仅存活探测模式
|
||
)
|
||
|
||
// =============================================================================
|
||
// 基础认证配置 - 直接使用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
|
||
|
||
// 进度条控制
|
||
ShowProgress bool // 计算得出:!DisableProgress
|
||
)
|
||
|
||
// =============================================================================
|
||
// 端口映射 - 直接使用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
|
||
} |