1
0
mirror of https://github.com/zu1k/nali.git synced 2025-02-02 10:22:41 +08:00
nali/pkg/ip2region/ip2region.go

51 lines
861 B
Go
Raw Normal View History

package ip2region
import (
"fmt"
"log"
"os"
"github.com/lionsoul2014/ip2region/binding/golang/ip2region"
"github.com/zu1k/nali/pkg/common"
)
type Ip2Region struct {
db *ip2region.Ip2Region
}
func NewIp2Region(filePath string) Ip2Region {
_, err := os.Stat(filePath)
if err != nil && os.IsNotExist(err) {
log.Println("文件不存在,尝试从网络获取最新 ip2region 库")
_, err = Download(filePath)
if err != nil {
os.Exit(1)
}
}
region, err := ip2region.New(filePath)
if err != nil {
panic(err)
}
return Ip2Region{
db: region,
}
}
func (db Ip2Region) Find(query string, params ...string) (result fmt.Stringer, err error) {
ip, err := db.db.MemorySearch(query)
if err != nil {
return nil, err
}
fmt.Println(ip)
result = common.Result{
Country: ip.Country,
Area: ip.Province,
}
return result, nil
}