fix inbound federation

This commit is contained in:
sadposter 2021-12-14 13:58:16 +00:00
parent 144c06487a
commit 5d901c337e
7 changed files with 49 additions and 23 deletions

View file

@ -28,18 +28,19 @@ def run(["get", id | _rest]) 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

View file

@ -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()
@ -41,10 +51,12 @@ defp get_all(query, max_id \\ nil) do
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)

View file

@ -441,6 +441,7 @@ def run(["sign_out", nickname]) 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 @@ def run(["blocking", nickname]) 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 @@ def run(["timeline_query", nickname]) 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

View file

@ -17,7 +17,9 @@ def maybe_put_into_elasticsearch({:ok, activity}) 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)

View file

@ -46,6 +46,12 @@ defp parse(query) 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 @@ def search(%{assigns: %{user: user}} = _conn, %{q: query} = _params, _options) d
|> 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" => [],

View file

@ -398,9 +398,11 @@ def listen(user, data) 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

View file

@ -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