mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	decorators: Extract rate_limit_request_by_ip function.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							119f1da04a
						
					
				
				
					commit
					4418aefde4
				
			@@ -862,6 +862,15 @@ def rate_limit_ip(request: HttpRequest, ip_addr: str, domain: str) -> None:
 | 
			
		||||
    RateLimitedIPAddr(ip_addr, domain=domain).rate_limit_request(request)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def rate_limit_request_by_ip(request: HttpRequest, domain: str) -> None:
 | 
			
		||||
    # REMOTE_ADDR is set by SetRemoteAddrFromRealIpHeader in conjunction
 | 
			
		||||
    # with the nginx configuration to guarantee this to be *the* correct
 | 
			
		||||
    # IP address to use - without worrying we'll grab the IP of a proxy.
 | 
			
		||||
    ip_addr = request.META["REMOTE_ADDR"]
 | 
			
		||||
    assert ip_addr
 | 
			
		||||
    rate_limit_ip(request, ip_addr, domain=domain)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def rate_limit_remote_server(
 | 
			
		||||
    request: HttpRequest, remote_server: "RemoteZulipServer", domain: str
 | 
			
		||||
) -> None:
 | 
			
		||||
@@ -893,12 +902,7 @@ def rate_limit() -> Callable[[ViewFuncT], ViewFuncT]:
 | 
			
		||||
            user = request.user
 | 
			
		||||
 | 
			
		||||
            if isinstance(user, AnonymousUser):
 | 
			
		||||
                # REMOTE_ADDR is set by SetRemoteAddrFromRealIpHeader in conjunction
 | 
			
		||||
                # with the nginx configuration to guarantee this to be *the* correct
 | 
			
		||||
                # IP address to use - without worrying we'll grab the IP of a proxy.
 | 
			
		||||
                ip_addr = request.META["REMOTE_ADDR"]
 | 
			
		||||
                assert ip_addr
 | 
			
		||||
                rate_limit_ip(request, ip_addr, domain="api_by_ip")
 | 
			
		||||
                rate_limit_request_by_ip(request, domain="api_by_ip")
 | 
			
		||||
                return func(request, *args, **kwargs)
 | 
			
		||||
            elif settings.ZILENCER_ENABLED and isinstance(user, RemoteZulipServer):
 | 
			
		||||
                rate_limit_remote_server(request, user, domain="api_by_remote_server")
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user