package common import ( "fmt" "strconv" ) // HostInfoHelper 提供HostInfo的辅助方法 // 使用函数而不是方法,保持向后兼容 // GetPort 获取端口号(转换为整数) func GetPort(h *HostInfo) (int, error) { if h.Ports == "" { return 0, fmt.Errorf("端口未设置") } return strconv.Atoi(h.Ports) } // IsWebTarget 判断是否为Web目标 func IsWebTarget(h *HostInfo) bool { return h.Url != "" } // HasPort 检查是否设置了端口 func HasPort(h *HostInfo) bool { return h.Ports != "" } // ValidateHostInfo 验证HostInfo的有效性 func ValidateHostInfo(h *HostInfo) error { if h.Host == "" && h.Url == "" { return fmt.Errorf("主机地址或URL必须至少指定一个") } // 验证端口格式(如果指定了) if h.Ports != "" { if _, err := GetPort(h); err != nil { return fmt.Errorf("端口格式无效: %v", err) } } return nil } // HostInfoString 返回HostInfo的字符串表示 func HostInfoString(h *HostInfo) string { if IsWebTarget(h) { return h.Url } if HasPort(h) { return fmt.Sprintf("%s:%s", h.Host, h.Ports) } return h.Host }