From aaea4183c2044ccf9baca42c3ecc0f4f85dc3528 Mon Sep 17 00:00:00 2001 From: EUForest Date: Fri, 31 Oct 2025 23:23:58 +0800 Subject: [PATCH] fix bug: Get area information --- pkg/ip/ip.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/ip/ip.go b/pkg/ip/ip.go index b39eda4..b4aebbc 100644 --- a/pkg/ip/ip.go +++ b/pkg/ip/ip.go @@ -55,6 +55,15 @@ var ( // GetRegionByIp queries the geolocation of an IP address using supported services. func GetRegionByIp(ip string) (*GeoLocationResponse, error) { + // 如果是域名,先解析成 IP + if net.ParseIP(ip) == nil { + ips, err := GetIP(ip) + if err != nil || len(ips) == 0 { + return nil, errors.Wrap(err, "无法解析域名为IP") + } + ip = ips[0] // 取第一个解析到的IP + } + for service, enabled := range queryUrls { if enabled { response, err := fetchGeolocation(service, ip) @@ -62,6 +71,9 @@ func GetRegionByIp(ip string) (*GeoLocationResponse, error) { zap.S().Errorf("Failed to fetch geolocation from %s: %v", service, err) continue } + if response.Country == "" { + continue + } return response, nil } }