Merge remote-tracking branch 'upstream/develop' into spc2

This commit is contained in:
Moon Man 2024-05-16 23:38:53 +00:00
commit 4c3ef52a12
8 changed files with 33 additions and 9 deletions

View File

@ -0,0 +1 @@
Startup detection for configured MRF modules that are missing or incorrectly defined

View File

@ -1 +0,0 @@
Strip actor property from objects before federating

View File

@ -28,6 +28,7 @@ def verify! do
|> check_welcome_message_config!() |> check_welcome_message_config!()
|> check_rum!() |> check_rum!()
|> check_repo_pool_size!() |> check_repo_pool_size!()
|> check_mrfs()
|> handle_result() |> handle_result()
end end
@ -234,4 +235,25 @@ defp check_filter(filter, command_required) do
true true
end end
end end
defp check_mrfs(:ok) do
mrfs = Config.get!([:mrf, :policies])
missing_mrfs =
Enum.reduce(mrfs, [], fn x, acc ->
if Code.ensure_compiled(x) do
acc
else
acc ++ [x]
end
end)
if Enum.empty?(missing_mrfs) do
:ok
else
{:error, "The following MRF modules are configured but missing: #{inspect(missing_mrfs)}"}
end
end
defp check_mrfs(result), do: result
end end

View File

@ -9,7 +9,6 @@ defmodule Pleroma.Constants do
const(object_internal_fields, const(object_internal_fields,
do: [ do: [
"actor",
"reactions", "reactions",
"reaction_count", "reaction_count",
"likes", "likes",

View File

@ -1,10 +1,10 @@
{ {
"actor": "http://mastodon.example.org/users/admin", "actor": "http://2hu.gensokyo/users/raymoo",
"id": "http://mastodon.example.org/objects/1", "id": "http://2hu.gensokyo/objects/1",
"object": { "object": {
"attributedTo": "http://mastodon.example.org/users/admin", "attributedTo": "http://2hu.gensokyo/users/raymoo",
"content": "You expected a cute girl? Too bad. <script>alert('XSS')</script>", "content": "You expected a cute girl? Too bad. <script>alert('XSS')</script>",
"id": "http://mastodon.example.org/objects/2", "id": "http://2hu.gensokyo/objects/2",
"published": "2020-02-12T14:08:20Z", "published": "2020-02-12T14:08:20Z",
"to": [ "to": [
"http://2hu.gensokyo/users/marisa" "http://2hu.gensokyo/users/marisa"

View File

@ -221,6 +221,7 @@ test "it creates a zip archive with user data" do
"orderedItems" => [ "orderedItems" => [
%{ %{
"object" => %{ "object" => %{
"actor" => "http://cofe.io/users/cofe",
"content" => "status1", "content" => "status1",
"type" => "Note" "type" => "Note"
}, },
@ -228,6 +229,7 @@ test "it creates a zip archive with user data" do
}, },
%{ %{
"object" => %{ "object" => %{
"actor" => "http://cofe.io/users/cofe",
"content" => "status2" "content" => "status2"
} }
}, },

View File

@ -116,6 +116,8 @@ test "it fetches the actor if they aren't in our system" do
data = data =
File.read!("test/fixtures/create-chat-message.json") File.read!("test/fixtures/create-chat-message.json")
|> Jason.decode!() |> Jason.decode!()
|> Map.put("actor", "http://mastodon.example.org/users/admin")
|> put_in(["object", "actor"], "http://mastodon.example.org/users/admin")
_recipient = insert(:user, ap_id: List.first(data["to"]), local: true) _recipient = insert(:user, ap_id: List.first(data["to"]), local: true)

View File

@ -169,7 +169,7 @@ test "it inlines private announced objects" do
{:ok, modified} = Transmogrifier.prepare_outgoing(announce_activity.data) {:ok, modified} = Transmogrifier.prepare_outgoing(announce_activity.data)
assert modified["object"]["content"] == "hey" assert modified["object"]["content"] == "hey"
assert activity.actor == modified["object"]["attributedTo"] assert modified["object"]["actor"] == modified["object"]["attributedTo"]
end end
test "it turns mentions into tags" do test "it turns mentions into tags" do
@ -220,7 +220,7 @@ test "it sets the 'attributedTo' property to the actor of the object if it doesn
{:ok, activity} = CommonAPI.post(user, %{status: "hey"}) {:ok, activity} = CommonAPI.post(user, %{status: "hey"})
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) {:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
assert activity.actor == modified["object"]["attributedTo"] assert modified["object"]["actor"] == modified["object"]["attributedTo"]
end end
test "it strips internal hashtag data" do test "it strips internal hashtag data" do
@ -266,7 +266,6 @@ test "it strips internal fields" do
assert is_nil(modified["object"]["announcements"]) assert is_nil(modified["object"]["announcements"])
assert is_nil(modified["object"]["announcement_count"]) assert is_nil(modified["object"]["announcement_count"])
assert is_nil(modified["object"]["generator"]) assert is_nil(modified["object"]["generator"])
assert is_nil(modified["object"]["actor"])
end end
test "it strips internal fields of article" do test "it strips internal fields of article" do