diff --git a/internal/middlewares/access_policy_middleware.go b/internal/middlewares/access_policy_middleware.go index b60d403..a5174e6 100644 --- a/internal/middlewares/access_policy_middleware.go +++ b/internal/middlewares/access_policy_middleware.go @@ -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 { diff --git a/internal/middlewares/rate_limit.go b/internal/middlewares/rate_limit.go index be627a4..133f11d 100644 --- a/internal/middlewares/rate_limit.go +++ b/internal/middlewares/rate_limit.go @@ -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)