Merge branch 'develop' into feature/custom-runtime-modules

This commit is contained in:
Egor Kislitsyn 2019-12-16 22:34:21 +07:00
commit b9a87b1baa
No known key found for this signature in database
GPG key ID: 1B49CB15B71E7805
3 changed files with 29 additions and 24 deletions

View file

@ -70,6 +70,8 @@
seconds_valid: 60, seconds_valid: 60,
method: Pleroma.Captcha.Native method: Pleroma.Captcha.Native
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
config :pleroma, :hackney_pools, config :pleroma, :hackney_pools,
federation: [ federation: [
max_connections: 50, max_connections: 50,

View file

@ -97,8 +97,6 @@
config :pleroma, :modules, runtime_dir: "test/fixtures/modules" config :pleroma, :modules, runtime_dir: "test/fixtures/modules"
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
if File.exists?("./config/test.secret.exs") do if File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs" import_config "test.secret.exs"
else else

View file

@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
alias Pleroma.HTTP alias Pleroma.HTTP
alias Pleroma.Instances alias Pleroma.Instances
alias Pleroma.Object alias Pleroma.Object
alias Pleroma.Repo
alias Pleroma.User alias Pleroma.User
alias Pleroma.Web.ActivityPub.Relay alias Pleroma.Web.ActivityPub.Relay
alias Pleroma.Web.ActivityPub.Transmogrifier alias Pleroma.Web.ActivityPub.Transmogrifier
@ -188,31 +189,35 @@ def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity)
recipients = recipients(actor, activity) recipients = recipients(actor, activity)
recipients inboxes =
|> Enum.filter(&User.ap_enabled?/1) recipients
|> Enum.map(fn %{source_data: data} -> data["inbox"] end) |> Enum.filter(&User.ap_enabled?/1)
|> Enum.filter(fn inbox -> should_federate?(inbox, public) end) |> Enum.map(fn %{source_data: data} -> data["inbox"] end)
|> Instances.filter_reachable() |> Enum.filter(fn inbox -> should_federate?(inbox, public) end)
|> Enum.each(fn {inbox, unreachable_since} -> |> Instances.filter_reachable()
%User{ap_id: ap_id} =
Enum.find(recipients, fn %{source_data: data} -> data["inbox"] == inbox end)
# Get all the recipients on the same host and add them to cc. Otherwise, a remote Repo.checkout(fn ->
# instance would only accept a first message for the first recipient and ignore the rest. Enum.each(inboxes, fn {inbox, unreachable_since} ->
cc = get_cc_ap_ids(ap_id, recipients) %User{ap_id: ap_id} =
Enum.find(recipients, fn %{source_data: data} -> data["inbox"] == inbox end)
json = # Get all the recipients on the same host and add them to cc. Otherwise, a remote
data # instance would only accept a first message for the first recipient and ignore the rest.
|> Map.put("cc", cc) cc = get_cc_ap_ids(ap_id, recipients)
|> Jason.encode!()
Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{ json =
inbox: inbox, data
json: json, |> Map.put("cc", cc)
actor_id: actor.id, |> Jason.encode!()
id: activity.data["id"],
unreachable_since: unreachable_since Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{
}) inbox: inbox,
json: json,
actor_id: actor.id,
id: activity.data["id"],
unreachable_since: unreachable_since
})
end)
end) end)
end end