diff --git a/ipgeo/ipapicom.go b/ipgeo/ipapicom.go index 270ca55..2bad668 100644 --- a/ipgeo/ipapicom.go +++ b/ipgeo/ipapicom.go @@ -14,7 +14,7 @@ import ( ) func IPApiCom(ip string, timeout time.Duration, _ string, _ bool) (*IPGeoData, error) { - url := "http://ip-api.com/json/" + ip + "?fields=status,message,country,regionName,city,isp,district,as,lat,lon" + url := token.BaseOrDefault("http://ip-api.com/json/") + ip + "?fields=status,message,country,regionName,city,isp,district,as,lat,lon" client := &http.Client{ // 2 秒超时 Timeout: timeout, diff --git a/ipgeo/ipinfo.go b/ipgeo/ipinfo.go index 30749c7..7d0e3e2 100644 --- a/ipgeo/ipinfo.go +++ b/ipgeo/ipinfo.go @@ -12,7 +12,7 @@ import ( ) func IPInfo(ip string, timeout time.Duration, _ string, _ bool) (*IPGeoData, error) { - url := "http://ipinfo.io/" + ip + "?token=" + token.ipinfo + url := token.BaseOrDefault("http://ipinfo.io/") + ip + "?token=" + token.ipinfo client := &http.Client{ // 2 秒超时 Timeout: timeout, diff --git a/ipgeo/ipinsight.go b/ipgeo/ipinsight.go index 0e7cfda..4b45c9c 100644 --- a/ipgeo/ipinsight.go +++ b/ipgeo/ipinsight.go @@ -13,7 +13,7 @@ func IPInSight(ip string, timeout time.Duration, _ string, _ bool) (*IPGeoData, // 2 秒超时 Timeout: timeout, } - resp, err := client.Get("https://api.ipinsight.io/ip/" + ip + "?token=" + token.ipinsight) + resp, err := client.Get(token.BaseOrDefault("https://api.ipinsight.io/ip/") + ip + "?token=" + token.ipinsight) if err != nil { return nil, err } diff --git a/ipgeo/ipsb.go b/ipgeo/ipsb.go index 1d9fbad..18fb9e4 100644 --- a/ipgeo/ipsb.go +++ b/ipgeo/ipsb.go @@ -11,7 +11,7 @@ import ( ) func IPSB(ip string, timeout time.Duration, _ string, _ bool) (*IPGeoData, error) { - url := "https://api.ip.sb/geoip/" + ip + url := token.BaseOrDefault("https://api.ip.sb/geoip/") + ip client := &http.Client{ // 2 秒超时 Timeout: timeout, diff --git a/ipgeo/tokens.go b/ipgeo/tokens.go index 84d6a02..f10771f 100644 --- a/ipgeo/tokens.go +++ b/ipgeo/tokens.go @@ -6,10 +6,19 @@ type tokenData struct { ipinsight string ipinfo string ipleo string + baseUrl string +} + +func (t *tokenData) BaseOrDefault(def string) string { + if t.baseUrl == "" { + return def + } + return t.baseUrl } var token = tokenData{ ipinsight: util.GetenvDefault("NEXTTRACE_IPINSIGHT_TOKEN", ""), ipinfo: util.GetenvDefault("NEXTTRACE_IPINFO_TOKEN", ""), + baseUrl: util.GetenvDefault("NEXTTRACE_IPAPI_BASE", ""), ipleo: "NextTraceDemo", }