Bugfix on geogate
This commit is contained in:
parent
c172565a56
commit
3d30102ade
|
@ -16,5 +16,5 @@ var BlockUSStates = map[string]interface{}{
|
||||||
|
|
||||||
// Countries to block.
|
// Countries to block.
|
||||||
var BlockCountries = map[string]interface{}{
|
var BlockCountries = map[string]interface{}{
|
||||||
// "DE": nil,
|
// "US": nil, // TEST
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"code.nonshy.com/nonshy/website/pkg/config"
|
"code.nonshy.com/nonshy/website/pkg/config"
|
||||||
"code.nonshy.com/nonshy/website/pkg/controller/index"
|
"code.nonshy.com/nonshy/website/pkg/controller/index"
|
||||||
"code.nonshy.com/nonshy/website/pkg/log"
|
|
||||||
"code.nonshy.com/nonshy/website/pkg/session"
|
"code.nonshy.com/nonshy/website/pkg/session"
|
||||||
"code.nonshy.com/nonshy/website/pkg/utility"
|
"code.nonshy.com/nonshy/website/pkg/utility"
|
||||||
"github.com/oschwald/geoip2-golang"
|
"github.com/oschwald/geoip2-golang"
|
||||||
|
@ -33,9 +30,8 @@ func GeoGate(handler http.Handler) http.Handler {
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
// If you are using strings that may be invalid, check that ip is not nil
|
// If you are using strings that may be invalid, check that ip is not nil
|
||||||
addr := strings.SplitN(utility.IPAddress(r), ":", 2)[0]
|
addr := utility.IPAddress(r)
|
||||||
ip := net.ParseIP(utility.IPAddress(r))
|
ip := net.ParseIP(addr)
|
||||||
log.Info("IP addr: %s (raw: %s)", ip, addr)
|
|
||||||
if ip != nil {
|
if ip != nil {
|
||||||
record, err := db.City(ip)
|
record, err := db.City(ip)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -43,8 +39,6 @@ func GeoGate(handler http.Handler) http.Handler {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("Raw: %+v", record)
|
|
||||||
|
|
||||||
// Blocked by US states
|
// Blocked by US states
|
||||||
if record.Country.IsoCode == "US" {
|
if record.Country.IsoCode == "US" {
|
||||||
for _, sub := range record.Subdivisions {
|
for _, sub := range record.Subdivisions {
|
||||||
|
@ -66,21 +60,23 @@ func GeoGate(handler http.Handler) http.Handler {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debug info
|
// Debug info
|
||||||
fmt.Printf("Portuguese (BR) city name: %v\n", record.City.Names["pt-BR"])
|
/*
|
||||||
if len(record.Subdivisions) > 0 {
|
fmt.Printf("Portuguese (BR) city name: %v\n", record.City.Names["pt-BR"])
|
||||||
fmt.Printf("English subdivision name: %v\n", record.Subdivisions[0].Names["en"])
|
if len(record.Subdivisions) > 0 {
|
||||||
}
|
fmt.Printf("English subdivision name: %v\n", record.Subdivisions[0].Names["en"])
|
||||||
fmt.Printf("Russian country name: %v\n", record.Country.Names["ru"])
|
}
|
||||||
fmt.Printf("ISO country code: %v\n", record.Country.IsoCode)
|
fmt.Printf("Russian country name: %v\n", record.Country.Names["ru"])
|
||||||
fmt.Printf("Time zone: %v\n", record.Location.TimeZone)
|
fmt.Printf("ISO country code: %v\n", record.Country.IsoCode)
|
||||||
fmt.Printf("Coordinates: %v, %v\n", record.Location.Latitude, record.Location.Longitude)
|
fmt.Printf("Time zone: %v\n", record.Location.TimeZone)
|
||||||
// Output:
|
fmt.Printf("Coordinates: %v, %v\n", record.Location.Latitude, record.Location.Longitude)
|
||||||
// Portuguese (BR) city name: Londres
|
// Output:
|
||||||
// English subdivision name: England
|
// Portuguese (BR) city name: Londres
|
||||||
// Russian country name: Великобритания
|
// English subdivision name: England
|
||||||
// ISO country code: GB
|
// Russian country name: Великобритания
|
||||||
// Time zone: Europe/London
|
// ISO country code: GB
|
||||||
// Coordinates: 51.5142, -0.0931
|
// Time zone: Europe/London
|
||||||
|
// Coordinates: 51.5142, -0.0931
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package utility
|
package utility
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -19,5 +20,10 @@ func IPAddress(r *http.Request) string {
|
||||||
return strings.SplitN(xff, " ", 1)[0]
|
return strings.SplitN(xff, " ", 1)[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r.RemoteAddr
|
|
||||||
|
ip, _, err := net.SplitHostPort(r.RemoteAddr)
|
||||||
|
if err != nil {
|
||||||
|
return r.RemoteAddr
|
||||||
|
}
|
||||||
|
return ip
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user