Merge pull request 'Rate limit C2S outbox posts and emoji reactions' (#8042) from lambadalambda/pleroma:fix/c2s-rate-limit into develop

Reviewed-on: https://git.pleroma.social/pleroma/pleroma/pulls/8042
This commit is contained in:
lain 2026-10-31 16:22:00 +00:00
commit d3495ceead
5 changed files with 100 additions and 0 deletions

View file

@ -26,6 +26,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
alias Pleroma.Web.Plugs.EnsureAuthenticatedPlug
alias Pleroma.Web.Plugs.FederatingPlug
alias Pleroma.Web.Plugs.OAuthScopesPlug
alias Pleroma.Web.Plugs.RateLimiter
require Logger
@ -66,6 +67,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubController do
when action in [:followers, :following]
)
# Shares the per-user bucket with Mastodon API status actions and emoji reactions.
plug(RateLimiter, [name: :statuses_actions] when action == :update_outbox)
plug(Majic.Plug, [pool: Pleroma.MajicPool] when action in [:upload_media])
plug(

View file

@ -12,6 +12,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do
alias Pleroma.Web.CommonAPI
alias Pleroma.Web.MastodonAPI.StatusView
alias Pleroma.Web.Plugs.OAuthScopesPlug
alias Pleroma.Web.Plugs.RateLimiter
plug(Pleroma.Web.ApiSpec.CastAndValidate)
plug(OAuthScopesPlug, %{scopes: ["write:statuses"]} when action in [:create, :delete])
@ -22,6 +23,14 @@ defmodule Pleroma.Web.PleromaAPI.EmojiReactionController do
when action == :index
)
plug(
RateLimiter,
[name: :status_id_action, bucket_name: "status_id_action:emoji_react", params: [:id]]
when action in [:create, :delete]
)
plug(RateLimiter, [name: :statuses_actions] when action in [:create, :delete])
defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.EmojiReactionOperation
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)