From 71c95dfc1ccb61ffdb4f0266edca9b75289f4053 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 7 Apr 2020 08:23:13 +0200 Subject: Keep only pure-federation side-effects of user.ap_enabled Only parts kept are: - Do not push to non AP-enabled actors - Upgrade actors to AP-enabled when receiving an Activity from them --- lib/pleroma/user.ex | 8 ++------ lib/pleroma/web/activity_pub/utils.ex | 4 ---- lib/pleroma/web/federator/federator.ex | 15 ++------------- .../activity_pub/transmogrifier/follow_handling_test.exs | 2 -- 4 files changed, 4 insertions(+), 25 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index cba391072..273b76dd0 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -704,12 +704,8 @@ def maybe_direct_follow(%User{} = follower, %User{local: true} = followed) do follow(follower, followed) end - def maybe_direct_follow(%User{} = follower, %User{} = followed) do - if not ap_enabled?(followed) do - follow(follower, followed) - else - {:ok, follower} - end + def maybe_direct_follow(%User{} = follower, _followed) do + {:ok, follower} end @doc "A mass follow for local users. Respects blocks in both directions but does not create activities." diff --git a/lib/pleroma/web/activity_pub/utils.ex b/lib/pleroma/web/activity_pub/utils.ex index f2375bcc4..825174899 100644 --- a/lib/pleroma/web/activity_pub/utils.ex +++ b/lib/pleroma/web/activity_pub/utils.ex @@ -42,10 +42,6 @@ defmodule Pleroma.Web.ActivityPub.Utils do def get_ap_id(%{"id" => id} = _), do: id def get_ap_id(id), do: id - def normalize_params(params) do - Map.put(params, "actor", get_ap_id(params["actor"])) - end - @spec determine_explicit_mentions(map()) :: [any] def determine_explicit_mentions(%{"tag" => tag}) when is_list(tag) do Enum.flat_map(tag, fn diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex index d988dc215..7d733129a 100644 --- a/lib/pleroma/web/federator/federator.ex +++ b/lib/pleroma/web/federator/federator.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.Federator do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.Federator.Publisher alias Pleroma.Workers.PublisherWorker alias Pleroma.Workers.ReceiverWorker @@ -66,11 +65,11 @@ def perform(:publish, activity) do def perform(:incoming_ap_doc, params) do Logger.debug("Handling incoming AP activity") - params = Utils.normalize_params(params) + actor = Containment.get_actor(params) # NOTE: we use the actor ID to do the containment, this is fine because an # actor shouldn't be acting on objects outside their own AP server. - with {:ok, _user} <- ap_enabled_actor(params["actor"]), + with {_, {:ok, _user}} <- {:get_user, User.get_or_fetch_by_ap_id(actor)}, nil <- Activity.normalize(params["id"]), {_, :ok} <- {:correct_origin?, Containment.contain_origin_from_id(params["actor"], params)}, @@ -92,14 +91,4 @@ def perform(:incoming_ap_doc, params) do {:error, e} end end - - def ap_enabled_actor(id) do - user = User.get_cached_by_ap_id(id) - - if User.ap_enabled?(user) do - {:ok, user} - else - ActivityPub.make_user_from_ap_id(id) - end - end end diff --git a/test/web/activity_pub/transmogrifier/follow_handling_test.exs b/test/web/activity_pub/transmogrifier/follow_handling_test.exs index 967389fae..3805c093b 100644 --- a/test/web/activity_pub/transmogrifier/follow_handling_test.exs +++ b/test/web/activity_pub/transmogrifier/follow_handling_test.exs @@ -8,7 +8,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier.FollowHandlingTest do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier - alias Pleroma.Web.ActivityPub.Utils import Pleroma.Factory import Ecto.Query @@ -151,7 +150,6 @@ test "it works for incoming follow requests from hubzilla" do File.read!("test/fixtures/hubzilla-follow-activity.json") |> Poison.decode!() |> Map.put("object", user.ap_id) - |> Utils.normalize_params() {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) -- cgit v1.2.3