package main import ( "fmt" "io" "log" "net" "net/http" "os/exec" "strings" ) // CheckCommandExists 检测系统命令是否存在,不存在则退出程序 func CheckCommandExists(cmd string) { _, err := exec.LookPath(cmd) if err != nil { log.Fatalf("命令未找到: %s (请确保已安装该命令)", cmd) } } // SplitBySpace 按空格分割字符串 func SplitBySpace(s string) []string { return strings.Split(s, " ") } // ContainsPart 判断 target 是否包含 regionParts 中的任意片段(模糊匹配) func ContainsPart(target string, REGION string) bool { regionParts := SplitBySpace(REGION) for _, rp := range regionParts { //fmt.Println("regionParts:", rp) if strings.Contains(target, rp) { return true } } return false } // 获取本机公网 IPv4 地址 func GetLocalIpv4Addr() string { resp, err := http.Get("https://inet-ip.aixiao.me/") if err != nil { fmt.Printf("请求失败: %s\n", err) return "NULL" } defer resp.Body.Close() ip, err := io.ReadAll(resp.Body) if err != nil { fmt.Printf("读取响应失败: %s\n", err) return "NULL" } ipStr := strings.TrimSpace(string(ip)) // ✅ 验证是否是合法 IPv4 if net.ParseIP(ipStr) == nil || strings.Contains(ipStr, "<") { fmt.Printf("无效的IP响应: %q\n", ipStr) return "NULL" } log.Printf(" 公网IP: %s\n", ipStr) return ipStr } /* func main() { REGION := "中国 内网" fmt.Println("结果1:", ContainsPart("美国", REGION)) // true } */