add mrf for dropping follower-only and direct posts
authorsquidboi <squidboi@waifu.club>
Fri, 8 Jun 2018 04:00:57 +0000 (21:00 -0700)
committersquidboi <squidboi@waifu.club>
Fri, 8 Jun 2018 04:00:57 +0000 (21:00 -0700)
lib/pleroma/web/activity_pub/mrf/reject_non_public.ex [new file with mode: 0644]

diff --git a/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
new file mode 100644 (file)
index 0000000..eb95804
--- /dev/null
@@ -0,0 +1,33 @@
+defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
+  alias Pleroma.User
+  @behaviour Pleroma.Web.ActivityPub.MRF
+
+  def filter(object) do
+    if object["type"] == "Create" do
+      user = User.get_by_ap_id(object["actor"])
+      public = "https://www.w3.org/ns/activitystreams#Public"
+
+      #Determine visibility
+      visibility =
+        cond do
+          #Public
+          public in object["to"] -> "p"
+          #Unlisted
+          public in object["cc"] -> "u"
+          #Followers-only
+          user.follower_address in object["to"] -> "f"
+          #Direct
+          true -> "d"
+        end
+
+      case visibility do
+        "p" -> {:ok, object}
+        "u" -> {:ok, object}
+        _ -> {:reject, nil}
+      end
+    else
+      {:ok, object}
+    end
+  end
+
+end