Fix various issues reported by Dializer
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
1319985047
commit
26b1ea401a
@ -108,15 +108,15 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do
|
|||||||
@doc """
|
@doc """
|
||||||
Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it
|
Create an actor inside our database from username, using WebFinger to find out its AP ID and then fetch it
|
||||||
"""
|
"""
|
||||||
@spec make_actor_from_nickname(nickname :: String.t(), preload :: boolean) ::
|
@spec make_actor_from_nickname(nickname :: String.t(), options :: Keyword.t()) ::
|
||||||
{:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()}
|
{:ok, Actor.t()} | {:error, make_actor_errors | WebFinger.finger_errors()}
|
||||||
def make_actor_from_nickname(nickname, preload \\ false) do
|
def make_actor_from_nickname(nickname, options \\ []) do
|
||||||
Logger.debug("Fingering actor from nickname #{nickname}")
|
Logger.debug("Fingering actor from nickname #{nickname}")
|
||||||
|
|
||||||
case WebFinger.finger(nickname) do
|
case WebFinger.finger(nickname) do
|
||||||
{:ok, url} when is_binary(url) ->
|
{:ok, url} when is_binary(url) ->
|
||||||
Logger.debug("Matched #{nickname} to URL #{url}, now making actor")
|
Logger.debug("Matched #{nickname} to URL #{url}, now making actor")
|
||||||
make_actor_from_url(url, preload: preload)
|
make_actor_from_url(url, options)
|
||||||
|
|
||||||
{:error, e} ->
|
{:error, e} ->
|
||||||
{:error, e}
|
{:error, e}
|
||||||
|
@ -20,7 +20,7 @@ defmodule Mobilizon.Federation.ActivityPub.Audience do
|
|||||||
@doc """
|
@doc """
|
||||||
Get audience for an entity
|
Get audience for an entity
|
||||||
"""
|
"""
|
||||||
@spec get_audience(Entity.t()) :: audience()
|
@spec get_audience(Entity.t() | Participant.t()) :: audience()
|
||||||
def get_audience(%Event{} = event) do
|
def get_audience(%Event{} = event) do
|
||||||
extract_actors_from_event(event)
|
extract_actors_from_event(event)
|
||||||
end
|
end
|
||||||
|
@ -190,7 +190,7 @@ defmodule Mobilizon.Federation.ActivityPub.Refresher do
|
|||||||
|
|
||||||
# If we're handling an activity
|
# If we're handling an activity
|
||||||
@spec handling_element(map()) :: {:ok, any, struct} | :error
|
@spec handling_element(map()) :: {:ok, any, struct} | :error
|
||||||
@spec handling_element(String.t()) :: {:ok, struct} | {:error, any()}
|
@spec handling_element(String.t()) :: {:ok, struct} | {:ok, atom, struct} | {:error, any()}
|
||||||
defp handling_element(%{"type" => activity_type} = data)
|
defp handling_element(%{"type" => activity_type} = data)
|
||||||
when activity_type in ["Create", "Update", "Delete"] do
|
when activity_type in ["Create", "Update", "Delete"] do
|
||||||
object = get_in(data, ["object"])
|
object = get_in(data, ["object"])
|
||||||
|
@ -69,7 +69,8 @@ defmodule Mobilizon.GraphQL.API.Follows do
|
|||||||
)
|
)
|
||||||
|
|
||||||
case Actors.check_follow(follower, followed) do
|
case Actors.check_follow(follower, followed) do
|
||||||
%Follower{approved: false} ->
|
%Follower{approved: false} = follow ->
|
||||||
|
Actors.delete_follower(follow)
|
||||||
{:error, "Follow already rejected"}
|
{:error, "Follow already rejected"}
|
||||||
|
|
||||||
%Follower{} = follow ->
|
%Follower{} = follow ->
|
||||||
|
@ -130,7 +130,7 @@ defmodule Mix.Tasks.Mobilizon.Instance do
|
|||||||
options,
|
options,
|
||||||
:listen_port,
|
:listen_port,
|
||||||
"What port will the app listen to (leave it if you are using the default setup with nginx)?",
|
"What port will the app listen to (leave it if you are using the default setup with nginx)?",
|
||||||
4000
|
"4000"
|
||||||
)
|
)
|
||||||
|
|
||||||
instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
|
instance_secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
|
||||||
|
@ -67,10 +67,6 @@ defmodule Mix.Tasks.Mobilizon.Users.New do
|
|||||||
{:error, %Ecto.Changeset{errors: errors}} ->
|
{:error, %Ecto.Changeset{errors: errors}} ->
|
||||||
shell_error(inspect(errors))
|
shell_error(inspect(errors))
|
||||||
shell_error("User has not been created because of the above reason.")
|
shell_error("User has not been created because of the above reason.")
|
||||||
|
|
||||||
err ->
|
|
||||||
shell_error(inspect(err))
|
|
||||||
shell_error("User has not been created because of an unknown reason.")
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1475,7 +1475,7 @@ defmodule Mobilizon.Actors do
|
|||||||
|> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%"))
|
|> where([_q, ..., a], like(a.name, ^"%#{name}%") or like(a.preferred_username, ^"%#{name}%"))
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec join_members_actor(Ecto.Query.t()) :: Ecto.Query.t()
|
@spec join_members_actor(Ecto.Queryable.t()) :: Ecto.Query.t()
|
||||||
defp join_members_actor(query) do
|
defp join_members_actor(query) do
|
||||||
join(query, :inner, [q], a in Actor, on: q.actor_id == a.id)
|
join(query, :inner, [q], a in Actor, on: q.actor_id == a.id)
|
||||||
end
|
end
|
||||||
|
@ -8,7 +8,12 @@ defmodule Mobilizon.Service.Workers.CleanUnconfirmedUsersWorker do
|
|||||||
|
|
||||||
@impl Oban.Worker
|
@impl Oban.Worker
|
||||||
def perform(%Job{}) do
|
def perform(%Job{}) do
|
||||||
if Mobilizon.Config.get!([:instance, :remove_unconfirmed_users]) and should_perform?() do
|
remove_unconfirmed_users =
|
||||||
|
:mobilizon
|
||||||
|
|> Application.get_env(:instance)
|
||||||
|
|> Keyword.get(:remove_unconfirmed_users, false)
|
||||||
|
|
||||||
|
if remove_unconfirmed_users and should_perform?() do
|
||||||
CleanUnconfirmedUsers.clean()
|
CleanUnconfirmedUsers.clean()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -41,7 +41,7 @@ defmodule Mobilizon.Service.Workers.Helper do
|
|||||||
|
|
||||||
alias Oban.Job
|
alias Oban.Job
|
||||||
|
|
||||||
@spec enqueue(String.t(), map(), Keyword.t()) ::
|
@spec enqueue(String.t() | :atom, map(), Keyword.t()) ::
|
||||||
{:ok, Job.t()} | {:error, Ecto.Changeset.t()}
|
{:ok, Job.t()} | {:error, Ecto.Changeset.t()}
|
||||||
def enqueue(operation, params, worker_args \\ []) do
|
def enqueue(operation, params, worker_args \\ []) do
|
||||||
params = Map.merge(%{"op" => operation}, params)
|
params = Map.merge(%{"op" => operation}, params)
|
||||||
|
@ -30,7 +30,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 404, body: ""}}
|
{:ok, %Tesla.Env{status: 404, body: ""}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|
|||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{
|
%{
|
||||||
method: :get,
|
method: :get,
|
||||||
url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
|
url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
|
||||||
},
|
},
|
||||||
_opts ->
|
_opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: webfinger_data}}
|
{:ok, %Tesla.Env{status: 200, body: webfinger_data}}
|
||||||
@ -69,7 +69,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://framapiaf.org/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://framapiaf.org/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 404, body: ""}}
|
{:ok, %Tesla.Env{status: 404, body: ""}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -82,7 +82,7 @@ defmodule Mobilizon.Federation.ActivityPub.ActorTest do
|
|||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{
|
%{
|
||||||
method: :get,
|
method: :get,
|
||||||
url: "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
|
url: "https://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
|
||||||
},
|
},
|
||||||
_opts ->
|
_opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: webfinger_data}}
|
{:ok, %Tesla.Env{status: 200, body: webfinger_data}}
|
||||||
|
@ -72,7 +72,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://social.tcit.fr/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://social.tcit.fr/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://pleroma.soykaf.com/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://pleroma.soykaf.com/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://framatube.org/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://framatube.org/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -154,7 +154,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://squeet.me/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://squeet.me/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -182,7 +182,7 @@ defmodule Mobilizon.Federation.WebFingerTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://demo.gancio.org/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://demo.gancio.org/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
{:ok, %Tesla.Env{status: 200, body: host_meta_xml}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do
|
|||||||
|
|
||||||
HostMetaClientMock
|
HostMetaClientMock
|
||||||
|> expect(:call, fn
|
|> expect(:call, fn
|
||||||
%{method: :get, url: "http://nowhere.absolute/.well-known/host-meta"}, _opts ->
|
%{method: :get, url: "https://nowhere.absolute/.well-known/host-meta"}, _opts ->
|
||||||
{:ok, %Tesla.Env{status: 404, body: ""}}
|
{:ok, %Tesla.Env{status: 404, body: ""}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ defmodule Mobilizon.GraphQL.Resolvers.MemberTest do
|
|||||||
%{
|
%{
|
||||||
method: :get,
|
method: :get,
|
||||||
url:
|
url:
|
||||||
"http://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute"
|
"https://nowhere.absolute/.well-known/webfinger?resource=acct:not_existing@nowhere.absolute"
|
||||||
},
|
},
|
||||||
_opts ->
|
_opts ->
|
||||||
{:ok, %Tesla.Env{status: 404, body: ""}}
|
{:ok, %Tesla.Env{status: 404, body: ""}}
|
||||||
|
Loading…
Reference in New Issue
Block a user