mirror of
https://github.com/shadow1ng/fscan.git
synced 2026-09-22 03:10:42 +08:00
refactor: 4项架构优化 — CEL缓存/POC隔离/服务缓存/结果统一
1. CEL 表达式编译缓存 - 新增 CelProgCache,同一 POC 的所有规则/参数组合共享编译后的 Program - clusterpoc 热路径上消除重复的 Compile+Program 调用 2. POC 全局状态消除 - allPocs/pocLoaded 全局变量改为 pocStore 按 PocPath 缓存 - 不同 PocPath 的扫描独立加载,Web API 并发场景不再互相覆盖 3. serviceCache 下沉到 per-session State - 服务识别缓存从包级全局 map 迁移到 State.serviceCache (sync.Map) - BaseScanStrategy 通过 SetState 注入 session state - 消除多个并发扫描之间的服务识别缓存串台 4. POC 结果输出路径统一 - 提取 buildVulnDetails/buildVulnLogMsg/saveVulnResult 三个公共函数 - CheckMultiPoc 和 recordVulnerabilityResult 共用统一的结果构造逻辑 - 消除 details 字段名不一致和日志格式差异
This commit is contained in:
@@ -56,6 +56,10 @@ type State struct {
|
||||
forwardShellActive int32 // 使用int32以便原子操作
|
||||
reverseShellActive int32
|
||||
socks5ProxyActive int32
|
||||
|
||||
// 服务识别缓存(per-session,避免跨扫描污染)
|
||||
// key: "host:port", value: interface{}(core.ServiceInfo 指针)
|
||||
serviceCache sync.Map
|
||||
}
|
||||
|
||||
// NewState 创建新的状态对象
|
||||
@@ -455,3 +459,17 @@ func (s *State) CheckAndIncrementPacketRate(rateLimit int64) (bool, error) {
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// 服务识别缓存 - per-session,消除跨扫描污染
|
||||
// =============================================================================
|
||||
|
||||
// CacheService 缓存服务信息
|
||||
func (s *State) CacheService(key string, info interface{}) {
|
||||
s.serviceCache.Store(key, info)
|
||||
}
|
||||
|
||||
// GetCachedService 获取缓存的服务信息
|
||||
func (s *State) GetCachedService(key string) (interface{}, bool) {
|
||||
return s.serviceCache.Load(key)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user