feat: geoip
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/netip"
|
||||
|
||||
"galaxy/geoip"
|
||||
)
|
||||
|
||||
func main() {
|
||||
resolver, err := geoip.Open("/srv/geoip/GeoLite2-Country.mmdb")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
if err := resolver.Close(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}()
|
||||
|
||||
country, err := resolver.Country(netip.MustParseAddr("81.2.69.160"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
fmt.Println(country)
|
||||
|
||||
fromString, err := resolver.CountryString("203.0.113.10")
|
||||
switch {
|
||||
case err == nil:
|
||||
fmt.Println(fromString)
|
||||
case errors.Is(err, geoip.ErrCountryNotFound):
|
||||
// Fail open: keep request processing and treat the country as unknown.
|
||||
default:
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user