Ratelimiter error while using unix socket and login in a 3rd party client
How to reproduce
- set pleroma config to use a unix socket instead of ip
I was using
http: [ip: {:local, "/run/pleroma/pleroma.sock"},port: 0]
in for my own configuration Obviously change upstream in nginx to use the same unix socket - try to login to mastofe or any third party client
get the following error in the console :
14:01:23.198 request_id=FdRFxTdPmS91s_UAAAkB [info] Converted error :badarg to 500 response
14:01:23.210 [error] #PID<0.2150.0> running Pleroma.Web.Endpoint (connection #PID<0.2149.0>,stream id 1) terminated
Server: silvernight.social:80 (http)
Request: POST /oauth/authorize
** (exit) an exception was raised:
** (ArgumentError) argument error
:erlang.tuple_to_list(:local)
(pleroma) lib/pleroma/plugs/rate_limiter.ex:122: Pleroma.Plugs.RateLimiter.ip/1
(pleroma) lib/pleroma/plugs/rate_limiter.ex:113: Pleroma.Plugs.RateLimiter.check_rate/2
(pleroma) lib/pleroma/plugs/rate_limiter.ex:83: Pleroma.Plugs.RateLimiter.call/2
(pleroma) lib/pleroma/web/oauth/oauth_controller.ex:5: Pleroma.Web.OAuth.OAuthController.phoenix_controller_pipeline/2
(pleroma) lib/pleroma/web/endpoint.ex:5: Pleroma.Web.Endpoint.instrument/4
(phoenix) lib/phoenix/router.ex:288: Phoenix.Router.__call__/2
(pleroma) lib/pleroma/web/endpoint.ex:5: Pleroma.Web.Endpoint.plug_builder_call/2
I guess the format "{:local, "/run/pleroma/pleroma.sock"}"
can't be used in the method
def ip(%{remote_ip: remote_ip}) do remote_ip |> Tuple.to_list() |> Enum.join(".") end
from rate_limiter.ex
Edited by Retidurc Silvernight