summaryrefslogtreecommitdiff
path: root/lib/pleroma/web/federator/federator.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/web/federator/federator.ex')
-rw-r--r--lib/pleroma/web/federator/federator.ex19
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)