mirror of
https://github.com/shadow1ng/fscan.git
synced 2025-09-14 14:06:44 +08:00

- 删除Manager.go: 完全未使用的配置管理器模式(239行) - 删除ScanOptions.go: 完全未使用的扫描选项管理器(408行) - 简化PortMapping.go: 保留核心功能,删除未使用方法(减少151行) - 简化ServiceDict.go: 保留核心功能,删除未使用方法(减少152行) - 清理Types.go: 删除未使用的NewConfig函数(24行) - 清理constants.go: 删除未使用的版本和验证常量(54行) 总计减少1032行死代码,包大小减少85%,保持功能完整性
81 lines
1.8 KiB
Go
81 lines
1.8 KiB
Go
package config
|
|
|
|
import (
|
|
"sync"
|
|
)
|
|
|
|
// ProbeMapping 探测器映射管理器
|
|
type ProbeMapping struct {
|
|
mu sync.RWMutex
|
|
defaultMap []string
|
|
portMap map[int][]string
|
|
initialized bool
|
|
}
|
|
|
|
// NewProbeMapping 创建探测器映射管理器
|
|
func NewProbeMapping() *ProbeMapping {
|
|
return &ProbeMapping{
|
|
defaultMap: getDefaultProbeMap(),
|
|
portMap: getDefaultPortMap(),
|
|
initialized: true,
|
|
}
|
|
}
|
|
|
|
// getDefaultProbeMap 获取默认的探测器顺序
|
|
func getDefaultProbeMap() []string {
|
|
// 返回常量的副本
|
|
result := make([]string, len(DefaultProbeMap))
|
|
copy(result, DefaultProbeMap)
|
|
return result
|
|
}
|
|
|
|
// getDefaultPortMap 获取默认的端口映射
|
|
func getDefaultPortMap() map[int][]string {
|
|
// 返回常量的深拷贝
|
|
result := make(map[int][]string)
|
|
for port, probes := range DefaultPortMap {
|
|
probesCopy := make([]string, len(probes))
|
|
copy(probesCopy, probes)
|
|
result[port] = probesCopy
|
|
}
|
|
return result
|
|
}
|
|
|
|
// GetDefaultProbes 获取默认探测器列表
|
|
func (pm *ProbeMapping) GetDefaultProbes() []string {
|
|
pm.mu.RLock()
|
|
defer pm.mu.RUnlock()
|
|
|
|
result := make([]string, len(pm.defaultMap))
|
|
copy(result, pm.defaultMap)
|
|
return result
|
|
}
|
|
|
|
// GetAllPortMappings 获取所有端口映射
|
|
func (pm *ProbeMapping) GetAllPortMappings() map[int][]string {
|
|
pm.mu.RLock()
|
|
defer pm.mu.RUnlock()
|
|
|
|
result := make(map[int][]string)
|
|
for port, probes := range pm.portMap {
|
|
probesCopy := make([]string, len(probes))
|
|
copy(probesCopy, probes)
|
|
result[port] = probesCopy
|
|
}
|
|
return result
|
|
}
|
|
|
|
|
|
// 全局探测器映射实例
|
|
var (
|
|
globalProbeMapping *ProbeMapping
|
|
probeMappingOnce sync.Once
|
|
)
|
|
|
|
// GetGlobalProbeMapping 获取全局探测器映射实例
|
|
func GetGlobalProbeMapping() *ProbeMapping {
|
|
probeMappingOnce.Do(func() {
|
|
globalProbeMapping = NewProbeMapping()
|
|
})
|
|
return globalProbeMapping
|
|
} |