aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2018-06-08 11:08:50 +0000
committerlambda <pleromagit@rogerbraun.net>2018-06-08 11:08:50 +0000
commitbb639a362e42cba5a78e64e4c7fc0380fe25c414 (patch)
tree47a476116cad941504ecdf7c40d1a3cfac25a16c
parent4a16ade2ee14d9efb679de5c0b9a9d1cdc800170 (diff)
parente2c4013c88c71c31084abe7567a7f3ba81f16bfa (diff)
downloadpleroma-bb639a362e42cba5a78e64e4c7fc0380fe25c414.tar.gz
Merge branch 'feature/rejectnonpublic' into 'develop'
Add MRF to drop all posts with "followers-only" or "direct" privacy settings See merge request pleroma/pleroma!202
-rw-r--r--lib/pleroma/web/activity_pub/mrf/reject_non_public.ex29
1 files changed, 29 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..879cbe6de
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
@@ -0,0 +1,29 @@
+defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
+ alias Pleroma.User
+ @behaviour Pleroma.Web.ActivityPub.MRF
+
+ @impl true
+ def filter(object) do
+ if object["type"] == "Create" do
+ user = User.get_cached_by_ap_id(object["actor"])
+ public = "https://www.w3.org/ns/activitystreams#Public"
+
+ # Determine visibility
+ visibility =
+ cond do
+ public in object["to"] -> "public"
+ public in object["cc"] -> "unlisted"
+ user.follower_address in object["to"] -> "followers"
+ true -> "direct"
+ end
+
+ case visibility do
+ "public" -> {:ok, object}
+ "unlisted" -> {:ok, object}
+ _ -> {:reject, nil}
+ end
+ else
+ {:ok, object}
+ end
+ end
+end