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 }