projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
in dev, allow dev FE
[akkoma]
/
lib
/
pleroma
/
web
/
activity_pub
/
publisher.ex
diff --git
a/lib/pleroma/web/activity_pub/publisher.ex
b/lib/pleroma/web/activity_pub/publisher.ex
index 849b359d02d3aec7b4db25c15144cbaf3bbf01c1..b187d3a48040cee9c5b1b182c4ea28051fcef093 100644
(file)
--- a/
lib/pleroma/web/activity_pub/publisher.ex
+++ b/
lib/pleroma/web/activity_pub/publisher.ex
@@
-64,16
+64,16
@@
defmodule Pleroma.Web.ActivityPub.Publisher do
})
with {:ok, %{status: code}} = result when code in 200..299 <-
})
with {:ok, %{status: code}} = result when code in 200..299 <-
-
HTTP.post(
-
inbox,
-
json,
-
[
-
{"Content-Type", "application/activity+json"},
-
{"Date", date},
-
{"signature", signature},
-
{"digest", digest}
-
]
-
) do
+ HTTP.post(
+ inbox,
+ json,
+ [
+ {"Content-Type", "application/activity+json"},
+ {"Date", date},
+ {"signature", signature},
+ {"digest", digest}
+ ]
+ ) do
if not Map.has_key?(params, :unreachable_since) || params[:unreachable_since] do
Instances.set_reachable(inbox)
end
if not Map.has_key?(params, :unreachable_since) || params[:unreachable_since] do
Instances.set_reachable(inbox)
end
@@
-103,19
+103,20
@@
defmodule Pleroma.Web.ActivityPub.Publisher do
end
end
end
end
- defp should_federate?(inbox, public) do
- if public do
- true
- else
- %{host: host} = URI.parse(inbox)
+ defp blocked_instances do
+ Config.get([:instance, :quarantined_instances], []) ++
+ Config.get([:mrf_simple, :reject], [])
+ end
- quarantined_instances =
- Config.get([:instance, :quarantined_instances], [])
- |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples()
- |> Pleroma.Web.ActivityPub.MRF.subdomains_regex()
+ def should_federate?(url) do
+ %{host: host} = URI.parse(url)
- !Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host)
- end
+ quarantined_instances =
+ blocked_instances()
+ |> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples()
+ |> Pleroma.Web.ActivityPub.MRF.subdomains_regex()
+
+ !Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host)
end
@spec recipients(User.t(), Activity.t()) :: list(User.t()) | []
end
@spec recipients(User.t(), Activity.t()) :: list(User.t()) | []
@@
-192,7
+193,6
@@
defmodule Pleroma.Web.ActivityPub.Publisher do
def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity)
when is_list(bcc) and bcc != [] do
def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity)
when is_list(bcc) and bcc != [] do
- public = is_public?(activity)
{:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
recipients = recipients(actor, activity)
{:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
recipients = recipients(actor, activity)
@@
-201,7
+201,7
@@
defmodule Pleroma.Web.ActivityPub.Publisher do
recipients
|> Enum.filter(&User.ap_enabled?/1)
|> Enum.map(fn actor -> actor.inbox end)
recipients
|> Enum.filter(&User.ap_enabled?/1)
|> Enum.map(fn actor -> actor.inbox end)
- |> Enum.filter(fn inbox -> should_federate?(inbox
, public
) end)
+ |> Enum.filter(fn inbox -> should_federate?(inbox) end)
|> Instances.filter_reachable()
Repo.checkout(fn ->
|> Instances.filter_reachable()
Repo.checkout(fn ->
@@
-246,7
+246,7
@@
defmodule Pleroma.Web.ActivityPub.Publisher do
determine_inbox(activity, user)
end)
|> Enum.uniq()
determine_inbox(activity, user)
end)
|> Enum.uniq()
- |> Enum.filter(fn inbox -> should_federate?(inbox
, public
) end)
+ |> Enum.filter(fn inbox -> should_federate?(inbox) end)
|> Instances.filter_reachable()
|> Enum.each(fn {inbox, unreachable_since} ->
Pleroma.Web.Federator.Publisher.enqueue_one(
|> Instances.filter_reachable()
|> Enum.each(fn {inbox, unreachable_since} ->
Pleroma.Web.Federator.Publisher.enqueue_one(