mirror of
https://github.com/SajadMRjl/find-me-internet.git
synced 2026-07-02 15:09:00 +00:00
40 lines
630 B
Go
40 lines
630 B
Go
package geoip
|
|
|
|
import (
|
|
"net"
|
|
"github.com/oschwald/geoip2-golang"
|
|
)
|
|
|
|
type Database struct {
|
|
reader *geoip2.Reader
|
|
}
|
|
|
|
func Open(path string) (*Database, error) {
|
|
r, err := geoip2.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Database{reader: r}, nil
|
|
}
|
|
|
|
func (d *Database) Lookup(ipStr string) string {
|
|
if d == nil || d.reader == nil {
|
|
return "N/A"
|
|
}
|
|
|
|
ip := net.ParseIP(ipStr)
|
|
if ip == nil {
|
|
return "INVALID_IP"
|
|
}
|
|
|
|
record, err := d.reader.Country(ip)
|
|
if err != nil || record.Country.IsoCode == "" {
|
|
return "UNKNOWN"
|
|
}
|
|
|
|
return record.Country.IsoCode
|
|
}
|
|
|
|
func (d *Database) Close() {
|
|
d.reader.Close()
|
|
} |