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
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
|
|
}
|
|
|
|
}
|