From c09ead8ae0adb8b874e87dff87dfc7ed8e451bfe Mon Sep 17 00:00:00 2001 From: Paul Lecuq Date: Sun, 23 Oct 2022 18:30:44 +0200 Subject: [PATCH] dip now get to latest version of geoip databases --- src/geoip/main.go | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/geoip/main.go b/src/geoip/main.go index 76096c9..7f40954 100644 --- a/src/geoip/main.go +++ b/src/geoip/main.go @@ -1,8 +1,10 @@ package geoip import ( + "encoding/json" "fmt" "io" + "log" "net/http" "os" "strings" @@ -10,14 +12,36 @@ import ( geoip2 "github.com/oschwald/geoip2-golang" ) -var RootURL = "https://git.paulbsd.com/paulbsd/GeoLite.mmdb/releases/download/%s/%s" -var Version = "2022.06.16" +type ApiRes struct { + Tag string `json:"tag_name"` +} -var dbs map[string]string = map[string]string{ - "city": fmt.Sprintf(RootURL, Version, "GeoLite2-City.mmdb"), - "asn": fmt.Sprintf(RootURL, Version, "GeoLite2-ASN.mmdb")} +var RootURL = "https://git.paulbsd.com/paulbsd/GeoLite.mmdb/releases/download/%s/%s" +var APIUrl = "https://git.paulbsd.com/api/v1/repos/paulbsd/GeoLite.mmdb/releases" + +func GetLastVersion() string { + var apiresults []ApiRes + res, err := http.Get(APIUrl) + if err != nil { + log.Println(err) + } + body, err := io.ReadAll(res.Body) + if err != nil { + log.Println(err) + } + err = json.Unmarshal(body, &apiresults) + if err != nil { + log.Println(err) + } + return apiresults[0].Tag +} func InitGeoIP() (citydb *geoip2.Reader, asndb *geoip2.Reader, err error) { + var version = GetLastVersion() + var dbs map[string]string = map[string]string{ + "city": fmt.Sprintf(RootURL, version, "GeoLite2-City.mmdb"), + "asn": fmt.Sprintf(RootURL, version, "GeoLite2-ASN.mmdb")} + log.Printf("Fetching GeoLite.mmdb version %s\n", version) citydb, err = FetchDB(dbs["city"]) if err != nil { return