fscan/Common/globals.go
ZacharyZcR eeaa4c3b3a feat: 实现本地插件架构迁移与统一管理
- 新建本地插件统一架构,包含接口定义和基础类
- 实现三个本地插件:fileinfo(文件信息收集)、dcinfo(域控信息收集)、minidump(内存转储)
- 添加-localplugin参数,支持指定单个本地插件执行
- 完善参数验证机制,本地模式必须指定插件
- 集成新插件系统到核心扫描策略
- 修复Go方法调用机制导致的插件执行问题
- 支持跨平台和权限检查功能

支持的本地插件:
- fileinfo: 敏感文件扫描
- dcinfo: Windows域控信息收集
- minidump: lsass进程内存转储

使用方式: fscan -local -localplugin <plugin_name>
2025-08-09 22:43:28 +08:00

196 lines
6.3 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/base"
"github.com/shadow1ng/fscan/common/logging"
)
/*
globals.go - 全局变量定义
使用线程安全的配置管理消除双向同步机制直接使用core包作为唯一数据源。
保持向后兼容的同时提供并发安全的访问。
*/
// =============================================================================
// 版本信息
// =============================================================================
var version = "2.1.0"
// =============================================================================
// 简化的全局状态管理(仅保留必要的同步机制)
// =============================================================================
// 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
LocalPlugin string // 本地插件选择
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
LocalPlugin = base.LocalPlugin
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.LocalPlugin = LocalPlugin
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
}