Release v0.1.0: now with starlark script support.
You may send SIGHUP signal to the process to make it reread the script. It will use older loaded version if parsing of new file failed.
This commit is contained in:
@ -2,8 +2,12 @@ package ipgeo
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"github.com/ipipdotnet/ipdb-go"
|
||||
"log"
|
||||
|
||||
"git.eve.moe/jackyyf/navigator/mapping/elf"
|
||||
"github.com/ipipdotnet/ipdb-go"
|
||||
"go.starlark.net/starlark"
|
||||
"go.starlark.net/starlarkstruct"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -19,7 +23,7 @@ var (
|
||||
db *ipdb.City
|
||||
)
|
||||
|
||||
func Init() {
|
||||
func Initialize() {
|
||||
var err error
|
||||
db, err = ipdb.NewCity(*ipipdb)
|
||||
if err != nil {
|
||||
@ -39,7 +43,8 @@ func Init() {
|
||||
}
|
||||
}
|
||||
if !ok {
|
||||
log.Fatalln("This IPIP.net database has no required field", requiredField)
|
||||
log.Fatalln("This IPIP.net database has no required field",
|
||||
requiredField)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -48,3 +53,29 @@ func Init() {
|
||||
func Get() *ipdb.City {
|
||||
return db
|
||||
}
|
||||
|
||||
func init() {
|
||||
elf.RegisterFunc("geoLookup",
|
||||
func(t *starlark.Thread, b *starlark.Builtin, args starlark.Tuple,
|
||||
kwargs []starlark.Tuple) (starlark.Value, error) {
|
||||
var ip string
|
||||
if err := starlark.UnpackArgs(b.Name(), args, kwargs,
|
||||
"ip", &ip); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result, err := db.FindInfo(ip, "EN")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return starlarkstruct.FromStringDict(
|
||||
starlark.String("IPDBCityInfo"),
|
||||
starlark.StringDict{
|
||||
"CountryName": starlark.String(result.CountryName),
|
||||
"RegionName": starlark.String(result.RegionName),
|
||||
"CityName": starlark.String(result.CityName),
|
||||
"IspDomain": starlark.String(result.IspDomain),
|
||||
"CountryCode": starlark.String(result.CountryCode),
|
||||
"ContinentCode": starlark.String(result.ContinentCode),
|
||||
}), nil
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user