navigator/ipgeo/ipdb.go

51 lines
870 B
Go

package ipgeo
import (
"flag"
"github.com/ipipdotnet/ipdb-go"
"log"
)
var (
requiredFields = []string{
"country_name",
"region_name",
"city_name",
"isp_domain",
"country_code",
"continent_code",
}
ipipdb = flag.String("ipdb-database", "ipip.db", "path to ipip database")
db *ipdb.City
)
func Init() {
var err error
db, err = ipdb.NewCity(*ipipdb)
if err != nil {
log.Fatalln("Unable to open ipdb:", err.Error())
}
if !db.IsIPv4() {
log.Fatalln("This IPIP.net database has no IPv4 information!")
}
{
fields := db.Fields()
for _, requiredField := range requiredFields {
ok := false
for _, field := range fields {
if field == requiredField {
ok = true
break
}
}
if !ok {
log.Fatalln("This IPIP.net database has no required field", requiredField)
}
}
}
}
func Get() *ipdb.City {
return db
}