mirror of
https://github.com/zu1k/nali.git
synced 2025-02-02 10:22:41 +08:00
b21c9b6728
Signed-off-by: zu1k <i@lgf.im>
51 lines
861 B
Go
51 lines
861 B
Go
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
|
|
}
|