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

- 重命名 Common -> common,WebScan -> webscan,遵循 Go 包命名约定 - 修复模块路径大小写不匹配导致的编译错误 - 清理依赖项,优化 go.mod 文件 - 添加 Docker 测试环境配置文件 - 新增镜像拉取脚本以处理网络超时问题 - 成功编译生成 fscan v2.2.1 可执行文件 该修复解决了 Linux 系统下包名大小写敏感导致的模块解析失败问题。
62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package common
|
||
|
||
import (
|
||
"context"
|
||
)
|
||
|
||
// TargetInfo 包装HostInfo,提供更丰富的功能
|
||
type TargetInfo struct {
|
||
*HostInfo // 嵌入HostInfo,保持向后兼容
|
||
context context.Context
|
||
metadata map[string]interface{}
|
||
}
|
||
|
||
// NewTargetInfo 创建新的目标信息
|
||
func NewTargetInfo(hostInfo HostInfo) *TargetInfo {
|
||
return &TargetInfo{
|
||
HostInfo: &hostInfo,
|
||
context: context.Background(),
|
||
metadata: make(map[string]interface{}),
|
||
}
|
||
}
|
||
|
||
|
||
// WithContext 设置上下文
|
||
func (t *TargetInfo) WithContext(ctx context.Context) *TargetInfo {
|
||
t.context = ctx
|
||
return t
|
||
}
|
||
|
||
|
||
// SetMetadata 设置元数据
|
||
func (t *TargetInfo) SetMetadata(key string, value interface{}) *TargetInfo {
|
||
if t.metadata == nil {
|
||
t.metadata = make(map[string]interface{})
|
||
}
|
||
t.metadata[key] = value
|
||
return t
|
||
}
|
||
|
||
// GetMetadata 获取元数据
|
||
func (t *TargetInfo) GetMetadata(key string) (interface{}, bool) {
|
||
if t.metadata == nil {
|
||
return nil, false
|
||
}
|
||
value, exists := t.metadata[key]
|
||
return value, exists
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
// String 返回字符串表示
|
||
func (t *TargetInfo) String() string {
|
||
return HostInfoString(t.HostInfo)
|
||
}
|
||
|
||
// HasMetadata 检查是否有指定的元数据
|
||
func (t *TargetInfo) HasMetadata(key string) bool {
|
||
_, exists := t.GetMetadata(key)
|
||
return exists
|
||
} |