diff options
author | squidboi <squidboi@waifu.club> | 2018-06-07 21:00:57 -0700 |
---|---|---|
committer | squidboi <squidboi@waifu.club> | 2018-06-07 21:00:57 -0700 |
commit | f69d38e455c224c459cd37088698542f541bcd1d (patch) | |
tree | 96fd67f5508c4eb030e35c61d45a52684e379974 | |
parent | 595ca3bb3a80eb3908a96b13c8b446296219a9c7 (diff) | |
download | pleroma-f69d38e455c224c459cd37088698542f541bcd1d.tar.gz |
add mrf for dropping follower-only and direct posts
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/reject_non_public.ex | 33 |
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 |