mirror of
				https://git.anonymousland.org/anonymousland/synapse.git
				synced 2025-10-30 21:48:53 -04:00 
			
		
		
		
	Rename RateLimitConfig to RatelimitSettings (#13442)
				
					
				
			This commit is contained in:
		
							parent
							
								
									570bf32bbb
								
							
						
					
					
						commit
						d6e94ad9d9
					
				
					 5 changed files with 30 additions and 29 deletions
				
			
		
							
								
								
									
										1
									
								
								changelog.d/13442.misc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								changelog.d/13442.misc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| Rename class `RateLimitConfig` to `RatelimitSettings` and `FederationRateLimitConfig` to `FederationRatelimitSettings`. | ||||
|  | @ -17,7 +17,7 @@ from collections import OrderedDict | |||
| from typing import Hashable, Optional, Tuple | ||||
| 
 | ||||
| from synapse.api.errors import LimitExceededError | ||||
| from synapse.config.ratelimiting import RateLimitConfig | ||||
| from synapse.config.ratelimiting import RatelimitSettings | ||||
| from synapse.storage.databases.main import DataStore | ||||
| from synapse.types import Requester | ||||
| from synapse.util import Clock | ||||
|  | @ -314,8 +314,8 @@ class RequestRatelimiter: | |||
|         self, | ||||
|         store: DataStore, | ||||
|         clock: Clock, | ||||
|         rc_message: RateLimitConfig, | ||||
|         rc_admin_redaction: Optional[RateLimitConfig], | ||||
|         rc_message: RatelimitSettings, | ||||
|         rc_admin_redaction: Optional[RatelimitSettings], | ||||
|     ): | ||||
|         self.store = store | ||||
|         self.clock = clock | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ from synapse.types import JsonDict | |||
| from ._base import Config | ||||
| 
 | ||||
| 
 | ||||
