fix: parse as ipv4 if needed. Closes #3419

This commit is contained in:
Gabe Kangas 2023-11-08 19:07:00 -08:00
parent 86472d711c
commit 6074ea8f29
No known key found for this signature in database
GPG Key ID: 4345B2060657F330

View File

@ -26,6 +26,11 @@ func GetIPAddressFromRequest(req *http.Request) string {
xForwardedFor := req.Header.Get("X-FORWARDED-FOR") xForwardedFor := req.Header.Get("X-FORWARDED-FOR")
if xForwardedFor != "" { if xForwardedFor != "" {
clientIpString := strings.Split(xForwardedFor, ", ")[0] clientIpString := strings.Split(xForwardedFor, ", ")[0]
// If the IP has a prefix of ::ffff: then it's an IPv4 address.
// Strip the prefix so we can parse it as an IPv4 address.
clientIpString = strings.TrimPrefix(clientIpString, "::ffff:")
if strings.Contains(clientIpString, ":") { if strings.Contains(clientIpString, ":") {
ip, _, err := net.SplitHostPort(clientIpString) ip, _, err := net.SplitHostPort(clientIpString)
if err != nil { if err != nil {