mirror of
https://github.com/nxtrace/NTrace-core.git
synced 2025-08-12 06:26:39 +00:00
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package ipgeo
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
type IPGeoData struct {
|
|
IP string `json:"ip"`
|
|
Asnumber string `json:"asnumber"`
|
|
Country string `json:"country"`
|
|
CountryEn string `json:"country_en"`
|
|
Prov string `json:"prov"`
|
|
ProvEn string `json:"prov_en"`
|
|
City string `json:"city"`
|
|
CityEn string `json:"city_en"`
|
|
District string `json:"district"`
|
|
Owner string `json:"owner"`
|
|
Isp string `json:"isp"`
|
|
Domain string `json:"domain"`
|
|
Whois string `json:"whois"`
|
|
Lat float64 `json:"lat"`
|
|
Lng float64 `json:"lng"`
|
|
Prefix string `json:"prefix"`
|
|
Router map[string][]string `json:"router"`
|
|
Source string `json:"source"`
|
|
}
|
|
|
|
type Source = func(ip string, timeout time.Duration, lang string, maptrace bool) (*IPGeoData, error)
|
|
|
|
func GetSource(s string) Source {
|
|
switch strings.ToUpper(s) {
|
|
case "DN42":
|
|
return DN42
|
|
case "LEOMOEAPI":
|
|
return LeoIP
|
|
case "IP.SB":
|
|
return IPSB
|
|
case "IPINSIGHT":
|
|
return IPInSight
|
|
case "IPAPI.COM":
|
|
return IPApiCom
|
|
case "IP-API.COM":
|
|
return IPApiCom
|
|
case "IPINFO":
|
|
return IPInfo
|
|
case "IP2REGION":
|
|
return IP2Region
|
|
case "IPINFOLOCAL":
|
|
return IPInfoLocal
|
|
case "CHUNZHEN":
|
|
return Chunzhen
|
|
case "DISABLE-GEOIP":
|
|
return disableGeoIP
|
|
default:
|
|
return LeoIP
|
|
}
|
|
}
|
|
|
|
func disableGeoIP(string, time.Duration, string, bool) (*IPGeoData, error) {
|
|
return &IPGeoData{}, nil
|
|
}
|