fix: getting client real ip

This commit is contained in:
2024-12-09 23:28:23 +01:00
parent 68516a2f84
commit b46049860f
2 changed files with 7 additions and 5 deletions

View File

@@ -34,11 +34,8 @@ func (access AccessPolicy) AccessPolicyMiddleware(next http.Handler) http.Handle
// Get the client's IP address
clientIP, _, err := net.SplitHostPort(getRealIP(r))
if err != nil {
logger.Error("Unable to parse IP address")
RespondWithError(w, http.StatusUnauthorized, "Unable to parse IP address")
return
clientIP = getRealIP(r)
}
// Check IP against source ranges
isAllowed := access.Action != "DENY"
for _, entry := range access.SourceRanges {

View File

@@ -19,6 +19,7 @@ import (
"fmt"
"github.com/gorilla/mux"
"github.com/jkaninda/goma-gateway/pkg/logger"
"net"
"net/http"
"time"
)
@@ -51,7 +52,11 @@ func (rl *RateLimiter) RateLimitMiddleware() mux.MiddlewareFunc {
}
return func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
clientIP := getRealIP(r)
// Get the client's IP address
clientIP, _, err := net.SplitHostPort(getRealIP(r))
if err != nil {
clientIP = getRealIP(r)
}
clientID := fmt.Sprintf("%s-%s", rl.id, clientIP) // Generate client Id, ID+ route ID
if rl.redisBased {
err := redisRateLimiter(clientID, rl.unit, rl.requests)