aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorsquidboi <squidboi@waifu.club>2018-06-07 21:00:57 -0700
committersquidboi <squidboi@waifu.club>2018-06-07 21:00:57 -0700
commitf69d38e455c224c459cd37088698542f541bcd1d (patch)
tree96fd67f5508c4eb030e35c61d45a52684e379974 /lib
parent595ca3bb3a80eb3908a96b13c8b446296219a9c7 (diff)
downloadpleroma-f69d38e455c224c459cd37088698542f541bcd1d.tar.gz
add mrf for dropping follower-only and direct posts
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/mrf/reject_non_public.ex33
1 files changed, 33 insertions, 0 deletions
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
index 000000000..eb9580445
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
@@ -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