fix inbound federation
This commit is contained in:
parent
144c06487a
commit
5d901c337e
7 changed files with 49 additions and 23 deletions
|
@ -28,18 +28,19 @@ defmodule Mix.Tasks.Pleroma.Activity do
|
||||||
def run(["delete_by_keyword", user, keyword | _rest]) do
|
def run(["delete_by_keyword", user, keyword | _rest]) do
|
||||||
start_pleroma()
|
start_pleroma()
|
||||||
u = User.get_by_nickname(user)
|
u = User.get_by_nickname(user)
|
||||||
|
|
||||||
Activity
|
Activity
|
||||||
|> Activity.with_preloaded_object()
|
|> Activity.with_preloaded_object()
|
||||||
|> Activity.restrict_deactivated_users()
|
|> Activity.restrict_deactivated_users()
|
||||||
|> Activity.Queries.by_author(u)
|
|> Activity.Queries.by_author(u)
|
||||||
|> query_with(keyword)
|
|> query_with(keyword)
|
||||||
|> Pagination.fetch_paginated(
|
|> Pagination.fetch_paginated(
|
||||||
%{"offset" => 0, "limit" => 20, "skip_order" => false},
|
%{"offset" => 0, "limit" => 20, "skip_order" => false},
|
||||||
:offset
|
:offset
|
||||||
)
|
)
|
||||||
|> Enum.map(fn x -> CommonAPI.delete(x.id, u) end)
|
|> Enum.map(fn x -> CommonAPI.delete(x.id, u) end)
|
||||||
|> Enum.count
|
|> Enum.count()
|
||||||
|> IO.puts
|
|> IO.puts()
|
||||||
end
|
end
|
||||||
|
|
||||||
defp query_with(q, search_query) do
|
defp query_with(q, search_query) do
|
||||||
|
|
|
@ -11,6 +11,16 @@ defmodule Mix.Tasks.Pleroma.Search do
|
||||||
|
|
||||||
@shortdoc "Manages elasticsearch"
|
@shortdoc "Manages elasticsearch"
|
||||||
|
|
||||||
|
def run(["import_since", d | _rest]) do
|
||||||
|
start_pleroma()
|
||||||
|
{:ok, since, _} = DateTime.from_iso8601(d)
|
||||||
|
|
||||||
|
from(a in Activity, where: not ilike(a.actor, "%/relay") and a.inserted_at > ^since)
|
||||||
|
|> Activity.with_preloaded_object()
|
||||||
|
|> Activity.with_preloaded_user_actor()
|
||||||
|
|> get_all
|
||||||
|
end
|
||||||
|
|
||||||
def run(["import" | _rest]) do
|
def run(["import" | _rest]) do
|
||||||
start_pleroma()
|
start_pleroma()
|
||||||
|
|
||||||
|
@ -40,11 +50,13 @@ defmodule Mix.Tasks.Pleroma.Search do
|
||||||
:ok
|
:ok
|
||||||
else
|
else
|
||||||
res
|
res
|
||||||
|> Enum.filter(fn x ->
|
|> Enum.filter(fn x ->
|
||||||
t = x.object
|
t =
|
||||||
|> Map.get(:data, %{})
|
x.object
|
||||||
|> Map.get("type", "")
|
|> Map.get(:data, %{})
|
||||||
t == "Note"
|
|> Map.get("type", "")
|
||||||
|
|
||||||
|
t == "Note"
|
||||||
end)
|
end)
|
||||||
|> Pleroma.Elasticsearch.bulk_post(:activities)
|
|> Pleroma.Elasticsearch.bulk_post(:activities)
|
||||||
|
|
||||||
|
|
|
@ -441,6 +441,7 @@ defmodule Mix.Tasks.Pleroma.User do
|
||||||
|
|
||||||
def run(["blocking", nickname]) do
|
def run(["blocking", nickname]) do
|
||||||
start_pleroma()
|
start_pleroma()
|
||||||
|
|
||||||
with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
|
with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
|
||||||
blocks = User.following_ap_ids(user)
|
blocks = User.following_ap_ids(user)
|
||||||
IO.inspect(blocks, limit: :infinity)
|
IO.inspect(blocks, limit: :infinity)
|
||||||
|
@ -449,12 +450,13 @@ defmodule Mix.Tasks.Pleroma.User do
|
||||||
|
|
||||||
def run(["timeline_query", nickname]) do
|
def run(["timeline_query", nickname]) do
|
||||||
start_pleroma()
|
start_pleroma()
|
||||||
params = %{ local: true }
|
params = %{local: true}
|
||||||
|
|
||||||
with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
|
with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do
|
||||||
params =
|
params =
|
||||||
params
|
params
|
||||||
|> Map.put(:type, ["Create", "Announce"])
|
|> Map.put(:type, ["Create", "Announce"])
|
||||||
|> Map.put(:limit, 20)
|
|> Map.put(:limit, 20)
|
||||||
|> Map.put(:blocking_user, user)
|
|> Map.put(:blocking_user, user)
|
||||||
|> Map.put(:muting_user, user)
|
|> Map.put(:muting_user, user)
|
||||||
|> Map.put(:reply_filtering_user, user)
|
|> Map.put(:reply_filtering_user, user)
|
||||||
|
@ -462,9 +464,10 @@ defmodule Mix.Tasks.Pleroma.User do
|
||||||
|> Map.put(:user, user)
|
|> Map.put(:user, user)
|
||||||
|> Map.put(:local_only, params[:local])
|
|> Map.put(:local_only, params[:local])
|
||||||
|> Map.delete(:local)
|
|> Map.delete(:local)
|
||||||
|
|
||||||
_activities =
|
_activities =
|
||||||
[user.ap_id | User.following(user)]
|
[user.ap_id | User.following(user)]
|
||||||
|> ActivityPub.fetch_activities(params)
|
|> ActivityPub.fetch_activities(params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,9 @@ defmodule Pleroma.Elasticsearch do
|
||||||
maybe_put_into_elasticsearch(activity)
|
maybe_put_into_elasticsearch(activity)
|
||||||
end
|
end
|
||||||
|
|
||||||
def maybe_put_into_elasticsearch(%{data: %{"type" => "Create"}, object: %{data: %{"type" => "Note"}}} = activity) do
|
def maybe_put_into_elasticsearch(
|
||||||
|
%{data: %{"type" => "Create"}, object: %{data: %{"type" => "Note"}}} = activity
|
||||||
|
) do
|
||||||
if Config.get([:search, :provider]) == Pleroma.Search.Elasticsearch do
|
if Config.get([:search, :provider]) == Pleroma.Search.Elasticsearch do
|
||||||
actor = Pleroma.Activity.user_actor(activity)
|
actor = Pleroma.Activity.user_actor(activity)
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,12 @@ defmodule Pleroma.Search.Elasticsearch do
|
||||||
@impl Pleroma.Search
|
@impl Pleroma.Search
|
||||||
def search(%{assigns: %{user: user}} = _conn, %{q: query} = _params, _options) do
|
def search(%{assigns: %{user: user}} = _conn, %{q: query} = _params, _options) do
|
||||||
q = %{
|
q = %{
|
||||||
|
size: 500,
|
||||||
|
terminate_after: 500,
|
||||||
|
timeout: "10s",
|
||||||
|
sort: [
|
||||||
|
%{"_timestamp" => "desc"}
|
||||||
|
],
|
||||||
query: %{
|
query: %{
|
||||||
bool: %{
|
bool: %{
|
||||||
must: parse(String.trim(query))
|
must: parse(String.trim(query))
|
||||||
|
@ -63,7 +69,8 @@ defmodule Pleroma.Search.Elasticsearch do
|
||||||
|> Map.get("hits", [])
|
|> Map.get("hits", [])
|
||||||
|> Enum.map(fn result -> result["_id"] end)
|
|> Enum.map(fn result -> result["_id"] end)
|
||||||
|> Pleroma.Activity.all_by_ids_with_object()
|
|> Pleroma.Activity.all_by_ids_with_object()
|
||||||
|> Enum.filter(fn x -> Visibility.visible_for_user?(x, user) end)
|
|> Enum.filter(fn x -> Visibility.visible_for_user?(x, user) end)
|
||||||
|
|> Enum.reverse()
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"accounts" => [],
|
"accounts" => [],
|
||||||
|
|
|
@ -398,9 +398,11 @@ defmodule Pleroma.Web.CommonAPI do
|
||||||
def post(user, %{status: _} = data) do
|
def post(user, %{status: _} = data) do
|
||||||
with {:ok, draft} <- ActivityDraft.create(user, data) do
|
with {:ok, draft} <- ActivityDraft.create(user, data) do
|
||||||
activity = ActivityPub.create(draft.changes, draft.preview?)
|
activity = ActivityPub.create(draft.changes, draft.preview?)
|
||||||
|
|
||||||
unless draft.preview? do
|
unless draft.preview? do
|
||||||
Pleroma.Elasticsearch.maybe_put_into_elasticsearch(activity)
|
Pleroma.Elasticsearch.maybe_put_into_elasticsearch(activity)
|
||||||
end
|
end
|
||||||
|
|
||||||
activity
|
activity
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -79,7 +79,6 @@ defmodule Pleroma.Web.Endpoint do
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Serve at "/" the static files from "priv/static" directory.
|
# Serve at "/" the static files from "priv/static" directory.
|
||||||
#
|
#
|
||||||
# You should set gzip to true if you are running phoenix.digest
|
# You should set gzip to true if you are running phoenix.digest
|
||||||
|
|
Loading…
Reference in a new issue