Skip to content

Commit

Permalink
refactor(httpfx): optimize IP header parsing in GetClientAddrs func
Browse files Browse the repository at this point in the history
- Added handling for splitting and trimming comma-separated IP addresses
- Marked headers with nolint:staticcheck for True-Client-IP and X-Real-IP
  • Loading branch information
eser committed Aug 18, 2024
1 parent 514f91b commit fb58de2
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions pkg/bliss/httpfx/middlewares/resolve-address-middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ func DetectLocalNetwork(requestAddr string) (bool, error) {
}

func GetClientAddrs(req *http.Request) string {
requester, hasHeader := req.Header["True-Client-IP"]
requester, hasHeader := req.Header["True-Client-IP"] //nolint:staticcheck

if !hasHeader {
requester, hasHeader = req.Header["X-Forwarded-For"]
}

if !hasHeader {
requester, hasHeader = req.Header["X-Real-IP"]
requester, hasHeader = req.Header["X-Real-IP"] //nolint:staticcheck
}

// if the requester is still empty, use the hard-coded address from the socket
Expand All @@ -122,5 +122,13 @@ func GetClientAddrs(req *http.Request) string {

// split comma delimited list into a slice
// (this happens when proxied via elastic load balancer then again through nginx)
return strings.Join(requester, ",")
var addrs []string

for _, addr := range requester {
for _, entry := range strings.Split(addr, ",") {
addrs = append(addrs, strings.Trim(entry, " "))
}
}

return strings.Join(addrs, ", ")
}

0 comments on commit fb58de2

Please sign in to comment.