aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-02-18 16:05:25 +0100
committerlain <lain@soykaf.club>2018-02-18 16:05:25 +0100
commit803bdc1a6759fe9f46a9dcdb0ffa18d294198c9d (patch)
tree562105d077b692437cd1c4d809b0f858e3cdf8a5
parent4bc57ef20c7dda871c13946aac6461298a6404ea (diff)
downloadpleroma-803bdc1a6759fe9f46a9dcdb0ffa18d294198c9d.tar.gz
Federate non-public over ActivityPub only, do some better signing.
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex6
-rw-r--r--lib/pleroma/web/federator/federator.ex11
2 files changed, 10 insertions, 7 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index a0b51da89..1a795bad1 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -288,12 +288,12 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|> Enum.uniq
{:ok, data} = Transmogrifier.prepare_outgoing(activity.data)
-
+ json = Poison.encode!(data)
Enum.each remote_inboxes, fn(inbox) ->
Logger.info("Federating #{activity.data["id"]} to #{inbox}")
host = URI.parse(inbox).host
- signature = Pleroma.Web.HTTPSignatures.sign(actor, %{host: host})
- @httpoison.post(inbox, Poison.encode!(data), [{"Content-Type", "application/activity+json"}, {"signature", signature}])
+ signature = Pleroma.Web.HTTPSignatures.sign(actor, %{host: host, "content-length": byte_size(json)})
+ @httpoison.post(inbox, json, [{"Content-Type", "application/activity+json"}, {"signature", signature}])
end
end
diff --git a/lib/pleroma/web/federator/federator.ex b/lib/pleroma/web/federator/federator.ex
index 68e5544e7..042c202be 100644
--- a/lib/pleroma/web/federator/federator.ex
+++ b/lib/pleroma/web/federator/federator.ex
@@ -2,6 +2,7 @@ defmodule Pleroma.Web.Federator do
use GenServer
alias Pleroma.User
alias Pleroma.Web.{WebFinger, Websub}
+ alias Pleroma.Web.ActivityPub.ActivityPub
require Logger
@websub Application.get_env(:pleroma, :websub)
@@ -42,11 +43,13 @@ defmodule Pleroma.Web.Federator do
Logger.debug(fn -> "Running publish for #{activity.data["id"]}" end)
with actor when not is_nil(actor) <- User.get_cached_by_ap_id(activity.data["actor"]) do
{:ok, actor} = WebFinger.ensure_keys_present(actor)
- Logger.debug(fn -> "Sending #{activity.data["id"]} out via salmon" end)
- Pleroma.Web.Salmon.publish(actor, activity)
+ if ActivityPub.is_public?(activity) do
+ Logger.debug(fn -> "Sending #{activity.data["id"]} out via salmon" end)
+ Pleroma.Web.Salmon.publish(actor, activity)
- Logger.debug(fn -> "Sending #{activity.data["id"]} out via websub" end)
- Websub.publish(Pleroma.Web.OStatus.feed_path(actor), actor, activity)
+ Logger.debug(fn -> "Sending #{activity.data["id"]} out via websub" end)
+ Websub.publish(Pleroma.Web.OStatus.feed_path(actor), actor, activity)
+ end
Logger.debug(fn -> "Sending #{activity.data["id"]} out via AP" end)
Pleroma.Web.ActivityPub.ActivityPub.publish(actor, activity)