Fix inbox_controller.ex
This commit is contained in:
parent
11618a6621
commit
aac9bcb6e4
1 changed files with 10 additions and 4 deletions
|
@ -2,7 +2,9 @@ defmodule NullaWeb.InboxController do
|
||||||
use NullaWeb, :controller
|
use NullaWeb, :controller
|
||||||
alias Nulla.HTTPSignature
|
alias Nulla.HTTPSignature
|
||||||
alias Nulla.ActivityPub
|
alias Nulla.ActivityPub
|
||||||
|
alias Nulla.Snowflake
|
||||||
alias Nulla.Utils
|
alias Nulla.Utils
|
||||||
|
alias Nulla.Models.User
|
||||||
alias Nulla.Models.Actor
|
alias Nulla.Models.Actor
|
||||||
alias Nulla.Models.Relation
|
alias Nulla.Models.Relation
|
||||||
alias Nulla.Models.Activity
|
alias Nulla.Models.Activity
|
||||||
|
@ -11,6 +13,8 @@ defmodule NullaWeb.InboxController do
|
||||||
conn,
|
conn,
|
||||||
%{"id" => follow_id, "type" => "Follow", "actor" => actor_uri, "object" => target_uri}
|
%{"id" => follow_id, "type" => "Follow", "actor" => actor_uri, "object" => target_uri}
|
||||||
) do
|
) do
|
||||||
|
accept_id = Snowflake.next_id()
|
||||||
|
|
||||||
with local_actor <- Actor.get_actor(ap_id: target_uri),
|
with local_actor <- Actor.get_actor(ap_id: target_uri),
|
||||||
{:ok, remote_actor_json} <- Utils.fetch_remote_actor(actor_uri),
|
{:ok, remote_actor_json} <- Utils.fetch_remote_actor(actor_uri),
|
||||||
:ok <- HTTPSignature.verify(conn, remote_actor_json),
|
:ok <- HTTPSignature.verify(conn, remote_actor_json),
|
||||||
|
@ -22,14 +26,16 @@ defmodule NullaWeb.InboxController do
|
||||||
|> Map.put("domain", URI.parse(remote_actor_json["id"]).host)
|
|> Map.put("domain", URI.parse(remote_actor_json["id"]).host)
|
||||||
),
|
),
|
||||||
follow_activity <-
|
follow_activity <-
|
||||||
Activity.activity(%{
|
Activity.create_activity(%{
|
||||||
ap_id: follow_id,
|
ap_id: follow_id,
|
||||||
type: "Follow",
|
type: "Follow",
|
||||||
actor: remote_actor.id,
|
actor: remote_actor.id,
|
||||||
object: target_uri
|
object: target_uri
|
||||||
}),
|
}),
|
||||||
accept_activity <-
|
accept_activity <-
|
||||||
Activity.activity(%{
|
Activity.create_activity(%{
|
||||||
|
id: accept_id,
|
||||||
|
ap_id: "https://#{local_actor.domain}/activities/accept/#{accept_id}",
|
||||||
type: "Accept",
|
type: "Accept",
|
||||||
actor: local_actor.ap_id,
|
actor: local_actor.ap_id,
|
||||||
object: follow_activity
|
object: follow_activity
|
||||||
|
@ -40,7 +46,7 @@ defmodule NullaWeb.InboxController do
|
||||||
local_actor_id: local_actor.id,
|
local_actor_id: local_actor.id,
|
||||||
remote_actor_id: remote_actor.id
|
remote_actor_id: remote_actor.id
|
||||||
}) do
|
}) do
|
||||||
body = Jason.encode!(ActivityPub.follow_accept(accept_activity))
|
body = Jason.encode!(ActivityPub.activity(accept_activity))
|
||||||
|
|
||||||
digest =
|
digest =
|
||||||
:crypto.hash(:sha256, body)
|
:crypto.hash(:sha256, body)
|
||||||
|
@ -66,7 +72,7 @@ defmodule NullaWeb.InboxController do
|
||||||
privateKeyPem = user.privateKey["privateKeyPem"]
|
privateKeyPem = user.privateKey["privateKeyPem"]
|
||||||
|
|
||||||
private_key =
|
private_key =
|
||||||
:public_key.pem_decode(local_actor.private_key_pem)
|
:public_key.pem_decode(privateKeyPem)
|
||||||
|> hd()
|
|> hd()
|
||||||
|> :public_key.pem_entry_decode()
|
|> :public_key.pem_entry_decode()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue