From c1b1583ec4e11ae3855e43b8ae426fd583b42a7c Mon Sep 17 00:00:00 2001 From: Alexandre Fiori Date: Tue, 15 Mar 2016 01:25:21 -0400 Subject: [PATCH] Fix for lat/long --- apiserver/api.go | 18 ++++++++++++++++-- apiserver/main.go | 2 +- cmd/freegeoip/ansible-playbook/freegeoip.yml | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apiserver/api.go b/apiserver/api.go index 78c600d..a9dcc20 100644 --- a/apiserver/api.go +++ b/apiserver/api.go @@ -12,6 +12,7 @@ import ( "fmt" "io" "log" + "math" "math/rand" "net" "net/http" @@ -192,8 +193,8 @@ func (q *geoipQuery) Record(ip net.IP, lang string) *responseRecord { City: q.City.Names[lang], ZipCode: q.Postal.Code, TimeZone: q.Location.TimeZone, - Latitude: q.Location.Latitude, - Longitude: q.Location.Longitude, + Latitude: roundFloat(q.Location.Latitude, .5, 4), + Longitude: roundFloat(q.Location.Longitude, .5, 4), MetroCode: q.Location.MetroCode, } if len(q.Region) > 0 { @@ -203,6 +204,19 @@ func (q *geoipQuery) Record(ip net.IP, lang string) *responseRecord { return r } +func roundFloat(val float64, roundOn float64, places int) (newVal float64) { + var round float64 + pow := math.Pow(10, float64(places)) + digit := pow * val + _, div := math.Modf(digit) + if div >= roundOn { + round = math.Ceil(digit) + } else { + round = math.Floor(digit) + } + return round / pow +} + type responseRecord struct { XMLName xml.Name `xml:"Response" json:"-"` IP string `json:"ip"` diff --git a/apiserver/main.go b/apiserver/main.go index 07b6c1d..179bc5c 100644 --- a/apiserver/main.go +++ b/apiserver/main.go @@ -19,7 +19,7 @@ import ( ) // Version tag. -var Version = "3.1.1" +var Version = "3.1.2" // Run is the entrypoint for the freegeoip server. func Run() { diff --git a/cmd/freegeoip/ansible-playbook/freegeoip.yml b/cmd/freegeoip/ansible-playbook/freegeoip.yml index 09cd482..3b71cb4 100644 --- a/cmd/freegeoip/ansible-playbook/freegeoip.yml +++ b/cmd/freegeoip/ansible-playbook/freegeoip.yml @@ -10,7 +10,7 @@ - redis vars: nodeexporter_url: http://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz - freegeoip_url: https://github.com/fiorix/freegeoip/releases/download/v3.1.1/freegeoip-3.1.1-linux-amd64.tar.gz + freegeoip_url: https://github.com/fiorix/freegeoip/releases/download/v3.1.2/freegeoip-3.1.2-linux-amd64.tar.gz freegeoip_params: - -http=:80 - -https=:443