logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 595ca3bb3a80eb3908a96b13c8b446296219a9c7
parent: b114808a10548a2b77bebbecae13ba94e8c2a3a6
Author: lambda <pleromagit@rogerbraun.net>
Date:   Thu,  7 Jun 2018 14:44:08 +0000

Merge branch 'feature/quarantine' into 'develop'

add the ability to 'quarantine' an activitypub peer, causing them to be treated as an OStatus peer.

See merge request pleroma/pleroma!199

Diffstat:

Mconfig/config.exs3++-
Mlib/pleroma/web/activity_pub/activity_pub.ex14++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/config/config.exs b/config/config.exs @@ -54,7 +54,8 @@ config :pleroma, :instance, registrations_open: true, federating: true, rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy, - public: true + public: true, + quarantined_instances: [] config :pleroma, :activitypub, accept_blocks: true diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -562,6 +562,17 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do end end + @quarantined_instances Keyword.get(@instance, :quarantined_instances, []) + + def should_federate?(inbox, public) do + if public do + true + else + inbox_info = URI.parse(inbox) + inbox_info.host not in @quarantined_instances + end + end + def publish(actor, activity) do followers = if actor.follower_address in activity.recipients do @@ -571,6 +582,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do [] end + public = is_public?(activity) + remote_inboxes = (Pleroma.Web.Salmon.remote_users(activity) ++ followers) |> Enum.filter(fn user -> User.ap_enabled?(user) end) @@ -578,6 +591,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do (data["endpoints"] && data["endpoints"]["sharedInbox"]) || data["inbox"] end) |> Enum.uniq() + |> Enum.filter(fn inbox -> should_federate?(inbox, public) end) {:ok, data} = Transmogrifier.prepare_outgoing(activity.data) json = Jason.encode!(data)