refactor: 清除 core/plugins 全局状态依赖,ProgressManager 缓存引用 (Phase 5)
测试构建 / 代码检查 (push) Has been cancelled
测试构建 / 单元测试和构建 (push) Has been cancelled
测试构建 / 构建验证 (push) Has been cancelled

- core/alive_scanner.go: GetFlagVars() → session.Params
- core/service_scanner.go: GetFlagVars() → session.Params 和 config.Target.Ports
- common/progress_manager.go: 缓存 State 和 NoColor 到字段,不再运行时读全局
- common/output_api.go: SaveResult 改用 GetGlobalConfig().Output.DisableSave
- common/network.go: WrapperTcpWithTimeout 标记 Deprecated
- core/ 和 plugins/ 下已无全局状态调用残留
This commit is contained in:
ZacharyZcR
2026-04-27 23:31:56 +08:00
parent c98805e85a
commit 91a9a1a11b
5 changed files with 23 additions and 18 deletions
+16 -7
View File
@@ -48,6 +48,10 @@ type ProgressManager struct {
// 进度条更新控制(减少 Windows 终端的重复输出)
lastRenderedPercent int
// 引用,避免读全局
state *State
noColor bool
}
// =============================================================================
@@ -102,11 +106,13 @@ func GetProgressManager() *ProgressManager {
// InitProgress 初始化进度条
func (pm *ProgressManager) InitProgress(total int64, description string) {
fv := GetFlagVars()
if fv.DisableProgress || fv.Silent {
cfg := GetGlobalConfig()
if cfg.Output.DisableProgress || cfg.Output.Silent {
pm.enabled = false
return
}
pm.state = GetGlobalState()
pm.noColor = cfg.Output.NoColor
pm.mu.Lock()
defer pm.mu.Unlock()
@@ -277,13 +283,16 @@ func (pm *ProgressManager) generateProgressBar() string {
// getPacketInfo 获取发包统计信息(简化版)
func (pm *ProgressManager) getPacketInfo() string {
packetCount := GetGlobalState().GetPacketCount()
if pm.state == nil {
return ""
}
packetCount := pm.state.GetPacketCount()
if packetCount == 0 {
return ""
}
tcpSuccess := GetGlobalState().GetTCPSuccessPacketCount()
tcpFailed := GetGlobalState().GetTCPFailedPacketCount()
tcpSuccess := pm.state.GetTCPSuccessPacketCount()
tcpFailed := pm.state.GetTCPFailedPacketCount()
// 简化格式:TCP:成功/失败
if tcpSuccess > 0 || tcpFailed > 0 {
@@ -301,7 +310,7 @@ func (pm *ProgressManager) showCompletionInfo() {
fmt.Print("\n")
completionMsg := i18n.GetText("progress_scan_completed")
if GetFlagVars().NoColor {
if pm.noColor {
fmt.Printf("[完成] %s %d/%d (耗时: %s)\n",
completionMsg, pm.total, pm.total, formatDuration(elapsed))
} else {
@@ -532,7 +541,7 @@ func (pm *ProgressManager) renderProgressUnsafe() {
fmt.Print(clearStr)
// 输出进度条(带颜色,如果启用)
if GetFlagVars().NoColor {
if pm.noColor {
fmt.Print(progressBar)
} else {
fmt.Printf("%s%s%s", AnsiCyan, progressBar, AnsiReset)