1
0
mirror of https://github.com/zu1k/nali.git synced 2025-01-22 21:29:02 +08:00
nali/pkg/geoip/geoip.go
2020-07-17 09:50:06 +08:00

40 lines
625 B
Go

package geoip
import (
"fmt"
"log"
"net"
"github.com/oschwald/geoip2-golang"
)
// GeoIP2
type GeoIP struct {
db *geoip2.Reader
}
// new geoip from db file
func NewGeoIP(filePath string) GeoIP {
db, err := geoip2.Open(filePath)
if err != nil {
log.Fatal(err)
}
return GeoIP{db: db}
}
// find ip info
func (g GeoIP) Find(ip string) string {
ipData := net.ParseIP(ip)
record, err := g.db.City(ipData)
if err != nil {
log.Fatal(err)
}
country := record.Country.Names["zh-CN"]
city := record.City.Names["zh-CN"]
if city == "" {
return country
} else {
return fmt.Sprintf("%s %s", country, city)
}
}