Initial "hardcoded" version of mapping.
This commit is contained in:
50
ipgeo/ipdb.go
Normal file
50
ipgeo/ipdb.go
Normal file
@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
Reference in New Issue
Block a user