mirror of
https://git.anonymousland.org/anonymousland/synapse-product.git
synced 2024-09-08 02:11:53 +00:00
rate limiting for message sending
This commit is contained in:
parent
0a1260b03a
commit
780548b577
@ -12,10 +12,10 @@ class RatelimitConfig(Config):
|
|||||||
super(RatelimitConfig, cls).add_arguments(parser)
|
super(RatelimitConfig, cls).add_arguments(parser)
|
||||||
rc_group = parser.add_argument_group("ratelimiting")
|
rc_group = parser.add_argument_group("ratelimiting")
|
||||||
rc_group.add_argument(
|
rc_group.add_argument(
|
||||||
"--rc-messages-per-second", type=float, default=0.2
|
"--rc-messages-per-second", type=float, default=0.2,
|
||||||
help="number of messages a client can send per second"
|
help="number of messages a client can send per second"
|
||||||
)
|
)
|
||||||
rc_group.add_argument(
|
rc_group.add_argument(
|
||||||
"--rc_messsage_burst_count", type=float, default=10
|
"--rc-message-burst-count", type=float, default=10,
|
||||||
help="number of message a client can send before being throttled"
|
help="number of message a client can send before being throttled"
|
||||||
)
|
)
|
||||||
|
@ -35,12 +35,12 @@ class BaseHandler(object):
|
|||||||
allowed, time_allowed = self.ratelimiter.send_message(
|
allowed, time_allowed = self.ratelimiter.send_message(
|
||||||
user_id, time_now,
|
user_id, time_now,
|
||||||
msg_rate_hz=self.hs.config.rc_messages_per_second,
|
msg_rate_hz=self.hs.config.rc_messages_per_second,
|
||||||
burst_count=self.hs.config.rc_messsage_burst_count,
|
burst_count=self.hs.config.rc_message_burst_count,
|
||||||
)
|
)
|
||||||
if not allowed:
|
if not allowed:
|
||||||
raise cs_error(
|
raise cs_error(
|
||||||
"Limit exceeded",
|
"Limit exceeded",
|
||||||
Codes.M_LIMIT_EXCEEDED,
|
Codes.LIMIT_EXCEEDED,
|
||||||
retry_after_ms=1000*(time_allowed - time_now),
|
retry_after_ms=1000*(time_allowed - time_now),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -76,6 +76,8 @@ class MessageHandler(BaseRoomHandler):
|
|||||||
Raises:
|
Raises:
|
||||||
SynapseError if something went wrong.
|
SynapseError if something went wrong.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
self.ratelimit(event.user_id)
|
||||||
# TODO(paul): Why does 'event' not have a 'user' object?
|
# TODO(paul): Why does 'event' not have a 'user' object?
|
||||||
user = self.hs.parse_userid(event.user_id)
|
user = self.hs.parse_userid(event.user_id)
|
||||||
assert user.is_mine, "User must be our own: %s" % (user,)
|
assert user.is_mine, "User must be our own: %s" % (user,)
|
||||||
|
@ -49,6 +49,7 @@ class RoomCreationHandler(BaseRoomHandler):
|
|||||||
SynapseError if the room ID was taken, couldn't be stored, or
|
SynapseError if the room ID was taken, couldn't be stored, or
|
||||||
something went horribly wrong.
|
something went horribly wrong.
|
||||||
"""
|
"""
|
||||||
|
self.ratelimit(user_id)
|
||||||
|
|
||||||
if "room_alias_name" in config:
|
if "room_alias_name" in config:
|
||||||
room_alias = RoomAlias.create_local(
|
room_alias = RoomAlias.create_local(
|
||||||
|
Loading…
Reference in New Issue
Block a user