aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-07-16 21:35:12 +0000
committerkaniini <ariadne@dereferenced.org>2019-07-16 21:35:12 +0000
commit4ac269a2c37f335d56c91bcda81e006b6d5e6999 (patch)
treedee6a5a7d409ba7a62a9dc4dfcd4b658f814a28e
parentd3b922276138cf7aaa896d52a8e35113a40e22dc (diff)
parent2ba07b63f4557554cd4acc63dc8e0424612554a0 (diff)
downloadpleroma-4ac269a2c37f335d56c91bcda81e006b6d5e6999.tar.gz
Merge branch '1094-relation-actions-rate-limiting' into 'develop'
[#1094] Rate-limited follow & unfollow actions. Closes #1094 See merge request pleroma/pleroma!1436
-rw-r--r--config/config.exs2
-rw-r--r--docs/config.md2
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api_controller.ex8
3 files changed, 12 insertions, 0 deletions
diff --git a/config/config.exs b/config/config.exs
index 7d539f994..03e0341c8 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -528,6 +528,8 @@ config :http_signatures,
config :pleroma, :rate_limit,
search: [{1000, 10}, {1000, 30}],
app_account_creation: {1_800_000, 25},
+ relations_actions: {10_000, 10},
+ relation_id_action: {60_000, 2},
statuses_actions: {10_000, 15},
status_id_action: {60_000, 3}
diff --git a/docs/config.md b/docs/config.md
index 9a64f0ed7..346b8cda2 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -647,5 +647,7 @@ Supported rate limiters:
* `:search` for the search requests (account & status search etc.)
* `:app_account_creation` for registering user accounts from the same IP address
+* `:relations_actions` for actions on relations with all users (follow, unfollow)
+* `:relation_id_action` for actions on relation with a specific user (follow, unfollow)
* `:statuses_actions` for create / delete / fav / unfav / reblog / unreblog actions on any statuses
* `:status_id_action` for fav / unfav or reblog / unreblog actions on the same status by the same user
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
index f4aa576f7..a732a6990 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -47,6 +47,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
require Logger
+ @rate_limited_relations_actions ~w(follow unfollow)a
+
@rate_limited_status_actions ~w(reblog_status unreblog_status fav_status unfav_status
post_status delete_status)a
@@ -62,6 +64,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
when action in ~w(fav_status unfav_status)a
)
+ plug(
+ RateLimiter,
+ {:relations_id_action, params: ["id", "uri"]} when action in @rate_limited_relations_actions
+ )
+
+ plug(RateLimiter, :relations_actions when action in @rate_limited_relations_actions)
plug(RateLimiter, :statuses_actions when action in @rate_limited_status_actions)
plug(RateLimiter, :app_account_creation when action == :account_register)
plug(RateLimiter, :search when action in [:search, :search2, :account_search])