mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 04:30:05 +00:00
report geoip separately, fix server creation & deletion bugs (#14)
* new geoip method * report geoip separately, fix server creation & deletion bugs * fix struct tag * fix write name * remove deleteion list * remove rpc realip header * Revert "remove rpc realip header" This reverts commit 8a5f86cf2d7df87f28cfa2a3b3430f449dd6ed73.
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
maxminddb "github.com/oschwald/maxminddb-golang"
|
||||
)
|
||||
@@ -12,6 +13,16 @@ import (
|
||||
//go:embed geoip.db
|
||||
var db []byte
|
||||
|
||||
var (
|
||||
dbOnce = sync.OnceValues(func() (*maxminddb.Reader, error) {
|
||||
db, err := maxminddb.FromBytes(db)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return db, nil
|
||||
})
|
||||
)
|
||||
|
||||
type IPInfo struct {
|
||||
Country string `maxminddb:"country"`
|
||||
CountryName string `maxminddb:"country_name"`
|
||||
@@ -20,11 +31,10 @@ type IPInfo struct {
|
||||
}
|
||||
|
||||
func Lookup(ip net.IP) (string, error) {
|
||||
db, err := maxminddb.FromBytes(db)
|
||||
db, err := dbOnce()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
var record IPInfo
|
||||
err = db.Lookup(ip, &record)
|
||||
|
||||
Reference in New Issue
Block a user