mirror of
https://github.com/zulip/zulip.git
synced 2025-10-29 11:03:54 +00:00
rate_limit: Move rate_limit_remote_server to zilencer.auth.
This allows us to avoid importing from zilencer conditionally in zerver.lib.rate_limiter, as we make rate limiting self-contained now. Signed-off-by: Zixuan James Li <p359101898@gmail.com>
This commit is contained in:
committed by
Tim Abbott
parent
f158c86ae1
commit
2aac1dc40a
@@ -2,7 +2,7 @@ import logging
|
||||
import os
|
||||
import time
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import TYPE_CHECKING, Dict, List, Optional, Set, Tuple, Type, cast
|
||||
from typing import Dict, List, Optional, Set, Tuple, Type, cast
|
||||
|
||||
import orjson
|
||||
import redis
|
||||
@@ -16,9 +16,6 @@ from zerver.lib.redis_utils import get_redis_client
|
||||
from zerver.lib.utils import statsd
|
||||
from zerver.models import UserProfile
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from zilencer.models import RemoteZulipServer
|
||||
|
||||
# Implement a rate-limiting scheme inspired by the one described here, but heavily modified
|
||||
# https://www.domaintools.com/resources/blog/rate-limiting-with-redis
|
||||
|
||||
@@ -620,18 +617,6 @@ def rate_limit_request_by_ip(request: HttpRequest, domain: str) -> None:
|
||||
rate_limit_ip(request, ip_addr, domain=domain)
|
||||
|
||||
|
||||
def rate_limit_remote_server(
|
||||
request: HttpRequest, remote_server: "RemoteZulipServer", domain: str
|
||||
) -> None:
|
||||
if settings.ZILENCER_ENABLED:
|
||||
from zilencer.models import RateLimitedRemoteZulipServer
|
||||
try:
|
||||
RateLimitedRemoteZulipServer(remote_server, domain=domain).rate_limit_request(request)
|
||||
except RateLimited as e:
|
||||
logger.warning("Remote server %s exceeded rate limits on domain %s", remote_server, domain)
|
||||
raise e
|
||||
|
||||
|
||||
def should_rate_limit(request: HttpRequest) -> bool:
|
||||
if not settings.RATE_LIMITING:
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user