From 09707151c557b5119862651a1ded4c59e1d18ecc Mon Sep 17 00:00:00 2001 From: Vlad Stan Date: Thu, 16 Feb 2023 14:37:31 +0200 Subject: [PATCH] feat: change rate limit to per `hour` instead of per `second` --- client_manager.py | 14 +++++++------- models.py | 2 +- static/components/relay-details/relay-details.html | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/client_manager.py b/client_manager.py index dcc2c3e..77ef64e 100644 --- a/client_manager.py +++ b/client_manager.py @@ -98,7 +98,7 @@ class NostrClientConnection: self._auth_challenge: Optional[str] = None self._auth_challenge_created_at = 0 - self._last_event_timestamp = 0 # in seconds + self._last_event_timestamp = 0 # in hours self._event_count_per_timestamp = 0 self.broadcast_event: Optional[ @@ -296,8 +296,8 @@ class NostrClientConnection: return True, "" def _validate_event(self, e: NostrEvent) -> Tuple[bool, str]: - if self._exceeded_max_events_per_second(): - return False, f"Exceeded max events per second limit'!" + if self._exceeded_max_events_per_hour(): + return False, f"Exceeded max events per hour limit'!" try: e.check_signature() @@ -349,11 +349,11 @@ class NostrClientConnection: return True, "" - def _exceeded_max_events_per_second(self) -> bool: - if self.client_config.max_events_per_second == 0: + def _exceeded_max_events_per_hour(self) -> bool: + if self.client_config.max_events_per_hour == 0: return False - current_time = round(time.time()) + current_time = round(time.time() / 3600) if self._last_event_timestamp == current_time: self._event_count_per_timestamp += 1 else: @@ -361,7 +361,7 @@ class NostrClientConnection: self._event_count_per_timestamp = 0 return ( - self._event_count_per_timestamp > self.client_config.max_events_per_second + self._event_count_per_timestamp > self.client_config.max_events_per_hour ) def _created_at_in_range(self, created_at: int) -> Tuple[bool, str]: diff --git a/models.py b/models.py index 7eb5dd2..60dbb19 100644 --- a/models.py +++ b/models.py @@ -19,7 +19,7 @@ class FilterSpec(Spec): class EventSpec(Spec): - max_events_per_second = Field(0, alias="maxEventsPerSecond") + max_events_per_hour = Field(0, alias="maxEventsPerHour") created_at_days_past = Field(0, alias="createdAtDaysPast") created_at_hours_past = Field(0, alias="createdAtHoursPast") diff --git a/static/components/relay-details/relay-details.html b/static/components/relay-details/relay-details.html index 92b5f15..2deeeb5 100644 --- a/static/components/relay-details/relay-details.html +++ b/static/components/relay-details/relay-details.html @@ -497,12 +497,12 @@
-
Max events per second:
+
Max events per hour:
@@ -515,7 +515,7 @@ No Limit