You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
919 B

package ip2region
import (
"IPRegion/util"
"fmt"
//"github.com/lionsoul2014/ip2region/binding/golang/ip2region"
)
func GetIPInfo(address, searchType string) (ipInfo IpInfo, err error) {
//https://gitee.com/lionsoul/ip2region/raw/master/data/ip2region.db
region, err := New("ip2region.db")
defer region.Close()
if err != nil {
fmt.Println(err)
return
}
var ipAddress string
if util.MatchIP(address) {
ipAddress = address
} else {
ipAddress, err = util.GetIPByDomain(address)
if err != nil {
//提供非法ip 返回空结构体
ipAddress = "266.266.266.266"
}
}
switch searchType {
case "Memory":
ip, err := region.MemorySearch(ipAddress)
return ip, err
case "Binary":
ip, err := region.BinarySearch(ipAddress)
return ip, err
case "Btree":
ip, err := region.BtreeSearch(ipAddress)
return ip, err
default:
ip, err := region.MemorySearch(ipAddress)
return ip, err
}
}