Merge branch 'develop' into feature/custom-runtime-modules
This commit is contained in:
		
						commit
						b9a87b1baa
					
				
					 3 changed files with 29 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -70,6 +70,8 @@
 | 
			
		|||
  seconds_valid: 60,
 | 
			
		||||
  method: Pleroma.Captcha.Native
 | 
			
		||||
 | 
			
		||||
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
 | 
			
		||||
 | 
			
		||||
config :pleroma, :hackney_pools,
 | 
			
		||||
  federation: [
 | 
			
		||||
    max_connections: 50,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -97,8 +97,6 @@
 | 
			
		|||
 | 
			
		||||
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
 | 
			
		||||
  import_config "test.secret.exs"
 | 
			
		||||
else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
 | 
			
		|||
  alias Pleroma.HTTP
 | 
			
		||||
  alias Pleroma.Instances
 | 
			
		||||
  alias Pleroma.Object
 | 
			
		||||
  alias Pleroma.Repo
 | 
			
		||||
  alias Pleroma.User
 | 
			
		||||
  alias Pleroma.Web.ActivityPub.Relay
 | 
			
		||||
  alias Pleroma.Web.ActivityPub.Transmogrifier
 | 
			
		||||
| 
						 | 
				
			
			@ -188,31 +189,35 @@ def publish(%User{} = actor, %{data: %{"bcc" => bcc}} = activity)
 | 
			
		|||
 | 
			
		||||
    recipients = recipients(actor, activity)
 | 
			
		||||
 | 
			
		||||
    recipients
 | 
			
		||||
    |> Enum.filter(&User.ap_enabled?/1)
 | 
			
		||||
    |> Enum.map(fn %{source_data: data} -> data["inbox"] end)
 | 
			
		||||
    |> Enum.filter(fn inbox -> should_federate?(inbox, public) end)
 | 
			
		||||
    |> Instances.filter_reachable()
 | 
			
		||||
    |> Enum.each(fn {inbox, unreachable_since} ->
 | 
			
		||||
      %User{ap_id: ap_id} =
 | 
			
		||||
        Enum.find(recipients, fn %{source_data: data} -> data["inbox"] == inbox end)
 | 
			
		||||
    inboxes =
 | 
			
		||||
      recipients
 | 
			
		||||
      |> Enum.filter(&User.ap_enabled?/1)
 | 
			
		||||
      |> Enum.map(fn %{source_data: data} -> data["inbox"] end)
 | 
			
		||||
      |> Enum.filter(fn inbox -> should_federate?(inbox, public) end)
 | 
			
		||||
      |> Instances.filter_reachable()
 | 
			
		||||
 | 
			
		||||
      # Get all the recipients on the same host and add them to cc. Otherwise, a remote
 | 
			
		||||
      # instance would only accept a first message for the first recipient and ignore the rest.
 | 
			
		||||
      cc = get_cc_ap_ids(ap_id, recipients)
 | 
			
		||||
    Repo.checkout(fn ->
 | 
			
		||||
      Enum.each(inboxes, fn {inbox, unreachable_since} ->
 | 
			
		||||
        %User{ap_id: ap_id} =
 | 
			
		||||
          Enum.find(recipients, fn %{source_data: data} -> data["inbox"] == inbox end)
 | 
			
		||||
 | 
			
		||||
      json =
 | 
			
		||||
        data
 | 
			
		||||
        |> Map.put("cc", cc)
 | 
			
		||||
        |> Jason.encode!()
 | 
			
		||||
        # Get all the recipients on the same host and add them to cc. Otherwise, a remote
 | 
			
		||||
        # instance would only accept a first message for the first recipient and ignore the rest.
 | 
			
		||||
        cc = get_cc_ap_ids(ap_id, recipients)
 | 
			
		||||
 | 
			
		||||
      Pleroma.Web.Federator.Publisher.enqueue_one(__MODULE__, %{
 | 
			
		||||
        inbox: inbox,
 | 
			
		||||
        json: json,
 | 
			
		||||
        actor_id: actor.id,
 | 
			
		||||
        id: activity.data["id"],
 | 
			
		||||
        unreachable_since: unreachable_since
 | 
			
		||||
      })
 | 
			
		||||
        json =
 | 
			
		||||
          data
 | 
			
		||||
          |> Map.put("cc", cc)
 | 
			
		||||
          |> Jason.encode!()
 | 
			
		||||
 | 
			
		||||
        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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue