import logging logger = logging.getLogger(__name__) class LogIPMiddleware: """Middleware para logar o IP de cada requisição""" def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # Obtém o IP do cliente ip = self.get_client_ip(request) # Loga o IP da requisição logger.info(f"Request from IP: {ip} - Method: {request.method} - Path: {request.path}") response = self.get_response(request) return response def get_client_ip(self, request): """ Obtém o IP real do cliente, considerando proxies """ # Verifica se há X-Forwarded-For (quando atrás de proxy/load balancer) x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0].strip() else: # Caso contrário, usa REMOTE_ADDR ip = request.META.get('REMOTE_ADDR') return ip