| class RateLimitConfig: | ||||
| class RatelimitSettings: | ||||
|     def __init__( | ||||
|         self, | ||||
|         config: Dict[str, float], | ||||
|  | @ -34,7 +34,7 @@ class RateLimitConfig: | |||
| 
 | ||||
| 
 | ||||
| @attr.s(auto_attribs=True) | ||||
| class FederationRateLimitConfig: | ||||
| class FederationRatelimitSettings: | ||||
|     window_size: int = 1000 | ||||
|     sleep_limit: int = 10 | ||||
|     sleep_delay: int = 500 | ||||
|  | @ -50,11 +50,11 @@ class RatelimitConfig(Config): | |||
|         # Load the new-style messages config if it exists. Otherwise fall back | ||||
|         # to the old method. | ||||
|         if "rc_message" in config: | ||||
|             self.rc_message = RateLimitConfig( | ||||
|             self.rc_message = RatelimitSettings( | ||||
|                 config["rc_message"], defaults={"per_second": 0.2, "burst_count": 10.0} | ||||
|             ) | ||||
|         else: | ||||
|             self.rc_message = RateLimitConfig( | ||||
|             self.rc_message = RatelimitSettings( | ||||
|                 { | ||||
|                     "per_second": config.get("rc_messages_per_second", 0.2), | ||||
|                     "burst_count": config.get("rc_message_burst_count", 10.0), | ||||
|  | @ -64,9 +64,9 @@ class RatelimitConfig(Config): | |||
|         # Load the new-style federation config, if it exists. Otherwise, fall | ||||
|         # back to the old method. | ||||
|         if "rc_federation" in config: | ||||
|             self.rc_federation = FederationRateLimitConfig(**config["rc_federation"]) | ||||
|             self.rc_federation = FederationRatelimitSettings(**config["rc_federation"]) | ||||
|         else: | ||||
|             self.rc_federation = FederationRateLimitConfig( | ||||
|             self.rc_federation = FederationRatelimitSettings( | ||||
|                 **{ | ||||
|                     k: v | ||||
|                     for k, v in { | ||||
|  | @ -80,17 +80,17 @@ class RatelimitConfig(Config): | |||
|                 } | ||||
|             ) | ||||
| 
 | ||||
|         self.rc_registration = RateLimitConfig(config.get("rc_registration", {})) | ||||
|         self.rc_registration = RatelimitSettings(config.get("rc_registration", {})) | ||||
| 
 | ||||
|         self.rc_registration_token_validity = RateLimitConfig( | ||||
|         self.rc_registration_token_validity = RatelimitSettings( | ||||
|             config.get("rc_registration_token_validity", {}), | ||||
|             defaults={"per_second": 0.1, "burst_count": 5}, | ||||
|         ) | ||||
| 
 | ||||
|         rc_login_config = config.get("rc_login", {}) | ||||
|         self.rc_login_address = RateLimitConfig(rc_login_config.get("address", {})) | ||||
|         self.rc_login_account = RateLimitConfig(rc_login_config.get("account", {})) | ||||
|         self.rc_login_failed_attempts = RateLimitConfig( | ||||
|         self.rc_login_address = RatelimitSettings(rc_login_config.get("address", {})) | ||||
|         self.rc_login_account = RatelimitSettings(rc_login_config.get("account", {})) | ||||
|         self.rc_login_failed_attempts = RatelimitSettings( | ||||
|             rc_login_config.get("failed_attempts", {}) | ||||
|         ) | ||||
| 
 | ||||
|  | @ -101,20 +101,20 @@ class RatelimitConfig(Config): | |||
|         rc_admin_redaction = config.get("rc_admin_redaction") | ||||
|         self.rc_admin_redaction = None | ||||
|         if rc_admin_redaction: | ||||
|             self.rc_admin_redaction = RateLimitConfig(rc_admin_redaction) | ||||
|             self.rc_admin_redaction = RatelimitSettings(rc_admin_redaction) | ||||
| 
 | ||||
|         self.rc_joins_local = RateLimitConfig( | ||||
|         self.rc_joins_local = RatelimitSettings( | ||||
|             config.get("rc_joins", {}).get("local", {}), | ||||
|             defaults={"per_second": 0.1, "burst_count": 10}, | ||||
|         ) | ||||
|         self.rc_joins_remote = RateLimitConfig( | ||||
|         self.rc_joins_remote = RatelimitSettings( | ||||
|             config.get("rc_joins", {}).get("remote", {}), | ||||
|             defaults={"per_second": 0.01, "burst_count": 10}, | ||||
|         ) | ||||
| 
 | ||||
|         # Track the rate of joins to a given room. If there are too many, temporarily | ||||
|         # prevent local joins and remote joins via this server. | ||||
|         self.rc_joins_per_room = RateLimitConfig( | ||||
|         self.rc_joins_per_room = RatelimitSettings( | ||||
|             config.get("rc_joins_per_room", {}), | ||||
|             defaults={"per_second": 1, "burst_count": 10}, | ||||
|         ) | ||||
|  | @ -124,31 +124,31 @@ class RatelimitConfig(Config): | |||
|         # * For requests received over federation this is keyed by the origin. | ||||
|         # | ||||
|         # Note that this isn't exposed in the configuration as it is obscure. | ||||
|         self.rc_key_requests = RateLimitConfig( | ||||
|         self.rc_key_requests = RatelimitSettings( | ||||
|             config.get("rc_key_requests", {}), | ||||
|             defaults={"per_second": 20, "burst_count": 100}, | ||||
|         ) | ||||
| 
 | ||||
|         self.rc_3pid_validation = RateLimitConfig( | ||||
|         self.rc_3pid_validation = RatelimitSettings( | ||||
|             config.get("rc_3pid_validation") or {}, | ||||
|             defaults={"per_second": 0.003, "burst_count": 5}, | ||||
|         ) | ||||
| 
 | ||||
|         self.rc_invites_per_room = RateLimitConfig( | ||||
|         self.rc_invites_per_room = RatelimitSettings( | ||||
|             config.get("rc_invites", {}).get("per_room", {}), | ||||
|             defaults={"per_second": 0.3, "burst_count": 10}, | ||||
|         ) | ||||
|         self.rc_invites_per_user = RateLimitConfig( | ||||
|         self.rc_invites_per_user = RatelimitSettings( | ||||
|             config.get("rc_invites", {}).get("per_user", {}), | ||||
|             defaults={"per_second": 0.003, "burst_count": 5}, | ||||
|         ) | ||||
| 
 | ||||
|         self.rc_invites_per_issuer = RateLimitConfig( | ||||
|         self.rc_invites_per_issuer = RatelimitSettings( | ||||
|             config.get("rc_invites", {}).get("per_issuer", {}), | ||||
|             defaults={"per_second": 0.3, "burst_count": 10}, | ||||
|         ) | ||||
| 
 | ||||
|         self.rc_third_party_invite = RateLimitConfig( | ||||
|         self.rc_third_party_invite = RatelimitSettings( | ||||
|             config.get("rc_third_party_invite", {}), | ||||
|             defaults={ | ||||
|                 "per_second": self.rc_message.per_second, | ||||
|  |  | |||
|  | @ -33,7 +33,7 @@ from synapse.api.ratelimiting import Ratelimiter | |||
| from synapse.config import ConfigError | ||||
| from synapse.config.emailconfig import ThreepidBehaviour | ||||
| from synapse.config.homeserver import HomeServerConfig | ||||
| from synapse.config.ratelimiting import FederationRateLimitConfig | ||||
| from synapse.config.ratelimiting import FederationRatelimitSettings | ||||
| from synapse.config.server import is_threepid_reserved | ||||
| from synapse.handlers.auth import AuthHandler | ||||
| from synapse.handlers.ui_auth import UIAuthSessionDataConstants | ||||
|  | @ -325,7 +325,7 @@ class UsernameAvailabilityRestServlet(RestServlet): | |||
|         self.registration_handler = hs.get_registration_handler() | ||||
|         self.ratelimiter = FederationRateLimiter( | ||||
|             hs.get_clock(), | ||||
|             FederationRateLimitConfig( | ||||
|             FederationRatelimitSettings( | ||||
|                 # Time window of 2s | ||||
|                 window_size=2000, | ||||
|                 # Artificially delay requests if rate > sleep_limit/window_size | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ from typing import Any, DefaultDict, Iterator, List, Set | |||
| from twisted.internet import defer | ||||
| 
 | ||||
| from synapse.api.errors import LimitExceededError | ||||
| from synapse.config.ratelimiting import FederationRateLimitConfig | ||||
| from synapse.config.ratelimiting import FederationRatelimitSettings | ||||
| from synapse.logging.context import ( | ||||
|     PreserveLoggingContext, | ||||
|     make_deferred_yieldable, | ||||
|  | @ -36,7 +36,7 @@ logger = logging.getLogger(__name__) | |||
| 
 | ||||
| 
 | ||||
| class FederationRateLimiter: | ||||
|     def __init__(self, clock: Clock, config: FederationRateLimitConfig): | ||||
|     def __init__(self, clock: Clock, config: FederationRatelimitSettings): | ||||
|         def new_limiter() -> "_PerHostRatelimiter": | ||||
|             return _PerHostRatelimiter(clock=clock, config=config) | ||||
| 
 | ||||
|  | @ -63,7 +63,7 @@ class FederationRateLimiter: | |||
| 
 | ||||
| 
 | ||||
| class _PerHostRatelimiter: | ||||
|     def __init__(self, clock: Clock, config: FederationRateLimitConfig): | ||||
|     def __init__(self, clock: Clock, config: FederationRatelimitSettings): | ||||
|         """ | ||||
|         Args: | ||||
|             clock | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dirk Klimpel
						Dirk Klimpel