Federation fixes

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-11-19 17:40:42 +01:00
parent fbf2d480a3
commit d7fd30f8e6
10 changed files with 53 additions and 250 deletions

View File

@@ -192,6 +192,8 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
_attributed_to
)
when is_map(object) do
Logger.debug("Maybe relay if group activity (object is map)")
Logger.debug(inspect(object))
do_maybe_relay_if_group_activity(object, object["attributedTo"])
end
@@ -201,10 +203,12 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
%Actor{url: attributed_to_url}
)
when is_binary(object) and is_binary(attributed_to_url) do
Logger.debug("Maybe relay if group activity (object is binary)")
do_maybe_relay_if_group_activity(object, attributed_to_url)
end
def maybe_relay_if_group_activity(_activity, _attributedTo) do
Logger.debug("Will not replay : not a group activity")
:ok
end
@@ -214,6 +218,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
do: do_maybe_relay_if_group_activity(object, hd(attributed_to))
defp do_maybe_relay_if_group_activity(object, attributed_to) when is_binary(attributed_to) do
Logger.debug("Let's try to relay group activity")
id = "#{Endpoint.url()}/announces/#{Ecto.UUID.generate()}"
case Actors.get_local_group_by_url(attributed_to) do
@@ -223,8 +228,9 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
Logger.info("Forwarded activity to external members of the group")
:ok
{:error, _err} ->
{:error, err} ->
Logger.info("Failed to forward activity to external members of the group")
Logger.debug(inspect(err))
:error
end
@@ -233,7 +239,9 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
end
end
defp do_maybe_relay_if_group_activity(_, _), do: :ok
defp do_maybe_relay_if_group_activity(_, attributed_to) do
Logger.debug("Will not relay group activity, attributed to is : #{inspect(attributed_to)}")
end
@spec remote_actors(list(String.t())) :: list(Actor.t())
def remote_actors(recipients) do
@@ -439,10 +447,16 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
) do
{to, cc} =
if public do
Logger.debug("Making announce data for a public object")
{[actor.followers_url, object_actor_url],
["https://www.w3.org/ns/activitystreams#Public"]}
else
Logger.debug("Making announce data for a private object")
if actor_type == :Group do
Logger.debug("Making announce data for a group private object")
to =
(object["to"] || [])
|> MapSet.new()
@@ -451,6 +465,7 @@ defmodule Mobilizon.Federation.ActivityPub.Utils do
{to, []}
else
Logger.debug("Making announce data for a private object")
{[actor.followers_url], []}
end
end