Fix recipient count in hellthread policy
[akkoma] / lib / pleroma / web / activity_pub / mrf / tag_policy.ex
index dd3129707c28b21c441c6910f1c948cfa2ddd834..b242e44e69b2c2351ba8da946207722189625d35 100644 (file)
@@ -50,10 +50,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do
       cc =
         List.delete(cc, user.follower_address) ++ ["https://www.w3.org/ns/activitystreams#Public"]
 
+      object =
+        message["object"]
+        |> Map.put("to", to)
+        |> Map.put("cc", cc)
+
       message =
         message
         |> Map.put("to", to)
         |> Map.put("cc", cc)
+        |> Map.put("object", object)
 
       {:ok, message}
     else
@@ -74,10 +80,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do
 
       cc = List.delete(cc, "https://www.w3.org/ns/activitystreams#Public")
 
+      object =
+        message["object"]
+        |> Map.put("to", to)
+        |> Map.put("cc", cc)
+
       message =
         message
         |> Map.put("to", to)
         |> Map.put("cc", cc)
+        |> Map.put("object", object)
 
       {:ok, message}
     else
@@ -85,6 +97,21 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do
     end
   end
 
+  defp process_tag(
+         "mrf_tag:disable-remote-subscription",
+         %{"type" => "Follow", "actor" => actor} = message
+       ) do
+    user = User.get_cached_by_ap_id(actor)
+
+    if user.local == true do
+      {:ok, message}
+    else
+      {:reject, nil}
+    end
+  end
+
+  defp process_tag("mrf_tag:disable-any-subscription", %{"type" => "Follow"}), do: {:reject, nil}
+
   defp process_tag(_, message), do: {:ok, message}
 
   def filter_message(actor, message) do