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 pleroma-f69d38e455c224c459cd37088698542f541bcd1d.zip | |
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 | 
