diff options
Diffstat (limited to 'lib/pleroma')
-rw-r--r-- | lib/pleroma/web/federator/federator.ex | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index f5803578d..632388238 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -86,13 +86,30 @@ defmodule Pleroma.Web.Federator do {:error, :already_present} e -> - # Just drop those for now + if Pleroma.Config.get([:debug_failed_activities, :enabled]) do + save_failed_activity(params) + end + Logger.debug("Unhandled activity") Logger.debug(Jason.encode!(params, pretty: true)) {:error, e} end end + defp save_failed_activity(params) do + folder = Pleroma.Config.get([:debug_failed_activities, :folder], "failed_activities") + File.mkdir_p!(folder) + filename = URI.encode_www_form(params["id"] || Ecto.UUID.generate()) + + case File.write(Path.join([folder, filename]), Jason.encode!(params)) do + {:error, e} -> + Logger.debug("Can't write failed activity, reason: #{inspect(e)}") + + _ -> + nil + end + end + def ap_enabled_actor(id) do user = User.get_cached_by_ap_id(id) |