mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-06-10 09:19:34 +00:00
Federator: Add option do save failed activities
This commit is contained in:
parent
9433311923
commit
47a67f1c8f
|
@ -798,6 +798,10 @@ config :floki, :html_parser, Floki.HTMLParser.FastHtml
|
|||
|
||||
config :pleroma, Pleroma.Web.Auth.Authenticator, Pleroma.Web.Auth.PleromaAuthenticator
|
||||
|
||||
config :pleroma, :debug_failed_activities,
|
||||
enabled: false,
|
||||
folder: "failed_activities"
|
||||
|
||||
# Import environment specific config. This must remain at the bottom
|
||||
# of this file so it overrides the configuration defined above.
|
||||
import_config "#{Mix.env()}.exs"
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -135,6 +135,27 @@ defmodule Pleroma.Web.FederatorTest do
|
|||
assert {:error, :already_present} = ObanHelpers.perform(job)
|
||||
end
|
||||
|
||||
test "rejects unknown activities" do
|
||||
params = %{
|
||||
"@context" => "https://www.w3.org/ns/activitystreams",
|
||||
"actor" => "http://mastodon.example.org/users/admin",
|
||||
"type" => "Frobnicate",
|
||||
"id" => "http://mastodon.example.org/users/admin/activities/1"
|
||||
}
|
||||
|
||||
assert {:ok, job} = Federator.incoming_ap_doc(params)
|
||||
assert {:error, _activity} = ObanHelpers.perform(job)
|
||||
|
||||
clear_config([:debug_failed_activities, :enabled], true)
|
||||
|
||||
assert {:ok, job} = Federator.incoming_ap_doc(params)
|
||||
assert {:error, _activity} = ObanHelpers.perform(job)
|
||||
|
||||
debug_folder = Pleroma.Config.get([:debug_failed_activities, :folder])
|
||||
|
||||
assert File.exists?(Path.join(debug_folder, URI.encode_www_form(params["id"])))
|
||||
end
|
||||
|
||||
test "rejects incoming AP docs with incorrect origin" do
|
||||
params = %{
|
||||
"@context" => "https://www.w3.org/ns/activitystreams",
|
||||
|
|
Loading…
Reference in a new issue