projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'feature/1728-webfinger-acct-scheme' into 'develop'
[akkoma]
/
lib
/
pleroma
/
web
/
activity_pub
/
mrf
/
reject_non_public.ex
diff --git
a/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
index 4197be847c635167e95bd30af053b00f3f0aa0cf..3092f3272974ef223f7bec3a8f2f0aa18b5f97bd 100644
(file)
--- a/
lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
+++ b/
lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
@@
-1,50
+1,51
@@
# Pleroma: A lightweight social networking server
# Pleroma: A lightweight social networking server
-# Copyright © 2017-20
19
Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-20
20
Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do
+ @moduledoc "Rejects non-public (followers-only, direct) activities"
+
+ alias Pleroma.Config
alias Pleroma.User
alias Pleroma.User
+
@behaviour Pleroma.Web.ActivityPub.MRF
@behaviour Pleroma.Web.ActivityPub.MRF
+ require Pleroma.Constants
+
@impl true
def filter(%{"type" => "Create"} = object) do
user = User.get_cached_by_ap_id(object["actor"])
@impl true
def filter(%{"type" => "Create"} = object) do
user = User.get_cached_by_ap_id(object["actor"])
- public = "https://www.w3.org/ns/activitystreams#Public"
# Determine visibility
visibility =
cond do
# Determine visibility
visibility =
cond do
-
public
in object["to"] -> "public"
-
public
in object["cc"] -> "unlisted"
+
Pleroma.Constants.as_public()
in object["to"] -> "public"
+
Pleroma.Constants.as_public()
in object["cc"] -> "unlisted"
user.follower_address in object["to"] -> "followers"
true -> "direct"
end
user.follower_address in object["to"] -> "followers"
true -> "direct"
end
- policy =
Pleroma.
Config.get(:mrf_rejectnonpublic)
+ policy = Config.get(:mrf_rejectnonpublic)
- c
ase visibility
do
-
"public"
->
+ c
ond
do
+
visibility in ["public", "unlisted"]
->
{:ok, object}
{:ok, object}
-
"unlisted"
->
+
visibility == "followers" and Keyword.get(policy, :allow_followersonly)
->
{:ok, object}
{:ok, object}
- "followers" ->
- with true <- Keyword.get(policy, :allow_followersonly) do
- {:ok, object}
- else
- _e -> {:reject, nil}
- end
-
- "direct" ->
- with true <- Keyword.get(policy, :allow_direct) do
- {:ok, object}
- else
- _e -> {:reject, nil}
- end
+ visibility == "direct" and Keyword.get(policy, :allow_direct) ->
+ {:ok, object}
+
+ true ->
+ {:reject, nil}
end
end
@impl true
def filter(object), do: {:ok, object}
end
end
@impl true
def filter(object), do: {:ok, object}
+
+ @impl true
+ def describe,
+ do: {:ok, %{mrf_rejectnonpublic: Pleroma.Config.get(:mrf_rejectnonpublic) |> Enum.into(%{})}}
end
end