diff options
author | Maxim Filippov <colixer@gmail.com> | 2019-12-13 19:00:26 +0300 |
---|---|---|
committer | Maxim Filippov <colixer@gmail.com> | 2019-12-14 03:06:43 +0300 |
commit | eb11c6028973b945361095d3f4791ac6f61379a9 (patch) | |
tree | 11b73733afbf0b9d221da47b6d621f320a5626d5 /lib | |
parent | fd697cf2090b61db60a02694c3227850df176e2d (diff) | |
download | pleroma-eb11c6028973b945361095d3f4791ac6f61379a9.tar.gz |
Disable rate limiter for socket/localhost (unless RemoteIp is enabled)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/plugs/rate_limiter/rate_limiter.ex | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/lib/pleroma/plugs/rate_limiter/rate_limiter.ex b/lib/pleroma/plugs/rate_limiter/rate_limiter.ex index d720508c8..7fb92489c 100644 --- a/lib/pleroma/plugs/rate_limiter/rate_limiter.ex +++ b/lib/pleroma/plugs/rate_limiter/rate_limiter.ex @@ -67,6 +67,8 @@ defmodule Pleroma.Plugs.RateLimiter do alias Pleroma.Plugs.RateLimiter.LimiterSupervisor alias Pleroma.User + require Logger + def init(opts) do limiter_name = Keyword.get(opts, :name) @@ -89,18 +91,39 @@ defmodule Pleroma.Plugs.RateLimiter do def call(conn, nil), do: conn def call(conn, settings) do - settings - |> incorporate_conn_info(conn) - |> check_rate() - |> case do - {:ok, _count} -> + case disabled?() do + true -> + if Pleroma.Config.get(:env) == :prod, + do: Logger.warn("Rate limiter is disabled for localhost/socket") + conn - {:error, _count} -> - render_throttled_error(conn) + false -> + settings + |> incorporate_conn_info(conn) + |> check_rate() + |> case do + {:ok, _count} -> + conn + + {:error, _count} -> + render_throttled_error(conn) + end end end + def disabled? do + localhost_or_socket = + Pleroma.Config.get([Pleroma.Web.Endpoint, :http, :ip]) + |> Tuple.to_list() + |> Enum.join(".") + |> String.match?(~r/^local|^127.0.0.1/) + + remote_ip_disabled = not Pleroma.Config.get([Pleroma.Plugs.RemoteIp, :enabled]) + + localhost_or_socket and remote_ip_disabled + end + def inspect_bucket(conn, name_root, settings) do settings = settings |