projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Just sign with an empty string if needed.
[akkoma]
/
lib
/
pleroma
/
web
/
websub
/
websub.ex
diff --git
a/lib/pleroma/web/websub/websub.ex
b/lib/pleroma/web/websub/websub.ex
index 63a91055a9081264e06dd662f3752656bfb59773..ba86db50e6ede23f17e682783159099531a3e5e4 100644
(file)
--- a/
lib/pleroma/web/websub/websub.ex
+++ b/
lib/pleroma/web/websub/websub.ex
@@
-41,8
+41,10
@@
defmodule Pleroma.Web.Websub do
Enum.each(subscriptions, fn(sub) ->
response = FeedRepresenter.to_simple_form(user, [activity], [user])
|> :xmerl.export_simple(:xmerl_xml)
Enum.each(subscriptions, fn(sub) ->
response = FeedRepresenter.to_simple_form(user, [activity], [user])
|> :xmerl.export_simple(:xmerl_xml)
+ |> to_string
- signature = sign(sub.secret, response)
+ signature = sign(sub.secret || "", response)
+ Logger.debug("Pushing to #{sub.callback}")
HTTPoison.post(sub.callback, response, [
{"Content-Type", "application/atom+xml"},
{"X-Hub-Signature", "sha1=#{signature}"}
HTTPoison.post(sub.callback, response, [
{"Content-Type", "application/atom+xml"},
{"X-Hub-Signature", "sha1=#{signature}"}
@@
-51,7
+53,7
@@
defmodule Pleroma.Web.Websub do
end
def sign(secret, doc) do
end
def sign(secret, doc) do
- :crypto.hmac(:sha, secret,
doc) |> Base.encode16
+ :crypto.hmac(:sha, secret,
to_string(doc)) |> Base.encode16 |> String.downcase
end
def incoming_subscription_request(user, %{"hub.mode" => "subscribe"} = params) do
end
def incoming_subscription_request(user, %{"hub.mode" => "subscribe"} = params) do
@@
-78,6
+80,9
@@
defmodule Pleroma.Web.Websub do
{:ok, websub}
else {:error, reason} ->
{:ok, websub}
else {:error, reason} ->
+ Logger.debug("Couldn't create subscription.")
+ Logger.debug(inspect(reason))
+
{:error, reason}
end
end
{:error, reason}
end
end
@@
-86,6
+91,11
@@
defmodule Pleroma.Web.Websub do
Repo.get_by(WebsubServerSubscription, topic: topic, callback: callback) || %WebsubServerSubscription{}
end
Repo.get_by(WebsubServerSubscription, topic: topic, callback: callback) || %WebsubServerSubscription{}
end
+ # Temp hack for mastodon.
+ defp lease_time(%{"hub.lease_seconds" => ""}) do
+ {:ok, 60 * 60 * 24 * 3} # three days
+ end
+
defp lease_time(%{"hub.lease_seconds" => lease_seconds}) do
{:ok, String.to_integer(lease_seconds)}
end
defp lease_time(%{"hub.lease_seconds" => lease_seconds}) do
{:ok, String.to_integer(lease_seconds)}
end
@@
-96,7
+106,7
@@
defmodule Pleroma.Web.Websub do
defp valid_topic(%{"hub.topic" => topic}, user) do
if topic == OStatus.feed_path(user) do
defp valid_topic(%{"hub.topic" => topic}, user) do
if topic == OStatus.feed_path(user) do
- {:ok,
topic
}
+ {:ok,
OStatus.feed_path(user)
}
else
{:error, "Wrong topic requested, expected #{OStatus.feed_path(user)}, got #{topic}"}
end
else
{:error, "Wrong topic requested, expected #{OStatus.feed_path(user)}, got #{topic}"}
end
@@
-137,12
+147,12
@@
defmodule Pleroma.Web.Websub do
avatar = OStatus.make_avatar_object(doc)
{:ok, %{
avatar = OStatus.make_avatar_object(doc)
{:ok, %{
-
uri:
uri,
-
hub:
hub,
-
nickname:
preferredUsername || name,
-
name:
displayName || name,
-
host:
URI.parse(uri).host,
-
avatar:
avatar
+
"uri" =>
uri,
+
"hub" =>
hub,
+
"nickname" =>
preferredUsername || name,
+
"name" =>
displayName || name,
+
"host" =>
URI.parse(uri).host,
+
"avatar" =>
avatar
}}
else e ->
{:error, e}
}}
else e ->
{:error, e}