mirror of
https://github.com/nezhahq/nezha.git
synced 2025-02-02 09:38:13 -05:00
revert: 随机API获取IP(双栈支持问题)
This commit is contained in:
parent
80320488d1
commit
cf7a7ae77c
@ -3,7 +3,6 @@ package monitor
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"math/rand"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -71,30 +70,33 @@ func fetchGeoIP(servers []string, isV6 bool) geoIP {
|
|||||||
var ip geoIP
|
var ip geoIP
|
||||||
var resp *http.Response
|
var resp *http.Response
|
||||||
var err error
|
var err error
|
||||||
|
// 双栈支持参差不齐,不能随机请求,有些 IPv6 取不到 IP
|
||||||
|
for i := 0; i < len(servers); i++ {
|
||||||
if isV6 {
|
if isV6 {
|
||||||
resp, err = httpGetWithUA(httpClientV6, servers[rand.Intn(len(servers))])
|
resp, err = httpClientV6.Get(servers[i])
|
||||||
} else {
|
} else {
|
||||||
resp, err = httpGetWithUA(httpClientV4, servers[rand.Intn(len(servers))])
|
resp, err = httpClientV4.Get(servers[i])
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return ip
|
|
||||||
}
|
}
|
||||||
|
if err == nil {
|
||||||
body, err := ioutil.ReadAll(resp.Body)
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ip
|
continue
|
||||||
}
|
}
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
if err := ip.Unmarshal(body); err != nil {
|
if err := ip.Unmarshal(body); err != nil {
|
||||||
return ip
|
continue
|
||||||
}
|
}
|
||||||
// 没取到 v6 IP
|
// 没取到 v6 IP
|
||||||
if isV6 && !strings.Contains(ip.IP, ":") {
|
if isV6 && !strings.Contains(ip.IP, ":") {
|
||||||
return ip
|
continue
|
||||||
}
|
}
|
||||||
// 没取到 v4 IP
|
// 没取到 v4 IP
|
||||||
if !isV6 && !strings.Contains(ip.IP, ".") {
|
if !isV6 && !strings.Contains(ip.IP, ".") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
return ip
|
return ip
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return ip
|
return ip
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user