From 22b2451edd9e42ba96bf7f815383b2eaad9a5e56 Mon Sep 17 00:00:00 2001 From: faried nawaz Date: Wed, 21 Apr 2021 02:37:03 +0500 Subject: [PATCH 01/74] migration: add on_delete: :delete_all to hashtags object_id fk --- ...204354_delete_hashtags_objects_cascade.exs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs diff --git a/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs b/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs new file mode 100644 index 000000000..f4ebf53d6 --- /dev/null +++ b/priv/repo/migrations/20210420204354_delete_hashtags_objects_cascade.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.DeleteHashtagsObjectsCascade do + use Ecto.Migration + + def up do + execute("ALTER TABLE hashtags_objects DROP CONSTRAINT hashtags_objects_object_id_fkey") + + alter table(:hashtags_objects) do + modify(:object_id, references(:objects, on_delete: :delete_all)) + end + end + + def down do + execute("ALTER TABLE hashtags_objects DROP CONSTRAINT hashtags_objects_object_id_fkey") + + alter table(:hashtags_objects) do + modify(:object_id, references(:objects, on_delete: :nothing)) + end + end +end From a0c9a2b4cc8c22d6238b0f31239c1e655f47730f Mon Sep 17 00:00:00 2001 From: faried nawaz Date: Wed, 21 Apr 2021 02:38:59 +0500 Subject: [PATCH 02/74] mix prune_objects: remove unused hashtags after pruning remote objects --- lib/mix/tasks/pleroma/database.ex | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index e7f4b67a4..53ad58b64 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -96,6 +96,17 @@ def run(["prune_objects" | args]) do ) |> Repo.delete_all(timeout: :infinity) + prune_hashtags_query = """ + delete from hashtags + where id in ( + select id from hashtags as ht + left join hashtags_objects as hto + on hto.hashtag_id = ht.id + where hto.hashtag_id is null) + """ + + Repo.query(prune_hashtags_query) + if Keyword.get(options, :vacuum) do Maintenance.vacuum("full") end From 5be9d139816fa40ff6227950b58f3c6cea01fc81 Mon Sep 17 00:00:00 2001 From: faried nawaz Date: Wed, 21 Apr 2021 03:52:32 +0500 Subject: [PATCH 03/74] a better query to delete from hashtags old query: Delete on hashtags (cost=5089.81..5521.63 rows=6160 width=18) -> Hash Semi Join (cost=5089.81..5521.63 rows=6160 width=18) Hash Cond: (hashtags.id = ht.id) -> Seq Scan on hashtags (cost=0.00..317.28 rows=17528 width=14) -> Hash (cost=5012.81..5012.81 rows=6160 width=20) -> Merge Anti Join (cost=0.70..5012.81 rows=6160 width=20) Merge Cond: (ht.id = hto.hashtag_id) -> Index Scan using hashtags_pkey on hashtags ht (cost=0.29..610.53 rows=17528 width=14) -> Index Scan using hashtags_objects_pkey on hashtags_objects hto (cost=0.42..3506.48 rows=68158 width=14) new query: Delete on hashtags ht (cost=0.70..5012.81 rows=6160 width=12) -> Merge Anti Join (cost=0.70..5012.81 rows=6160 width=12) Merge Cond: (ht.id = hto.hashtag_id) -> Index Scan using hashtags_pkey on hashtags ht (cost=0.29..610.53 rows=17528 width=14) -> Index Scan using hashtags_objects_pkey on hashtags_objects hto (cost=0.42..3506.48 rows=68158 width=14) --- lib/mix/tasks/pleroma/database.ex | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 53ad58b64..bcde07774 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -97,12 +97,10 @@ def run(["prune_objects" | args]) do |> Repo.delete_all(timeout: :infinity) prune_hashtags_query = """ - delete from hashtags - where id in ( - select id from hashtags as ht - left join hashtags_objects as hto - on hto.hashtag_id = ht.id - where hto.hashtag_id is null) + delete from hashtags as ht + where not exists ( + select 1 from hashtags_objects hto + where ht.id = hto.hashtag_id) """ Repo.query(prune_hashtags_query) From da1ee5c46ac4296232ac5cd43f4357136608af48 Mon Sep 17 00:00:00 2001 From: Guy Sheffer Date: Mon, 31 May 2021 19:17:49 +0300 Subject: [PATCH 04/74] Add Raspberry Pi install instructions --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 7a05b9e48..0099fe990 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,9 @@ Currently Pleroma is not packaged by any OS/Distros, but if you want to package ### Docker While we don’t provide docker files, other people have written very good ones. Take a look at or . +### Raspberry Pi +Community maintained Raspberry Pi image that you can flash and run Pleroma on your Raspberry Pi. Available here . + ### Compilation Troubleshooting If you ever encounter compilation issues during the updating of Pleroma, you can try these commands and see if they fix things: From 2c401dafa1105b73f4b4141f96e8414612625420 Mon Sep 17 00:00:00 2001 From: io Date: Fri, 4 Jun 2021 04:15:54 +0000 Subject: [PATCH 05/74] Improve opengraph embeds This brings them more in line with Mastodon. - Deduplicates display name from the title and content - Removes arbitrary limits on the size of the embedded image - Removes angled double quotes from embed descriptions. These would normally just indicate that the content is a quote, but that is already implied by the content being in an embed. --- .../web/metadata/providers/open_graph.ex | 20 +++---------------- .../web/metadata/providers/twitter_card.ex | 13 ++++-------- .../metadata/providers/twitter_card_test.exs | 10 ++++++---- 3 files changed, 13 insertions(+), 30 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 1687b2634..18ddde84b 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -19,31 +19,18 @@ def build_tags(%{ }) do attachments = build_attachments(object) scrubbed_content = Utils.scrub_html_and_truncate(object) - # Zero width space - content = - if scrubbed_content != "" and scrubbed_content != "\u200B" do - ": “" <> scrubbed_content <> "”" - else - "" - end - # Most previews only show og:title which is inconvenient. Instagram - # hacks this by putting the description in the title and making the - # description longer prefixed by how many likes and shares the post - # has. Here we use the descriptive nickname in the title, and expand - # the full account & nickname in the description. We also use the cute^Wevil - # smart quotes around the status text like Instagram, too. [ {:meta, [ property: "og:title", - content: "#{user.name}" <> content + content: Utils.user_name_string(user) ], []}, {:meta, [property: "og:url", content: url], []}, {:meta, [ property: "og:description", - content: "#{Utils.user_name_string(user)}" <> content + content: scrubbed_content ], []}, {:meta, [property: "og:type", content: "website"], []} ] ++ @@ -95,8 +82,7 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do "image" -> [ {:meta, [property: "og:image", content: Utils.attachment_url(url["href"])], []}, - {:meta, [property: "og:image:width", content: 150], []}, - {:meta, [property: "og:image:height", content: 150], []} + {:meta, [property: "og:image:alt", content: attachment["name"]], []} | acc ] diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index 58fc05cf9..589989a9d 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -16,17 +16,10 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do def build_tags(%{activity_id: id, object: object, user: user}) do attachments = build_attachments(id, object) scrubbed_content = Utils.scrub_html_and_truncate(object) - # Zero width space - content = - if scrubbed_content != "" and scrubbed_content != "\u200B" do - "“" <> scrubbed_content <> "”" - else - "" - end [ title_tag(user), - {:meta, [property: "twitter:description", content: content], []} + {:meta, [property: "twitter:description", content: scrubbed_content], []} ] ++ if attachments == [] or Metadata.activity_nsfw?(object) do [ @@ -91,7 +84,9 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do {:meta, [property: "twitter:card", content: "player"], []}, {:meta, [property: "twitter:player", content: player_url(id)], []}, {:meta, [property: "twitter:player:width", content: "480"], []}, - {:meta, [property: "twitter:player:height", content: "480"], []} + {:meta, [property: "twitter:player:height", content: "480"], []}, + {:meta, [property: "twitter:player:stream", content: url["href"]], []}, + {:meta, [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} | acc ] diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index a35e44356..3a2f7ca31 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -46,7 +46,7 @@ test "it uses summary twittercard if post has no attachment" do assert [ {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, - {:meta, [property: "twitter:description", content: "“pleroma in a nutshell”"], []}, + {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, {:meta, [property: "twitter:image", content: "http://localhost:4001/images/avi.png"], []}, {:meta, [property: "twitter:card", content: "summary"], []} @@ -91,7 +91,7 @@ test "it renders avatar not attachment if post is nsfw and unfurl_nsfw is disabl assert [ {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, - {:meta, [property: "twitter:description", content: "“pleroma in a nutshell”"], []}, + {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, {:meta, [property: "twitter:image", content: "http://localhost:4001/images/avi.png"], []}, {:meta, [property: "twitter:card", content: "summary"], []} @@ -134,7 +134,7 @@ test "it renders supported types of attachments and skips unknown types" do assert [ {:meta, [property: "twitter:title", content: Utils.user_name_string(user)], []}, - {:meta, [property: "twitter:description", content: "“pleroma in a nutshell”"], []}, + {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, {:meta, [property: "twitter:card", content: "summary_large_image"], []}, {:meta, [property: "twitter:player", content: "https://pleroma.gov/tenshi.png"], []}, {:meta, [property: "twitter:card", content: "player"], []}, @@ -144,7 +144,9 @@ test "it renders supported types of attachments and skips unknown types" do content: Router.Helpers.o_status_url(Endpoint, :notice_player, activity.id) ], []}, {:meta, [property: "twitter:player:width", content: "480"], []}, - {:meta, [property: "twitter:player:height", content: "480"], []} + {:meta, [property: "twitter:player:height", content: "480"], []}, + {:meta, [property: "twitter:player:stream", content: "https://pleroma.gov/about/juche.webm"], []}, + {:meta, [property: "twitter:player:stream:content_type", content: "video/webm"], []} ] == result end end From 7d350b73f58664eb822efaa5f522fcf2bd38f669 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 4 Jun 2021 19:57:48 +0200 Subject: [PATCH 06/74] web endpoint: Use Config.get directly instead of a tuple Fixes a lot of warnings like the following while running the testsuite: warning: passing a {module, function, args} tuple to Plug.Parsers.MULTIPART is deprecated. Please see Plug.Parsers.MULTIPART module docs for better approaches to configuration This might mean no more dynamic configuration but there seems to be the same limitation two lines underneath anyway. --- lib/pleroma/web/endpoint.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 8e274de88..7591d0ae5 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -102,7 +102,7 @@ defmodule Pleroma.Web.Endpoint do plug(Plug.Parsers, parsers: [ :urlencoded, - {:multipart, length: {Config, :get, [[:instance, :upload_limit]]}}, + {:multipart, length: Config.get([:instance, :upload_limit])}, :json ], pass: ["*/*"], From d5daf59f8863e8762041becff0d0878edd15440e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Jun 2021 15:35:56 -0500 Subject: [PATCH 07/74] Fix warning for misuse of clear_config/2 The old warning message was producing an improperly formatted suggestion. --- test/support/helpers.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/support/helpers.ex b/test/support/helpers.ex index 856a6a376..34f1505d0 100644 --- a/test/support/helpers.ex +++ b/test/support/helpers.ex @@ -42,8 +42,7 @@ defmacro clear_config(config_path, temp_setting) do # Displaying a warning to prevent unintentional clearing of all but one keys in section if Keyword.keyword?(temp_setting) and length(temp_setting) == 1 do Logger.warn( - "Please change to `clear_config([section]); clear_config([section, key], value)`: " <> - "#{inspect(config_path)}, #{inspect(temp_setting)}" + "Please change `clear_config([section], key: value)` to `clear_config([section, key], value)`" ) end From eb150e7d883b3bb01991462e409969375d6b77da Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Jun 2021 15:50:10 -0500 Subject: [PATCH 08/74] Document OTP 24 support so we remember to add it to the official release notes / announcement --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d1ff5b7b..24c029bf3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - **Breaking:** Configuration: `:chat, enabled` moved to `:shout, enabled` and `:instance, chat_limit` moved to `:shout, limit` +- Support for Erlang/OTP 24 - The `application` metadata returned with statuses is no longer hardcoded. Apps that want to display these details will now have valid data for new posts after this change. - HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising. - Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs. From 1c3fe43d231428fee392afd726363193fdcb8008 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 2 Jun 2021 16:34:32 -0500 Subject: [PATCH 09/74] ReverseProxy: create Client.Wrapper to call client from config Speeds up recompilation by reducing compile-time cycles --- lib/pleroma/reverse_proxy.ex | 2 +- lib/pleroma/reverse_proxy/client.ex | 18 ------------- lib/pleroma/reverse_proxy/client/wrapper.ex | 29 +++++++++++++++++++++ 3 files changed, 30 insertions(+), 19 deletions(-) create mode 100644 lib/pleroma/reverse_proxy/client/wrapper.ex diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex index 406f7e2b8..ec69a1779 100644 --- a/lib/pleroma/reverse_proxy.ex +++ b/lib/pleroma/reverse_proxy.ex @@ -411,7 +411,7 @@ defp increase_read_duration(_) do {:ok, :no_duration_limit, :no_duration_limit} end - defp client, do: Pleroma.ReverseProxy.Client + defp client, do: Pleroma.ReverseProxy.Client.Wrapper defp track_failed_url(url, error, opts) do ttl = diff --git a/lib/pleroma/reverse_proxy/client.ex b/lib/pleroma/reverse_proxy/client.ex index 8698fa2e1..75243d2dc 100644 --- a/lib/pleroma/reverse_proxy/client.ex +++ b/lib/pleroma/reverse_proxy/client.ex @@ -17,22 +17,4 @@ defmodule Pleroma.ReverseProxy.Client do @callback stream_body(map()) :: {:ok, binary(), map()} | :done | {:error, atom() | String.t()} @callback close(reference() | pid() | map()) :: :ok - - def request(method, url, headers, body \\ "", opts \\ []) do - client().request(method, url, headers, body, opts) - end - - def stream_body(ref), do: client().stream_body(ref) - - def close(ref), do: client().close(ref) - - defp client do - :tesla - |> Application.get_env(:adapter) - |> client() - end - - defp client(Tesla.Adapter.Hackney), do: Pleroma.ReverseProxy.Client.Hackney - defp client(Tesla.Adapter.Gun), do: Pleroma.ReverseProxy.Client.Tesla - defp client(_), do: Pleroma.Config.get!(Pleroma.ReverseProxy.Client) end diff --git a/lib/pleroma/reverse_proxy/client/wrapper.ex b/lib/pleroma/reverse_proxy/client/wrapper.ex new file mode 100644 index 000000000..06dd29fea --- /dev/null +++ b/lib/pleroma/reverse_proxy/client/wrapper.ex @@ -0,0 +1,29 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.ReverseProxy.Client.Wrapper do + @moduledoc "Meta-client that calls the appropriate client from the config." + @behaviour Pleroma.ReverseProxy.Client + + @impl true + def request(method, url, headers, body \\ "", opts \\ []) do + client().request(method, url, headers, body, opts) + end + + @impl true + def stream_body(ref), do: client().stream_body(ref) + + @impl true + def close(ref), do: client().close(ref) + + defp client do + :tesla + |> Application.get_env(:adapter) + |> client() + end + + defp client(Tesla.Adapter.Hackney), do: Pleroma.ReverseProxy.Client.Hackney + defp client(Tesla.Adapter.Gun), do: Pleroma.ReverseProxy.Client.Tesla + defp client(_), do: Pleroma.Config.get!(Pleroma.ReverseProxy.Client) +end From 879c2db0bdb875fc2b3139cf60b1fd03bb66a01b Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 11:18:14 -0500 Subject: [PATCH 10/74] Docs: /api/v1/pleroma/notification_settings --> /api/pleroma/notification_settings --- docs/development/API/pleroma_api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/development/API/pleroma_api.md b/docs/development/API/pleroma_api.md index d896f0ce7..8f6422da0 100644 --- a/docs/development/API/pleroma_api.md +++ b/docs/development/API/pleroma_api.md @@ -300,7 +300,7 @@ See [Admin-API](admin_api.md) * Note: Behaves exactly the same as `POST /api/v1/upload`. Can only accept images - any attempt to upload non-image files will be met with `HTTP 415 Unsupported Media Type`. -## `/api/v1/pleroma/notification_settings` +## `/api/pleroma/notification_settings` ### Updates user notification settings * Method `PUT` * Authentication: required From fe4c4a7178ac4df76a9f4a83c05f8445c5ff9bf2 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 14:22:08 -0500 Subject: [PATCH 11/74] MRF: create MRF.Policy behaviour separate from MRF module Speeds up recompilation by reducing compile-time deps --- docs/configuration/mrf.md | 2 +- lib/pleroma/web/activity_pub/mrf.ex | 11 ----------- .../mrf/activity_expiration_policy.ex | 2 +- .../activity_pub/mrf/anti_followbot_policy.ex | 2 +- .../activity_pub/mrf/anti_link_spam_policy.ex | 2 +- lib/pleroma/web/activity_pub/mrf/drop_policy.ex | 2 +- .../web/activity_pub/mrf/ensure_re_prepended.ex | 2 +- .../web/activity_pub/mrf/follow_bot_policy.ex | 2 +- .../mrf/force_bot_unlisted_policy.ex | 2 +- .../web/activity_pub/mrf/hashtag_policy.ex | 2 +- .../web/activity_pub/mrf/hellthread_policy.ex | 2 +- .../web/activity_pub/mrf/keyword_policy.ex | 2 +- .../mrf/media_proxy_warming_policy.ex | 2 +- .../web/activity_pub/mrf/mention_policy.ex | 2 +- .../web/activity_pub/mrf/no_empty_policy.ex | 2 +- lib/pleroma/web/activity_pub/mrf/no_op_policy.ex | 2 +- .../mrf/no_placeholder_text_policy.ex | 2 +- .../web/activity_pub/mrf/normalize_markup.ex | 2 +- .../web/activity_pub/mrf/object_age_policy.ex | 2 +- lib/pleroma/web/activity_pub/mrf/policy.ex | 16 ++++++++++++++++ .../web/activity_pub/mrf/reject_non_public.ex | 2 +- .../web/activity_pub/mrf/simple_policy.ex | 2 +- .../web/activity_pub/mrf/steal_emoji_policy.ex | 2 +- .../web/activity_pub/mrf/subchain_policy.ex | 2 +- lib/pleroma/web/activity_pub/mrf/tag_policy.ex | 2 +- .../activity_pub/mrf/user_allow_list_policy.ex | 2 +- .../web/activity_pub/mrf/vocabulary_policy.ex | 2 +- test/fixtures/modules/good_mrf.ex | 2 +- test/support/mrf_module_mock.ex | 2 +- 29 files changed, 43 insertions(+), 38 deletions(-) create mode 100644 lib/pleroma/web/activity_pub/mrf/policy.ex diff --git a/docs/configuration/mrf.md b/docs/configuration/mrf.md index 9e8c0a2d7..5618634a2 100644 --- a/docs/configuration/mrf.md +++ b/docs/configuration/mrf.md @@ -82,7 +82,7 @@ For example, here is a sample policy module which rewrites all messages to "new ```elixir defmodule Pleroma.Web.ActivityPub.MRF.RewritePolicy do @moduledoc "MRF policy which rewrites all Notes to have 'new message content'." - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy # Catch messages which contain Note objects with actual data to filter. # Capture the object as `object`, the message content as `content` and the diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex index f2fec3ff6..250dac695 100644 --- a/lib/pleroma/web/activity_pub/mrf.ex +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -51,17 +51,6 @@ defmodule Pleroma.Web.ActivityPub.MRF do @required_description_keys [:key, :related_policy] - @callback filter(Map.t()) :: {:ok | :reject, Map.t()} - @callback describe() :: {:ok | :error, Map.t()} - @callback config_description() :: %{ - optional(:children) => [map()], - key: atom(), - related_policy: String.t(), - label: String.t(), - description: String.t() - } - @optional_callbacks config_description: 0 - def filter(policies, %{} = message) do policies |> Enum.reduce({:ok, message}, fn diff --git a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex index fc347236e..e78254280 100644 --- a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy do @moduledoc "Adds expiration to all local Create activities" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(activity) do diff --git a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex index b8bfdc3ce..851e95d22 100644 --- a/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do @moduledoc "Prevent followbots from following with a bit of heuristic" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy # XXX: this should become User.normalize_by_ap_id() or similar, really. defp normalize_by_ap_id(%{"id" => id}), do: User.get_cached_by_ap_id(id) diff --git a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex index 40b19c3ab..cdf17fd28 100644 --- a/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do alias Pleroma.User - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy require Logger diff --git a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex index 378175205..b3ff86eed 100644 --- a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.DropPolicy do require Logger @moduledoc "Drop and log everything received" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(object) do diff --git a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex index 2d3a10889..fad8d873b 100644 --- a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex +++ b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrepended do alias Pleroma.Object @moduledoc "Ensure a re: is prepended on replies to a post with a Subject" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @reply_prefix Regex.compile!("^re:[[:space:]]*", [:caseless]) diff --git a/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex b/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex index 7307c9c14..7cf7de068 100644 --- a/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/follow_bot_policy.ex @@ -1,5 +1,5 @@ defmodule Pleroma.Web.ActivityPub.MRF.FollowBotPolicy do - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy alias Pleroma.Config alias Pleroma.User alias Pleroma.Web.CommonAPI diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex index 51dbb1ad4..11871375e 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy do alias Pleroma.User - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @moduledoc "Remove bot posts from federated timeline" require Pleroma.Constants diff --git a/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex b/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex index def0c437c..b7db4fa3d 100644 --- a/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hashtag_policy.ex @@ -14,7 +14,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HashtagPolicy do Note: This MRF Policy is always enabled, if you want to disable it you have to set empty lists. """ - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp check_reject(message, hashtags) do if Enum.any?(Config.get([:mrf_hashtag, :reject]), fn match -> match in hashtags end) do diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 768a669f3..504bd4d57 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do @moduledoc "Block messages with too much mentions (configurable)" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp delist_message(message, threshold) when threshold > 0 do follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address diff --git a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex index f91b51bcf..646008dd9 100644 --- a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do @moduledoc "Reject or Word-Replace messages with a keyword or regex" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp string_matches?(string, _) when not is_binary(string) do false end diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index 8dbf44071..25289d3a4 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do @moduledoc "Preloads any attachments in the MediaProxy cache by prefetching them" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy alias Pleroma.HTTP alias Pleroma.Web.MediaProxy diff --git a/lib/pleroma/web/activity_pub/mrf/mention_policy.ex b/lib/pleroma/web/activity_pub/mrf/mention_policy.ex index 877277d4f..05b28e4f5 100644 --- a/lib/pleroma/web/activity_pub/mrf/mention_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/mention_policy.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MentionPolicy do @moduledoc "Block messages which mention a user" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(%{"type" => "Create"} = message) do diff --git a/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex b/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex index f4c5db05c..80bef591e 100644 --- a/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/no_empty_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoEmptyPolicy do @moduledoc "Filter local activities which have no content" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy alias Pleroma.Web.Endpoint diff --git a/lib/pleroma/web/activity_pub/mrf/no_op_policy.ex b/lib/pleroma/web/activity_pub/mrf/no_op_policy.ex index 2ebc0674d..25031946c 100644 --- a/lib/pleroma/web/activity_pub/mrf/no_op_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/no_op_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoOpPolicy do @moduledoc "Does nothing (lets the messages go through unmodified)" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(object) do diff --git a/lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex b/lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex index b658d7d41..90272766c 100644 --- a/lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy do @moduledoc "Ensure no content placeholder is present (such as the dot from mastodon)" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter( diff --git a/lib/pleroma/web/activity_pub/mrf/normalize_markup.ex b/lib/pleroma/web/activity_pub/mrf/normalize_markup.ex index 2ad3fde0b..0d7146738 100644 --- a/lib/pleroma/web/activity_pub/mrf/normalize_markup.ex +++ b/lib/pleroma/web/activity_pub/mrf/normalize_markup.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NormalizeMarkup do @moduledoc "Scrub configured hypertext markup" alias Pleroma.HTML - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(%{"type" => "Create", "object" => child_object} = object) do diff --git a/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex b/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex index aac24c0ec..9a211fd44 100644 --- a/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/object_age_policy.ex @@ -9,7 +9,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy do require Pleroma.Constants @moduledoc "Filter activities depending on their age" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp check_date(%{"object" => %{"published" => published}} = message) do with %DateTime{} = now <- DateTime.utc_now(), diff --git a/lib/pleroma/web/activity_pub/mrf/policy.ex b/lib/pleroma/web/activity_pub/mrf/policy.ex new file mode 100644 index 000000000..a4a960c01 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf/policy.ex @@ -0,0 +1,16 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.Policy do + @callback filter(Map.t()) :: {:ok | :reject, Map.t()} + @callback describe() :: {:ok | :error, Map.t()} + @callback config_description() :: %{ + optional(:children) => [map()], + key: atom(), + related_policy: String.t(), + label: String.t(), + description: String.t() + } + @optional_callbacks config_description: 0 +end diff --git a/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex index 47a43c6a2..b9d3e52c7 100644 --- a/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex +++ b/lib/pleroma/web/activity_pub/mrf/reject_non_public.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do alias Pleroma.Config alias Pleroma.User - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy require Pleroma.Constants diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index d40348cb1..30562ac08 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do @moduledoc "Filter activities depending on their origin instance" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy alias Pleroma.Config alias Pleroma.FollowingRelationship diff --git a/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex b/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex index 4c5e33619..c28f14a41 100644 --- a/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/steal_emoji_policy.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.StealEmojiPolicy do alias Pleroma.Config @moduledoc "Detect new emojis by their shortcode and steals them" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp accept_host?(host), do: host in Config.get([:mrf_steal_emoji, :hosts], []) diff --git a/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex b/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex index 86965d47b..f84d7cc71 100644 --- a/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/subchain_policy.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SubchainPolicy do require Logger - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp lookup_subchain(actor) do with matches <- Config.get([:mrf_subchain, :match_actor]), diff --git a/lib/pleroma/web/activity_pub/mrf/tag_policy.ex b/lib/pleroma/web/activity_pub/mrf/tag_policy.ex index 528093ac0..56ae654f2 100644 --- a/lib/pleroma/web/activity_pub/mrf/tag_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/tag_policy.ex @@ -4,7 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do alias Pleroma.User - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @moduledoc """ Apply policies based on user tags diff --git a/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex b/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex index 65b371bf3..1bcb3688b 100644 --- a/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/user_allow_list_policy.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy do alias Pleroma.Config @moduledoc "Accept-list of users from specified instances" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy defp filter_by_list(object, []), do: {:ok, object} diff --git a/lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex b/lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex index ce559a239..20f57f609 100644 --- a/lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicy do @moduledoc "Filter messages which belong to certain activity vocabularies" - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(%{"type" => "Undo", "object" => child_message} = message) do diff --git a/test/fixtures/modules/good_mrf.ex b/test/fixtures/modules/good_mrf.ex index 39d0f14ec..5afa1c1d1 100644 --- a/test/fixtures/modules/good_mrf.ex +++ b/test/fixtures/modules/good_mrf.ex @@ -1,5 +1,5 @@ defmodule Fixtures.Modules.GoodMRF do - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(a), do: {:ok, a} diff --git a/test/support/mrf_module_mock.ex b/test/support/mrf_module_mock.ex index 4dfdeb3b4..4d21d7fe0 100644 --- a/test/support/mrf_module_mock.ex +++ b/test/support/mrf_module_mock.ex @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule MRFModuleMock do - @behaviour Pleroma.Web.ActivityPub.MRF + @behaviour Pleroma.Web.ActivityPub.MRF.Policy @impl true def filter(message), do: {:ok, message} From 6fcfa33e4ec39c66e07ca8187f618b9c6f5c25c3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 14:51:25 -0500 Subject: [PATCH 12/74] Fix MRF.config_descriptions/0 --- lib/pleroma/web/activity_pub/mrf.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex index 250dac695..ac00fa54b 100644 --- a/lib/pleroma/web/activity_pub/mrf.ex +++ b/lib/pleroma/web/activity_pub/mrf.ex @@ -131,7 +131,7 @@ def describe(policies) do def describe, do: get_policies() |> describe() def config_descriptions do - Pleroma.Web.ActivityPub.MRF + Pleroma.Web.ActivityPub.MRF.Policy |> Pleroma.Docs.Generator.list_behaviour_implementations() |> config_descriptions() end From bc51dea4257d4faaff70f8511dcd3702489ebb74 Mon Sep 17 00:00:00 2001 From: feld Date: Mon, 7 Jun 2021 20:02:28 +0000 Subject: [PATCH 13/74] Update lib/mix/tasks/pleroma/database.ex --- lib/mix/tasks/pleroma/database.ex | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index bcde07774..57f73d12b 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -97,10 +97,10 @@ def run(["prune_objects" | args]) do |> Repo.delete_all(timeout: :infinity) prune_hashtags_query = """ - delete from hashtags as ht - where not exists ( - select 1 from hashtags_objects hto - where ht.id = hto.hashtag_id) + DELETE FROM hashtags AS ht + WHERE NOT EXISTS ( + SELECT 1 FROM hashtags_objects hto + WHERE ht.id = hto.hashtag_id) """ Repo.query(prune_hashtags_query) From c31338abe6cc371c877d04a47f06ba5800653e50 Mon Sep 17 00:00:00 2001 From: feld Date: Mon, 7 Jun 2021 20:04:27 +0000 Subject: [PATCH 14/74] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bb4b1e73..209432409 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Don't crash so hard when email settings are invalid. +- Mix task: pleroma.database prune_objects ## Unreleased (Patch) From 4ca380490f1e42ef6b12c4b12ba9efabb89472fd Mon Sep 17 00:00:00 2001 From: feld Date: Mon, 7 Jun 2021 20:05:18 +0000 Subject: [PATCH 15/74] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 209432409..2c6f57691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Don't crash so hard when email settings are invalid. -- Mix task: pleroma.database prune_objects +- Mix task `pleroma.database prune_objects` ## Unreleased (Patch) From 10abbf13ba9ba036e20e4018279c5a8f2faa19b9 Mon Sep 17 00:00:00 2001 From: feld Date: Mon, 7 Jun 2021 20:07:27 +0000 Subject: [PATCH 16/74] Update CHANGELOG.md --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18879a6df..61796271a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Checking activated Upload Filters for required commands. - Mix task `pleroma.database prune_objects` +### Removed + +- **Breaking**: Remove deprecated `/api/qvitter/statuses/notifications/read` (replaced by `/api/v1/pleroma/notifications/read`) + ## Unreleased (Patch) ### Fixed From 9a357d63f0d8381492a0ffe0e507f233fc35fbf8 Mon Sep 17 00:00:00 2001 From: feld Date: Mon, 7 Jun 2021 20:07:59 +0000 Subject: [PATCH 17/74] Update CHANGELOG.md --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61796271a..daa8f2ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mix task `pleroma.database prune_objects` ### Removed - - **Breaking**: Remove deprecated `/api/qvitter/statuses/notifications/read` (replaced by `/api/v1/pleroma/notifications/read`) ## Unreleased (Patch) From 264458531ad1024134fc2f53eded1d1075394536 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 7 Jun 2021 15:47:50 -0500 Subject: [PATCH 18/74] Formatting --- lib/pleroma/web/metadata/providers/twitter_card.ex | 3 ++- test/pleroma/web/metadata/providers/twitter_card_test.exs | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index 589989a9d..12c372d77 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -86,7 +86,8 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do {:meta, [property: "twitter:player:width", content: "480"], []}, {:meta, [property: "twitter:player:height", content: "480"], []}, {:meta, [property: "twitter:player:stream", content: url["href"]], []}, - {:meta, [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} + {:meta, + [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} | acc ] diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index 3a2f7ca31..196bca20a 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -145,7 +145,11 @@ test "it renders supported types of attachments and skips unknown types" do ], []}, {:meta, [property: "twitter:player:width", content: "480"], []}, {:meta, [property: "twitter:player:height", content: "480"], []}, - {:meta, [property: "twitter:player:stream", content: "https://pleroma.gov/about/juche.webm"], []}, + {:meta, + [ + property: "twitter:player:stream", + content: "https://pleroma.gov/about/juche.webm" + ], []}, {:meta, [property: "twitter:player:stream:content_type", content: "video/webm"], []} ] == result end From d87dfcb5f0f91ad6fa9fccd47996c2bc54701553 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 15:51:52 -0500 Subject: [PATCH 19/74] Put custom guards in Web.Utils.Guards Speeds up recompilation by removing a compile-time cycle on AdminAPI.Search --- lib/pleroma/user/query.ex | 2 +- lib/pleroma/web/admin_api/search.ex | 6 ------ lib/pleroma/web/utils/guards.ex | 13 +++++++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 lib/pleroma/web/utils/guards.ex diff --git a/lib/pleroma/user/query.ex b/lib/pleroma/user/query.ex index fa46545da..ac807fc79 100644 --- a/lib/pleroma/user/query.ex +++ b/lib/pleroma/user/query.ex @@ -27,7 +27,7 @@ defmodule Pleroma.User.Query do - e.g. Pleroma.User.Query.build(%{ap_id: ["http://ap_id1", "http://ap_id2"]}) """ import Ecto.Query - import Pleroma.Web.AdminAPI.Search, only: [not_empty_string: 1] + import Pleroma.Web.Utils.Guards, only: [not_empty_string: 1] alias Pleroma.FollowingRelationship alias Pleroma.User diff --git a/lib/pleroma/web/admin_api/search.ex b/lib/pleroma/web/admin_api/search.ex index eeeebdf4e..01d974479 100644 --- a/lib/pleroma/web/admin_api/search.ex +++ b/lib/pleroma/web/admin_api/search.ex @@ -10,12 +10,6 @@ defmodule Pleroma.Web.AdminAPI.Search do @page_size 50 - defmacro not_empty_string(string) do - quote do - is_binary(unquote(string)) and unquote(string) != "" - end - end - @spec user(map()) :: {:ok, [User.t()], pos_integer()} def user(params \\ %{}) do query = diff --git a/lib/pleroma/web/utils/guards.ex b/lib/pleroma/web/utils/guards.ex new file mode 100644 index 000000000..aea7b6314 --- /dev/null +++ b/lib/pleroma/web/utils/guards.ex @@ -0,0 +1,13 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Utils.Guards do + @moduledoc """ + Project-wide custom guards. + See: https://hexdocs.pm/elixir/master/patterns-and-guards.html#custom-patterns-and-guards-expressions + """ + + @doc "Checks for non-empty string" + defguard not_empty_string(string) when is_binary(string) and string != "" +end From f5ef7fe43bb42d5cd641666194f1d780499e1e09 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 7 Jun 2021 16:06:53 -0500 Subject: [PATCH 20/74] Fix test warnings --- .../controllers/config_controller_test.exs | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/test/pleroma/web/admin_api/controllers/config_controller_test.exs b/test/pleroma/web/admin_api/controllers/config_controller_test.exs index d8ca07cd3..7c786c389 100644 --- a/test/pleroma/web/admin_api/controllers/config_controller_test.exs +++ b/test/pleroma/web/admin_api/controllers/config_controller_test.exs @@ -1427,30 +1427,27 @@ test "custom instance thumbnail", %{conn: conn} do ] } - res = - assert conn - |> put_req_header("content-type", "application/json") - |> post("/api/pleroma/admin/config", %{"configs" => [params]}) - |> json_response_and_validate_schema(200) + assert conn + |> put_req_header("content-type", "application/json") + |> post("/api/pleroma/admin/config", %{"configs" => [params]}) + |> json_response_and_validate_schema(200) == + %{ + "configs" => [ + %{ + "db" => [":instance_thumbnail"], + "group" => ":pleroma", + "key" => ":instance", + "value" => params["value"] + } + ], + "need_reboot" => false + } - assert res == %{ - "configs" => [ - %{ - "db" => [":instance_thumbnail"], - "group" => ":pleroma", - "key" => ":instance", - "value" => params["value"] - } - ], - "need_reboot" => false - } - - _res = - assert conn - |> get("/api/v1/instance") - |> json_response_and_validate_schema(200) - - assert res = %{"thumbnail" => "https://example.com/media/new_thumbnail.jpg"} + assert conn + |> get("/api/v1/instance") + |> json_response_and_validate_schema(200) + |> Map.take(["thumbnail"]) == + %{"thumbnail" => "https://example.com/media/new_thumbnail.jpg"} end test "Concurrent Limiter", %{conn: conn} do From a5ae0432ed2353c714a4c212e418e6cc0ea91eb6 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 7 Jun 2021 16:09:47 -0500 Subject: [PATCH 21/74] Test was named incorrectly and did not execute --- .../pleroma/web/{shout_channel_test.ex => shout_channel_test.exs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/pleroma/web/{shout_channel_test.ex => shout_channel_test.exs} (100%) diff --git a/test/pleroma/web/shout_channel_test.ex b/test/pleroma/web/shout_channel_test.exs similarity index 100% rename from test/pleroma/web/shout_channel_test.ex rename to test/pleroma/web/shout_channel_test.exs From 017f947fc111eb98c964cd984fdb073623407b0e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 7 Jun 2021 16:10:24 -0500 Subject: [PATCH 22/74] Channel name was incorrect. We left it as chat:public for backwards compatibility. --- test/pleroma/web/shout_channel_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pleroma/web/shout_channel_test.exs b/test/pleroma/web/shout_channel_test.exs index a266543d2..5c86efe9f 100644 --- a/test/pleroma/web/shout_channel_test.exs +++ b/test/pleroma/web/shout_channel_test.exs @@ -14,7 +14,7 @@ defmodule Pleroma.Web.ShoutChannelTest do {:ok, _, socket} = socket(UserSocket, "", %{user_name: user.nickname}) - |> subscribe_and_join(ShoutChannel, "shout:public") + |> subscribe_and_join(ShoutChannel, "chat:public") {:ok, socket: socket} end From bdaa1d45123ae8dd7f0138aa09b96d3104e1e58e Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 17:07:40 -0500 Subject: [PATCH 23/74] Upload.Filter: use generic types in @spec Speeds up recompilation by reducing compile-time deps --- lib/pleroma/upload/filter.ex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex index c677d4b9f..e5db2fb20 100644 --- a/lib/pleroma/upload/filter.ex +++ b/lib/pleroma/upload/filter.ex @@ -15,13 +15,13 @@ defmodule Pleroma.Upload.Filter do require Logger - @callback filter(Pleroma.Upload.t()) :: + @callback filter(upload :: struct()) :: {:ok, :filtered} | {:ok, :noop} - | {:ok, :filtered, Pleroma.Upload.t()} + | {:ok, :filtered, upload :: struct()} | {:error, any()} - @spec filter([module()], Pleroma.Upload.t()) :: {:ok, Pleroma.Upload.t()} | {:error, any()} + @spec filter([module()], upload :: struct()) :: {:ok, upload :: struct()} | {:error, any()} def filter([], upload) do {:ok, upload} From 1399b82f7be708562848031944f6caab8f193bda Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 18:07:54 -0500 Subject: [PATCH 24/74] Create WrapperAuthenticator and simplify Authenticator behaviour Speeds up recompilation by reducing compile-time cycles --- lib/pleroma/web/auth/authenticator.ex | 63 +------------------ lib/pleroma/web/auth/helpers.ex | 33 ++++++++++ lib/pleroma/web/auth/ldap_authenticator.ex | 3 +- lib/pleroma/web/auth/pleroma_authenticator.ex | 3 +- lib/pleroma/web/auth/wrapper_authenticator.ex | 42 +++++++++++++ lib/pleroma/web/o_auth/o_auth_controller.ex | 2 +- .../web/templates/o_auth/o_auth/show.html.eex | 2 +- .../controllers/remote_follow_controller.ex | 4 +- test/pleroma/web/auth/authenticator_test.exs | 14 ++--- 9 files changed, 91 insertions(+), 75 deletions(-) create mode 100644 lib/pleroma/web/auth/helpers.ex create mode 100644 lib/pleroma/web/auth/wrapper_authenticator.ex diff --git a/lib/pleroma/web/auth/authenticator.ex b/lib/pleroma/web/auth/authenticator.ex index 84741ee11..3fe9718c4 100644 --- a/lib/pleroma/web/auth/authenticator.ex +++ b/lib/pleroma/web/auth/authenticator.ex @@ -3,68 +3,11 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.Auth.Authenticator do - alias Pleroma.Registration - alias Pleroma.User - - def implementation do - Pleroma.Config.get( - Pleroma.Web.Auth.Authenticator, - Pleroma.Web.Auth.PleromaAuthenticator - ) - end - - @callback get_user(Plug.Conn.t()) :: {:ok, User.t()} | {:error, any()} - def get_user(plug), do: implementation().get_user(plug) - - @callback create_from_registration(Plug.Conn.t(), Registration.t()) :: + @callback get_user(Plug.Conn.t()) :: {:ok, user :: struct()} | {:error, any()} + @callback create_from_registration(Plug.Conn.t(), registration :: struct()) :: {:ok, User.t()} | {:error, any()} - def create_from_registration(plug, registration), - do: implementation().create_from_registration(plug, registration) - - @callback get_registration(Plug.Conn.t()) :: {:ok, Registration.t()} | {:error, any()} - def get_registration(plug), do: implementation().get_registration(plug) - + @callback get_registration(Plug.Conn.t()) :: {:ok, registration :: struct()} | {:error, any()} @callback handle_error(Plug.Conn.t(), any()) :: any() - def handle_error(plug, error), - do: implementation().handle_error(plug, error) - @callback auth_template() :: String.t() | nil - def auth_template do - # Note: `config :pleroma, :auth_template, "..."` support is deprecated - implementation().auth_template() || - Pleroma.Config.get([:auth, :auth_template], Pleroma.Config.get(:auth_template)) || - "show.html" - end - @callback oauth_consumer_template() :: String.t() | nil - def oauth_consumer_template do - implementation().oauth_consumer_template() || - Pleroma.Config.get([:auth, :oauth_consumer_template], "consumer.html") - end - - @doc "Gets user by nickname or email for auth." - @spec fetch_user(String.t()) :: User.t() | nil - def fetch_user(name) do - User.get_by_nickname_or_email(name) - end - - # Gets name and password from conn - # - @spec fetch_credentials(Plug.Conn.t() | map()) :: - {:ok, {name :: any, password :: any}} | {:error, :invalid_credentials} - def fetch_credentials(%Plug.Conn{params: params} = _), - do: fetch_credentials(params) - - def fetch_credentials(params) do - case params do - %{"authorization" => %{"name" => name, "password" => password}} -> - {:ok, {name, password}} - - %{"grant_type" => "password", "username" => name, "password" => password} -> - {:ok, {name, password}} - - _ -> - {:error, :invalid_credentials} - end - end end diff --git a/lib/pleroma/web/auth/helpers.ex b/lib/pleroma/web/auth/helpers.ex new file mode 100644 index 000000000..c566de8d4 --- /dev/null +++ b/lib/pleroma/web/auth/helpers.ex @@ -0,0 +1,33 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Auth.Helpers do + alias Pleroma.User + + @doc "Gets user by nickname or email for auth." + @spec fetch_user(String.t()) :: User.t() | nil + def fetch_user(name) do + User.get_by_nickname_or_email(name) + end + + # Gets name and password from conn + # + @spec fetch_credentials(Plug.Conn.t() | map()) :: + {:ok, {name :: any, password :: any}} | {:error, :invalid_credentials} + def fetch_credentials(%Plug.Conn{params: params} = _), + do: fetch_credentials(params) + + def fetch_credentials(params) do + case params do + %{"authorization" => %{"name" => name, "password" => password}} -> + {:ok, {name, password}} + + %{"grant_type" => "password", "username" => name, "password" => password} -> + {:ok, {name, password}} + + _ -> + {:error, :invalid_credentials} + end + end +end diff --git a/lib/pleroma/web/auth/ldap_authenticator.ex b/lib/pleroma/web/auth/ldap_authenticator.ex index 17e08a2a6..f77e8d203 100644 --- a/lib/pleroma/web/auth/ldap_authenticator.ex +++ b/lib/pleroma/web/auth/ldap_authenticator.ex @@ -7,8 +7,7 @@ defmodule Pleroma.Web.Auth.LDAPAuthenticator do require Logger - import Pleroma.Web.Auth.Authenticator, - only: [fetch_credentials: 1, fetch_user: 1] + import Pleroma.Web.Auth.Helpers, only: [fetch_credentials: 1, fetch_user: 1] @behaviour Pleroma.Web.Auth.Authenticator @base Pleroma.Web.Auth.PleromaAuthenticator diff --git a/lib/pleroma/web/auth/pleroma_authenticator.ex b/lib/pleroma/web/auth/pleroma_authenticator.ex index 401f23c9f..68472e75f 100644 --- a/lib/pleroma/web/auth/pleroma_authenticator.ex +++ b/lib/pleroma/web/auth/pleroma_authenticator.ex @@ -8,8 +8,7 @@ defmodule Pleroma.Web.Auth.PleromaAuthenticator do alias Pleroma.User alias Pleroma.Web.Plugs.AuthenticationPlug - import Pleroma.Web.Auth.Authenticator, - only: [fetch_credentials: 1, fetch_user: 1] + import Pleroma.Web.Auth.Helpers, only: [fetch_credentials: 1, fetch_user: 1] @behaviour Pleroma.Web.Auth.Authenticator diff --git a/lib/pleroma/web/auth/wrapper_authenticator.ex b/lib/pleroma/web/auth/wrapper_authenticator.ex new file mode 100644 index 000000000..c67082f7b --- /dev/null +++ b/lib/pleroma/web/auth/wrapper_authenticator.ex @@ -0,0 +1,42 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Auth.WrapperAuthenticator do + @behaviour Pleroma.Web.Auth.Authenticator + + defp implementation do + Pleroma.Config.get( + Pleroma.Web.Auth.Authenticator, + Pleroma.Web.Auth.PleromaAuthenticator + ) + end + + @impl true + def get_user(plug), do: implementation().get_user(plug) + + @impl true + def create_from_registration(plug, registration), + do: implementation().create_from_registration(plug, registration) + + @impl true + def get_registration(plug), do: implementation().get_registration(plug) + + @impl true + def handle_error(plug, error), + do: implementation().handle_error(plug, error) + + @impl true + def auth_template do + # Note: `config :pleroma, :auth_template, "..."` support is deprecated + implementation().auth_template() || + Pleroma.Config.get([:auth, :auth_template], Pleroma.Config.get(:auth_template)) || + "show.html" + end + + @impl true + def oauth_consumer_template do + implementation().oauth_consumer_template() || + Pleroma.Config.get([:auth, :oauth_consumer_template], "consumer.html") + end +end diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index 42f4d768f..b9aadc6a4 100644 --- a/lib/pleroma/web/o_auth/o_auth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -12,7 +12,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do alias Pleroma.Registration alias Pleroma.Repo alias Pleroma.User - alias Pleroma.Web.Auth.Authenticator + alias Pleroma.Web.Auth.WrapperAuthenticator, as: Authenticator alias Pleroma.Web.ControllerHelper alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Authorization diff --git a/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex index 2846ec7e7..181a9519a 100644 --- a/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex +++ b/lib/pleroma/web/templates/o_auth/o_auth/show.html.eex @@ -61,5 +61,5 @@ <% end %> <%= if Pleroma.Config.oauth_consumer_enabled?() do %> - <%= render @view_module, Pleroma.Web.Auth.Authenticator.oauth_consumer_template(), assigns %> + <%= render @view_module, Pleroma.Web.Auth.WrapperAuthenticator.oauth_consumer_template(), assigns %> <% end %> diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex index 9843cc362..42d7601ed 100644 --- a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -11,8 +11,8 @@ defmodule Pleroma.Web.TwitterAPI.RemoteFollowController do alias Pleroma.MFA alias Pleroma.Object.Fetcher alias Pleroma.User - alias Pleroma.Web.Auth.Authenticator alias Pleroma.Web.Auth.TOTPAuthenticator + alias Pleroma.Web.Auth.WrapperAuthenticator alias Pleroma.Web.CommonAPI @status_types ["Article", "Event", "Note", "Video", "Page", "Question"] @@ -88,7 +88,7 @@ def do_follow(%{assigns: %{user: %User{} = user}} = conn, %{"user" => %{"id" => # def do_follow(conn, %{"authorization" => %{"name" => _, "password" => _, "id" => id}}) do with {_, %User{} = followee} <- {:fetch_user, User.get_cached_by_id(id)}, - {_, {:ok, user}, _} <- {:auth, Authenticator.get_user(conn), followee}, + {_, {:ok, user}, _} <- {:auth, WrapperAuthenticator.get_user(conn), followee}, {_, _, _, false} <- {:mfa_required, followee, user, MFA.require?(user)}, {:ok, _, _, _} <- CommonAPI.follow(user, followee) do redirect(conn, to: "/users/#{followee.id}") diff --git a/test/pleroma/web/auth/authenticator_test.exs b/test/pleroma/web/auth/authenticator_test.exs index e1f30e835..26779df03 100644 --- a/test/pleroma/web/auth/authenticator_test.exs +++ b/test/pleroma/web/auth/authenticator_test.exs @@ -5,38 +5,38 @@ defmodule Pleroma.Web.Auth.AuthenticatorTest do use Pleroma.Web.ConnCase, async: true - alias Pleroma.Web.Auth.Authenticator + alias Pleroma.Web.Auth.Helpers import Pleroma.Factory describe "fetch_user/1" do test "returns user by name" do user = insert(:user) - assert Authenticator.fetch_user(user.nickname) == user + assert Helpers.fetch_user(user.nickname) == user end test "returns user by email" do user = insert(:user) - assert Authenticator.fetch_user(user.email) == user + assert Helpers.fetch_user(user.email) == user end test "returns nil" do - assert Authenticator.fetch_user("email") == nil + assert Helpers.fetch_user("email") == nil end end describe "fetch_credentials/1" do test "returns name and password from authorization params" do params = %{"authorization" => %{"name" => "test", "password" => "test-pass"}} - assert Authenticator.fetch_credentials(params) == {:ok, {"test", "test-pass"}} + assert Helpers.fetch_credentials(params) == {:ok, {"test", "test-pass"}} end test "returns name and password with grant_type 'password'" do params = %{"grant_type" => "password", "username" => "test", "password" => "test-pass"} - assert Authenticator.fetch_credentials(params) == {:ok, {"test", "test-pass"}} + assert Helpers.fetch_credentials(params) == {:ok, {"test", "test-pass"}} end test "returns error" do - assert Authenticator.fetch_credentials(%{}) == {:error, :invalid_credentials} + assert Helpers.fetch_credentials(%{}) == {:error, :invalid_credentials} end end end From 0877b120c30a69788070de8990ac46ef0cdf23b3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 22 May 2021 11:41:55 -0500 Subject: [PATCH 25/74] Pleroma.Web.ControllerHelper.truthy_param?/1 --> Pleroma.Web.Params.truthy_param?/1 Breaks cycle in lib/pleroma/web/api_spec/operations/status_operation.ex --- lib/pleroma/web/api_spec/schemas/boolean_like.ex | 2 +- lib/pleroma/web/common_api/activity_draft.ex | 2 +- lib/pleroma/web/common_api/utils.ex | 6 +++--- lib/pleroma/web/controller_helper.ex | 14 ++------------ .../controllers/account_controller.ex | 4 ++-- lib/pleroma/web/o_auth/o_auth_controller.ex | 4 ++-- lib/pleroma/web/params.ex | 16 ++++++++++++++++ 7 files changed, 27 insertions(+), 21 deletions(-) create mode 100644 lib/pleroma/web/params.ex diff --git a/lib/pleroma/web/api_spec/schemas/boolean_like.ex b/lib/pleroma/web/api_spec/schemas/boolean_like.ex index 778158f66..1feda3baa 100644 --- a/lib/pleroma/web/api_spec/schemas/boolean_like.ex +++ b/lib/pleroma/web/api_spec/schemas/boolean_like.ex @@ -34,7 +34,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.BooleanLike do def cast(%Cast{value: value} = context) do context - |> Map.put(:value, Pleroma.Web.ControllerHelper.truthy_param?(value)) + |> Map.put(:value, Pleroma.Web.Params.truthy_param?(value)) |> Cast.ok() end end diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index 80a9fa7bb..d750c9de3 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -223,7 +223,7 @@ defp object(draft) do end defp preview?(draft) do - preview? = Pleroma.Web.ControllerHelper.truthy_param?(draft.params[:preview]) + preview? = Pleroma.Web.Params.truthy_param?(draft.params[:preview]) %__MODULE__{draft | preview?: preview?} end diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 4cc34002d..4ba31a8b8 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -4,7 +4,6 @@ defmodule Pleroma.Web.CommonAPI.Utils do import Pleroma.Web.Gettext - import Pleroma.Web.ControllerHelper, only: [truthy_param?: 1] alias Calendar.Strftime alias Pleroma.Activity @@ -18,6 +17,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI.ActivityDraft alias Pleroma.Web.MediaProxy + alias Pleroma.Web.Params alias Pleroma.Web.Plugs.AuthenticationPlug require Logger @@ -160,7 +160,7 @@ def make_poll_data(%{poll: %{options: options, expires_in: expires_in}} = data) |> DateTime.add(expires_in) |> DateTime.to_iso8601() - key = if truthy_param?(data.poll[:multiple]), do: "anyOf", else: "oneOf" + key = if Params.truthy_param?(data.poll[:multiple]), do: "anyOf", else: "oneOf" poll = %{"type" => "Question", key => option_notes, "closed" => end_time} {:ok, {poll, emoji}} @@ -203,7 +203,7 @@ def make_content_html(%ActivityDraft{} = draft) do attachment_links = draft.params |> Map.get("attachment_links", Config.get([:instance, :attachment_links])) - |> truthy_param?() + |> Params.truthy_param?() content_type = get_content_type(draft.params[:content_type]) diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index 61d65e7a3..afa152482 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -6,17 +6,7 @@ defmodule Pleroma.Web.ControllerHelper do use Pleroma.Web, :controller alias Pleroma.Pagination - - # As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html - @falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"] - - def explicitly_falsy_param?(value), do: value in @falsy_param_values - - # Note: `nil` and `""` are considered falsy values in Pleroma - def falsy_param?(value), - do: explicitly_falsy_param?(value) or value in [nil, ""] - - def truthy_param?(value), do: not falsy_param?(value) + alias Pleroma.Web.Params def json_response(conn, status, _) when status in [204, :no_content] do conn @@ -123,6 +113,6 @@ def embed_relationships?(params) do # To do once OpenAPI transition mess is over: just `truthy_param?(params[:with_relationships])` params |> Map.get(:with_relationships, params["with_relationships"]) - |> truthy_param?() + |> Params.truthy_param?() end end diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 7a1e99044..d9bb6f95e 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do import Pleroma.Web.ControllerHelper, only: [ add_link_headers: 2, - truthy_param?: 1, assign_account_by_id: 2, embed_relationships?: 1, json_response: 3 @@ -25,6 +24,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.MastodonAPI.MastodonAPIController alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.OAuth.OAuthController + alias Pleroma.Web.Params alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter @@ -188,7 +188,7 @@ def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _p :accepts_chat_messages ] |> Enum.reduce(%{}, fn key, acc -> - Maps.put_if_present(acc, key, params[key], &{:ok, truthy_param?(&1)}) + Maps.put_if_present(acc, key, params[key], &{:ok, Params.truthy_param?(&1)}) end) |> Maps.put_if_present(:name, params[:display_name]) |> Maps.put_if_present(:bio, params[:note]) diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index b9aadc6a4..6201d6e00 100644 --- a/lib/pleroma/web/o_auth/o_auth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -13,7 +13,6 @@ defmodule Pleroma.Web.OAuth.OAuthController do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.Auth.WrapperAuthenticator, as: Authenticator - alias Pleroma.Web.ControllerHelper alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Authorization alias Pleroma.Web.OAuth.MFAController @@ -23,6 +22,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken + alias Pleroma.Web.Params alias Pleroma.Web.Plugs.RateLimiter require Logger @@ -50,7 +50,7 @@ def authorize(%Plug.Conn{} = conn, %{"authorization" => _} = params) do end def authorize(%Plug.Conn{assigns: %{token: %Token{}}} = conn, %{"force_login" => _} = params) do - if ControllerHelper.truthy_param?(params["force_login"]) do + if Params.truthy_param?(params["force_login"]) do do_authorize(conn, params) else handle_existing_authorization(conn, params) diff --git a/lib/pleroma/web/params.ex b/lib/pleroma/web/params.ex new file mode 100644 index 000000000..dd7059c89 --- /dev/null +++ b/lib/pleroma/web/params.ex @@ -0,0 +1,16 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Params do + # As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html + @falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"] + + defp explicitly_falsy_param?(value), do: value in @falsy_param_values + + # Note: `nil` and `""` are considered falsy values in Pleroma + defp falsy_param?(value), + do: explicitly_falsy_param?(value) or value in [nil, ""] + + def truthy_param?(value), do: not falsy_param?(value) +end From ec65b7ae294eaf7f908960950ee573bf8d038715 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 16:01:26 -0500 Subject: [PATCH 26/74] Pleroma.Web.Params --> Pleroma.Web.Utils.Params --- lib/pleroma/web/api_spec/schemas/boolean_like.ex | 2 +- lib/pleroma/web/common_api/activity_draft.ex | 2 +- lib/pleroma/web/common_api/utils.ex | 2 +- lib/pleroma/web/controller_helper.ex | 2 +- lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 2 +- lib/pleroma/web/o_auth/o_auth_controller.ex | 2 +- lib/pleroma/web/{ => utils}/params.ex | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename lib/pleroma/web/{ => utils}/params.ex (94%) diff --git a/lib/pleroma/web/api_spec/schemas/boolean_like.ex b/lib/pleroma/web/api_spec/schemas/boolean_like.ex index 1feda3baa..94c5020ca 100644 --- a/lib/pleroma/web/api_spec/schemas/boolean_like.ex +++ b/lib/pleroma/web/api_spec/schemas/boolean_like.ex @@ -34,7 +34,7 @@ defmodule Pleroma.Web.ApiSpec.Schemas.BooleanLike do def cast(%Cast{value: value} = context) do context - |> Map.put(:value, Pleroma.Web.Params.truthy_param?(value)) + |> Map.put(:value, Pleroma.Web.Utils.Params.truthy_param?(value)) |> Cast.ok() end end diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index d750c9de3..c691d71d2 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -223,7 +223,7 @@ defp object(draft) do end defp preview?(draft) do - preview? = Pleroma.Web.Params.truthy_param?(draft.params[:preview]) + preview? = Pleroma.Web.Utils.Params.truthy_param?(draft.params[:preview]) %__MODULE__{draft | preview?: preview?} end diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 4ba31a8b8..256d95b95 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -17,7 +17,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI.ActivityDraft alias Pleroma.Web.MediaProxy - alias Pleroma.Web.Params + alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.AuthenticationPlug require Logger diff --git a/lib/pleroma/web/controller_helper.ex b/lib/pleroma/web/controller_helper.ex index afa152482..7b84b43e4 100644 --- a/lib/pleroma/web/controller_helper.ex +++ b/lib/pleroma/web/controller_helper.ex @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ControllerHelper do use Pleroma.Web, :controller alias Pleroma.Pagination - alias Pleroma.Web.Params + alias Pleroma.Web.Utils.Params def json_response(conn, status, _) when status in [204, :no_content] do conn diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index d9bb6f95e..b4ec66367 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -24,7 +24,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.MastodonAPI.MastodonAPIController alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.OAuth.OAuthController - alias Pleroma.Web.Params + alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index 6201d6e00..06c706f8e 100644 --- a/lib/pleroma/web/o_auth/o_auth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -22,7 +22,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken - alias Pleroma.Web.Params + alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.RateLimiter require Logger diff --git a/lib/pleroma/web/params.ex b/lib/pleroma/web/utils/params.ex similarity index 94% rename from lib/pleroma/web/params.ex rename to lib/pleroma/web/utils/params.ex index dd7059c89..6e0900341 100644 --- a/lib/pleroma/web/params.ex +++ b/lib/pleroma/web/utils/params.ex @@ -2,7 +2,7 @@ # Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.Params do +defmodule Pleroma.Web.Utils.Params do # As in Mastodon API, per https://api.rubyonrails.org/classes/ActiveModel/Type/Boolean.html @falsy_param_values [false, 0, "0", "f", "F", "false", "False", "FALSE", "off", "OFF"] From b99f60615cd145d97f50207797ddc569e34cc3c8 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 7 Jun 2021 16:45:33 -0500 Subject: [PATCH 27/74] Fix order of Pleroma.Web.Utils.Params aliases --- lib/pleroma/web/common_api/utils.ex | 2 +- lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 2 +- lib/pleroma/web/o_auth/o_auth_controller.ex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index 256d95b95..33639e695 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -17,8 +17,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do alias Pleroma.Web.ActivityPub.Visibility alias Pleroma.Web.CommonAPI.ActivityDraft alias Pleroma.Web.MediaProxy - alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.AuthenticationPlug + alias Pleroma.Web.Utils.Params require Logger require Pleroma.Constants diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index b4ec66367..4cc3645d4 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -24,11 +24,11 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.MastodonAPI.MastodonAPIController alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.OAuth.OAuthController - alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter alias Pleroma.Web.TwitterAPI.TwitterAPI + alias Pleroma.Web.Utils.Params plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index 06c706f8e..6951e0253 100644 --- a/lib/pleroma/web/o_auth/o_auth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -22,8 +22,8 @@ defmodule Pleroma.Web.OAuth.OAuthController do alias Pleroma.Web.OAuth.Token alias Pleroma.Web.OAuth.Token.Strategy.RefreshToken alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken - alias Pleroma.Web.Utils.Params alias Pleroma.Web.Plugs.RateLimiter + alias Pleroma.Web.Utils.Params require Logger From 5c27578bce7882d9ecbb1729971589d6593d9984 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 3 Jun 2021 16:58:18 -0500 Subject: [PATCH 28/74] Support metadata for video files too --- lib/pleroma/application_requirements.ex | 3 +- lib/pleroma/upload/filter/analyze_metadata.ex | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex index ee6ee9516..a56311a65 100644 --- a/lib/pleroma/application_requirements.ex +++ b/lib/pleroma/application_requirements.ex @@ -168,7 +168,8 @@ defp check_system_commands!(:ok) do check_filter(Pleroma.Upload.Filter.Mogrify, "mogrify"), check_filter(Pleroma.Upload.Filter.Mogrifun, "mogrify"), check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "mogrify"), - check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "convert") + check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "convert"), + check_filter(Pleroma.Upload.Filter.AnalyzeMetadata, "ffprobe") ] preview_proxy_commands_status = diff --git a/lib/pleroma/upload/filter/analyze_metadata.ex b/lib/pleroma/upload/filter/analyze_metadata.ex index 8c23076d4..c89c30fc1 100644 --- a/lib/pleroma/upload/filter/analyze_metadata.ex +++ b/lib/pleroma/upload/filter/analyze_metadata.ex @@ -33,6 +33,23 @@ def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _} = upload) end end + def filter(%Pleroma.Upload{tempfile: file, content_type: "video" <> _} = upload) do + try do + result = media_dimensions(file) + + upload = + upload + |> Map.put(:width, result.width) + |> Map.put(:height, result.height) + + {:ok, :filtered, upload} + rescue + e in ErlangError -> + Logger.warn("#{__MODULE__}: #{inspect(e)}") + {:ok, :noop} + end + end + def filter(_), do: {:ok, :noop} defp get_blurhash(file) do @@ -42,4 +59,25 @@ defp get_blurhash(file) do _ -> nil end end + + defp media_dimensions(file) do + with executable when is_binary(executable) <- System.find_executable("ffprobe"), + args = [ + "-v", + "error", + "-show_entries", + "stream=width,height", + "-of", + "csv=p=0:s=x", + file + ], + {result, 0} <- System.cmd(executable, args), + [width, height] <- + String.split(String.trim(result), "x") |> Enum.map(&String.to_integer(&1)) do + %{width: width, height: height} + else + nil -> {:error, {:ffprobe, :command_not_found}} + {:error, _} = error -> error + end + end end From 8443f82247d8e0a76009c9b4f337d2aec5b8aa5c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 12:56:03 -0500 Subject: [PATCH 29/74] Update scope of AnalyzeMetadata features --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index daa8f2ff6..dcb462f07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - MRF (`FollowBotPolicy`): New MRF Policy which makes a designated local Bot account attempt to follow all users in public Notes received by your instance. Users who require approving follower requests or have #nobot in their profile are excluded. - Return OAuth token `id` (primary key) in POST `/oauth/token`. -- `AnalyzeMetadata` upload filter for extracting attachment dimensions and generating blurhashes. +- `AnalyzeMetadata` upload filter for extracting image/video attachment dimensions and generating blurhashes for images. Blurhashes for videos are not generated at this time. - Attachment dimensions and blurhashes are federated when available. - Pinned posts federation From 1c4c73c6a0c95ecb75d4048f52bedc511f0d4b66 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 14:02:56 -0500 Subject: [PATCH 30/74] Add test for AnalyzeMetadata upload filter fetching dimensions from a video --- test/fixtures/video.mp4 | Bin 0 -> 522216 bytes .../upload/filter/analyze_metadata_test.exs | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 test/fixtures/video.mp4 diff --git a/test/fixtures/video.mp4 b/test/fixtures/video.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..2021e3a5b29dd0520ca85df82f0f9830034d855e GIT binary patch literal 522216 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

VAgxD~>6kx1PS8-jT{mqX$*_@EM)bz7l{kL}Tp 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%0Do;Vc7c@58q$#CFA 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

^0bDba+VJKWag607_Gd)C|D^M7Nto+=@s7a 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
k8T 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
(5PT3J<8+TcItoBpT4RvU>^dO`|cs} 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�$2fE-m9jSIo#8l78hxAQKkO8&Tu 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 GR|T+J!d_7T literal 0 HcmV?d00001 diff --git a/test/pleroma/upload/filter/analyze_metadata_test.exs b/test/pleroma/upload/filter/analyze_metadata_test.exs index 6f0e432ef..488743952 100644 --- a/test/pleroma/upload/filter/analyze_metadata_test.exs +++ b/test/pleroma/upload/filter/analyze_metadata_test.exs @@ -16,4 +16,15 @@ test "adds the image dimensions" do assert {:ok, :filtered, %{width: 1024, height: 768}} = AnalyzeMetadata.filter(upload) end + + test "adds the video dimensions" do + upload = %Pleroma.Upload{ + name: "coolvideo.mp4", + content_type: "video/mp4", + path: Path.absname("test/fixtures/video.mp4"), + tempfile: Path.absname("test/fixtures/video.mp4") + } + + assert {:ok, :filtered, %{width: 480, height: 480}} = AnalyzeMetadata.filter(upload) + end end From f1abe39f6f5220eae6aad84a27a917b1d9bd4439 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 14:05:13 -0500 Subject: [PATCH 31/74] Update test names and verify blurhash is correctly generated for images --- test/pleroma/upload/filter/analyze_metadata_test.exs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/pleroma/upload/filter/analyze_metadata_test.exs b/test/pleroma/upload/filter/analyze_metadata_test.exs index 488743952..97f5fe9b2 100644 --- a/test/pleroma/upload/filter/analyze_metadata_test.exs +++ b/test/pleroma/upload/filter/analyze_metadata_test.exs @@ -6,7 +6,7 @@ defmodule Pleroma.Upload.Filter.AnalyzeMetadataTest do use Pleroma.DataCase, async: true alias Pleroma.Upload.Filter.AnalyzeMetadata - test "adds the image dimensions" do + test "adds the dimensions and blurhash for images" do upload = %Pleroma.Upload{ name: "an… image.jpg", content_type: "image/jpeg", @@ -14,10 +14,12 @@ test "adds the image dimensions" do tempfile: Path.absname("test/fixtures/image.jpg") } - assert {:ok, :filtered, %{width: 1024, height: 768}} = AnalyzeMetadata.filter(upload) + assert {:ok, :filtered, + %{width: 1024, height: 768, blurhash: "V5DI,j_NIS%eI.RDI[RS%1WDr=IVD-RoV{?Ge-tiSKkR"}} = + AnalyzeMetadata.filter(upload) end - test "adds the video dimensions" do + test "adds the dimensions for videos" do upload = %Pleroma.Upload{ name: "coolvideo.mp4", content_type: "video/mp4", From 3121ed1325cceb8ec3f8d153d3c6fa18b2951714 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 14:49:57 -0500 Subject: [PATCH 32/74] Blurhash varies slightly by computer generating it, so just validate it wasn't nil --- test/pleroma/upload/filter/analyze_metadata_test.exs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/pleroma/upload/filter/analyze_metadata_test.exs b/test/pleroma/upload/filter/analyze_metadata_test.exs index 97f5fe9b2..4b636a684 100644 --- a/test/pleroma/upload/filter/analyze_metadata_test.exs +++ b/test/pleroma/upload/filter/analyze_metadata_test.exs @@ -14,9 +14,10 @@ test "adds the dimensions and blurhash for images" do tempfile: Path.absname("test/fixtures/image.jpg") } - assert {:ok, :filtered, - %{width: 1024, height: 768, blurhash: "V5DI,j_NIS%eI.RDI[RS%1WDr=IVD-RoV{?Ge-tiSKkR"}} = - AnalyzeMetadata.filter(upload) + {:ok, :filtered, meta} = AnalyzeMetadata.filter(upload) + + assert %{width: 1024, height: 768} = meta + assert meta.blurhash end test "adds the dimensions for videos" do From 5de65ce3e89ba2f229170ed18933c99e5caa8dff Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 15:59:55 -0500 Subject: [PATCH 33/74] Set the correct height/width if the data is available when generating twittercard metadata --- lib/pleroma/web/metadata/providers/twitter_card.ex | 7 +++++-- .../web/metadata/providers/twitter_card_test.exs | 11 ++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index 12c372d77..e28f832d4 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -80,11 +80,14 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do # TODO: Need the true width and height values here or Twitter renders an iFrame with # a bad aspect ratio "video" -> + height = url["height"] || 480 + width = url["width"] || 480 + [ {:meta, [property: "twitter:card", content: "player"], []}, {:meta, [property: "twitter:player", content: player_url(id)], []}, - {:meta, [property: "twitter:player:width", content: "480"], []}, - {:meta, [property: "twitter:player:height", content: "480"], []}, + {:meta, [property: "twitter:player:width", content: "#{width}"], []}, + {:meta, [property: "twitter:player:height", content: "#{height}"], []}, {:meta, [property: "twitter:player:stream", content: url["href"]], []}, {:meta, [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index 196bca20a..6d761f4e4 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -123,7 +123,12 @@ test "it renders supported types of attachments and skips unknown types" do }, %{ "url" => [ - %{"mediaType" => "video/webm", "href" => "https://pleroma.gov/about/juche.webm"} + %{ + "mediaType" => "video/webm", + "href" => "https://pleroma.gov/about/juche.webm", + "height" => 600, + "width" => 800 + } ] } ] @@ -143,8 +148,8 @@ test "it renders supported types of attachments and skips unknown types" do property: "twitter:player", content: Router.Helpers.o_status_url(Endpoint, :notice_player, activity.id) ], []}, - {:meta, [property: "twitter:player:width", content: "480"], []}, - {:meta, [property: "twitter:player:height", content: "480"], []}, + {:meta, [property: "twitter:player:width", content: "800"], []}, + {:meta, [property: "twitter:player:height", content: "600"], []}, {:meta, [ property: "twitter:player:stream", From 1be14cc45f915824e5796396fcdb7cb402ffe138 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 8 Jun 2021 16:07:51 -0500 Subject: [PATCH 34/74] Ignore runtime deps in Pleroma.Config.Loader with Module.concat/1 Speeds up recompilation --- lib/pleroma/config/loader.ex | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/pleroma/config/loader.ex b/lib/pleroma/config/loader.ex index 9489f58c4..2a945999e 100644 --- a/lib/pleroma/config/loader.ex +++ b/lib/pleroma/config/loader.ex @@ -3,21 +3,21 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Config.Loader do - defp reject_keys, - do: [ - Pleroma.Repo, - Pleroma.Web.Endpoint, - :env, - :configurable_from_database, - :database, - :swarm - ] + # These modules are only being used as keys here (for equality check), + # so it's okay to use `Module.concat/1` to have the compiler ignore them. + @reject_keys [ + Module.concat(["Pleroma.Repo"]), + Module.concat(["Pleroma.Web.Endpoint"]), + :env, + :configurable_from_database, + :database, + :swarm + ] - defp reject_groups, - do: [ - :postgrex, - :tesla - ] + @reject_groups [ + :postgrex, + :tesla + ] if Code.ensure_loaded?(Config.Reader) do @reader Config.Reader @@ -54,7 +54,7 @@ defp filter(configs) do @spec filter_group(atom(), keyword()) :: keyword() def filter_group(group, configs) do Enum.reject(configs[group], fn {key, _v} -> - key in reject_keys() or group in reject_groups() or + key in @reject_keys or group in @reject_groups or (group == :phoenix and key == :serve_endpoints) end) end From d4ac9445cd485a4055f93360714923c3f64d9673 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 16:19:12 -0500 Subject: [PATCH 35/74] Twittercard metadata for images should also include dimensions if available --- lib/pleroma/web/metadata/providers/twitter_card.ex | 13 ++++++------- .../web/metadata/providers/twitter_card_test.exs | 11 ++++++++++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index e28f832d4..bf6d4bcbe 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -55,7 +55,9 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do Enum.reduce(attachments, [], fn attachment, acc -> rendered_tags = Enum.reduce(attachment["url"], [], fn url, acc -> - # TODO: Add additional properties to objects when we have the data available. + height = url["height"] || 480 + width = url["width"] || 480 + case Utils.fetch_media_type(@media_types, url["mediaType"]) do "audio" -> [ @@ -73,16 +75,13 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do [ property: "twitter:player", content: Utils.attachment_url(url["href"]) - ], []} + ], []}, + {:meta, [property: "twitter:player:width", content: "#{width}"], []}, + {:meta, [property: "twitter:player:height", content: "#{height}"], []} | acc ] - # TODO: Need the true width and height values here or Twitter renders an iFrame with - # a bad aspect ratio "video" -> - height = url["height"] || 480 - width = url["width"] || 480 - [ {:meta, [property: "twitter:card", content: "player"], []}, {:meta, [property: "twitter:player", content: player_url(id)], []}, diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index 6d761f4e4..dbb15b79f 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -111,7 +111,14 @@ test "it renders supported types of attachments and skips unknown types" do "content" => "pleroma in a nutshell", "attachment" => [ %{ - "url" => [%{"mediaType" => "image/png", "href" => "https://pleroma.gov/tenshi.png"}] + "url" => [ + %{ + "mediaType" => "image/png", + "href" => "https://pleroma.gov/tenshi.png", + "height" => 1024, + "width" => 1280 + } + ] }, %{ "url" => [ @@ -142,6 +149,8 @@ test "it renders supported types of attachments and skips unknown types" do {:meta, [property: "twitter:description", content: "pleroma in a nutshell"], []}, {:meta, [property: "twitter:card", content: "summary_large_image"], []}, {:meta, [property: "twitter:player", content: "https://pleroma.gov/tenshi.png"], []}, + {:meta, [property: "twitter:player:width", content: "1280"], []}, + {:meta, [property: "twitter:player:height", content: "1024"], []}, {:meta, [property: "twitter:card", content: "player"], []}, {:meta, [ From aa8cc4e86e5c7a53fa8bc606dbce6c6b3a0a8c02 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 16:31:12 -0500 Subject: [PATCH 36/74] Only use fallback for videos and only add this metadata for images if we really have it. --- .../web/metadata/providers/twitter_card.ex | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index bf6d4bcbe..dfe477a8a 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -55,9 +55,6 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do Enum.reduce(attachments, [], fn attachment, acc -> rendered_tags = Enum.reduce(attachment["url"], [], fn url, acc -> - height = url["height"] || 480 - width = url["width"] || 480 - case Utils.fetch_media_type(@media_types, url["mediaType"]) do "audio" -> [ @@ -75,13 +72,16 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do [ property: "twitter:player", content: Utils.attachment_url(url["href"]) - ], []}, - {:meta, [property: "twitter:player:width", content: "#{width}"], []}, - {:meta, [property: "twitter:player:height", content: "#{height}"], []} + ], []} | acc ] + |> maybe_add_dimensions(url) "video" -> + # fallback to old placeholder values + height = url["height"] || 480 + width = url["width"] || 480 + [ {:meta, [property: "twitter:card", content: "player"], []}, {:meta, [property: "twitter:player", content: player_url(id)], []}, @@ -107,4 +107,20 @@ defp build_attachments(_id, _object), do: [] defp player_url(id) do Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id) end + + # Videos have problems without dimensions, but we used to not provide WxH for images. + # A default (read: incorrect) fallback for images is likely to cause rendering bugs. + defp maybe_add_dimensions(metadata, url) do + cond do + !is_nil(url["height"]) && !is_nil(url["width"]) -> + metadata ++ + [ + {:meta, [property: "twitter:player:width", content: "#{url["width"]}"], []}, + {:meta, [property: "twitter:player:height", content: "#{url["height"]}"], []} + ] + + true -> + metadata + end + end end From 4faeec2c449c73563635424b6a7d597b9222bfe2 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 8 Jun 2021 15:58:19 -0500 Subject: [PATCH 37/74] Create AdminAPI.UserView to avoid compile-time dep Speeds up recompilation --- .../web/admin_api/controllers/user_controller.ex | 2 -- lib/pleroma/web/admin_api/views/user_view.ex | 10 ++++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 lib/pleroma/web/admin_api/views/user_view.ex diff --git a/lib/pleroma/web/admin_api/controllers/user_controller.ex b/lib/pleroma/web/admin_api/controllers/user_controller.ex index d3e4c18a3..637a0e702 100644 --- a/lib/pleroma/web/admin_api/controllers/user_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/user_controller.ex @@ -45,8 +45,6 @@ defmodule Pleroma.Web.AdminAPI.UserController do when action in [:follow, :unfollow] ) - plug(:put_view, Pleroma.Web.AdminAPI.AccountView) - action_fallback(AdminAPI.FallbackController) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.Admin.UserOperation diff --git a/lib/pleroma/web/admin_api/views/user_view.ex b/lib/pleroma/web/admin_api/views/user_view.ex new file mode 100644 index 000000000..e91265ffe --- /dev/null +++ b/lib/pleroma/web/admin_api/views/user_view.ex @@ -0,0 +1,10 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.AdminAPI.UserView do + use Pleroma.Web, :view + alias Pleroma.Web.AdminAPI + + def render(view, opts), do: AdminAPI.AccountView.render(view, opts) +end From d70db63084449e48e90288bc7484733171246625 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 16:58:33 -0500 Subject: [PATCH 38/74] Set the correct height/width if the data is available when generating opengraph metadata --- .../web/metadata/providers/open_graph.ex | 22 +++++++++++++++++-- .../metadata/providers/open_graph_test.exs | 20 ++++++++++++++--- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 18ddde84b..78cef1525 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -69,8 +69,7 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do Enum.reduce(attachments, [], fn attachment, acc -> rendered_tags = Enum.reduce(attachment["url"], [], fn url, acc -> - # TODO: Add additional properties to objects when we have the data available. - # Also, Whatsapp only wants JPEG or PNGs. It seems that if we add a second og:image + # TODO: Whatsapp only wants JPEG or PNGs. It seems that if we add a second og:image # object when a Video or GIF is attached it will display that in Whatsapp Rich Preview. case Utils.fetch_media_type(@media_types, url["mediaType"]) do "audio" -> @@ -85,12 +84,14 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do {:meta, [property: "og:image:alt", content: attachment["name"]], []} | acc ] + |> maybe_add_dimensions(url) "video" -> [ {:meta, [property: "og:video", content: Utils.attachment_url(url["href"])], []} | acc ] + |> maybe_add_dimensions(url) _ -> acc @@ -102,4 +103,21 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do end defp build_attachments(_), do: [] + + # We can use url["mediaType"] to dynamically fill the metadata + defp maybe_add_dimensions(metadata, url) do + type = url["mediaType"] |> String.split("/") |> List.first() + + cond do + !is_nil(url["height"]) && !is_nil(url["width"]) -> + metadata ++ + [ + {:meta, [property: "og:#{type}:width", content: "#{url["width"]}"], []}, + {:meta, [property: "og:#{type}:height", content: "#{url["height"]}"], []} + ] + + true -> + metadata + end + end end diff --git a/test/pleroma/web/metadata/providers/open_graph_test.exs b/test/pleroma/web/metadata/providers/open_graph_test.exs index fc44b3cbd..f5f71cee5 100644 --- a/test/pleroma/web/metadata/providers/open_graph_test.exs +++ b/test/pleroma/web/metadata/providers/open_graph_test.exs @@ -22,7 +22,12 @@ test "it renders all supported types of attachments and skips unknown types" do "attachment" => [ %{ "url" => [ - %{"mediaType" => "image/png", "href" => "https://pleroma.gov/tenshi.png"} + %{ + "mediaType" => "image/png", + "href" => "https://pleroma.gov/tenshi.png", + "height" => 1024, + "width" => 1280 + } ] }, %{ @@ -35,7 +40,12 @@ test "it renders all supported types of attachments and skips unknown types" do }, %{ "url" => [ - %{"mediaType" => "video/webm", "href" => "https://pleroma.gov/about/juche.webm"} + %{ + "mediaType" => "video/webm", + "href" => "https://pleroma.gov/about/juche.webm", + "height" => 600, + "width" => 800 + } ] }, %{ @@ -55,11 +65,15 @@ test "it renders all supported types of attachments and skips unknown types" do assert Enum.all?( [ {:meta, [property: "og:image", content: "https://pleroma.gov/tenshi.png"], []}, + {:meta, [property: "og:image:width", content: "1280"], []}, + {:meta, [property: "og:image:height", content: "1024"], []}, {:meta, [property: "og:audio", content: "http://www.gnu.org/music/free-software-song.au"], []}, {:meta, [property: "og:video", content: "https://pleroma.gov/about/juche.webm"], - []} + []}, + {:meta, [property: "og:video:width", content: "800"], []}, + {:meta, [property: "og:video:height", content: "600"], []} ], fn element -> element in result end ) From 9cb8960284c7046d4a058c0526b55bce5ef9513b Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 8 Jun 2021 17:14:30 -0500 Subject: [PATCH 39/74] Switch OGP default type from "website" to "article" This is what Mastodon uses and might fix some link preview bugs I've encountered --- lib/pleroma/web/metadata/providers/open_graph.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 78cef1525..e5712ec63 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -32,7 +32,7 @@ def build_tags(%{ property: "og:description", content: scrubbed_content ], []}, - {:meta, [property: "og:type", content: "website"], []} + {:meta, [property: "og:type", content: "article"], []} ] ++ if attachments == [] or Metadata.activity_nsfw?(object) do [ @@ -57,7 +57,7 @@ def build_tags(%{user: user}) do ], []}, {:meta, [property: "og:url", content: user.uri || user.ap_id], []}, {:meta, [property: "og:description", content: truncated_bio], []}, - {:meta, [property: "og:type", content: "website"], []}, + {:meta, [property: "og:type", content: "article"], []}, {:meta, [property: "og:image", content: Utils.attachment_url(User.avatar_url(user))], []}, {:meta, [property: "og:image:width", content: 150], []}, {:meta, [property: "og:image:height", content: 150], []} From 45ab24f2d9b289498c3b009d9509ee7aec818eba Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 8 Jun 2021 18:03:21 -0500 Subject: [PATCH 40/74] Switch to runtime deps in Pleroma.Instances Speeds up recompilation by limiting compile cycles --- lib/pleroma/instances.ex | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/instances.ex b/lib/pleroma/instances.ex index 80addcc52..6b57e56da 100644 --- a/lib/pleroma/instances.ex +++ b/lib/pleroma/instances.ex @@ -5,13 +5,18 @@ defmodule Pleroma.Instances do @moduledoc "Instances context." - @adapter Pleroma.Instances.Instance + alias Pleroma.Instances.Instance - defdelegate filter_reachable(urls_or_hosts), to: @adapter - defdelegate reachable?(url_or_host), to: @adapter - defdelegate set_reachable(url_or_host), to: @adapter - defdelegate set_unreachable(url_or_host, unreachable_since \\ nil), to: @adapter - defdelegate get_consistently_unreachable(), to: @adapter + def filter_reachable(urls_or_hosts), do: Instance.filter_reachable(urls_or_hosts) + + def reachable?(url_or_host), do: Instance.reachable?(url_or_host) + + def set_reachable(url_or_host), do: Instance.set_reachable(url_or_host) + + def set_unreachable(url_or_host, unreachable_since \\ nil), + do: Instance.set_unreachable(url_or_host, unreachable_since) + + def get_consistently_unreachable, do: Instance.get_consistently_unreachable() def set_consistently_unreachable(url_or_host), do: set_unreachable(url_or_host, reachability_datetime_threshold()) From 67ec0e6c18ec6c84fc3aefe9ab883e8f0b01792f Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 8 Jun 2021 18:18:25 -0500 Subject: [PATCH 41/74] Switch to runtime deps in ActivityPub.SideEffects Speeds up recompilation by reducing compile cycles --- lib/pleroma/web/activity_pub/side_effects.ex | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 674356d9a..1eca1cb31 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -28,11 +28,12 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do require Logger @cachex Pleroma.Config.get([:cachex, :provider], Cachex) - @ap_streamer Pleroma.Config.get([:side_effects, :ap_streamer], ActivityPub) @logger Pleroma.Config.get([:side_effects, :logger], Logger) @behaviour Pleroma.Web.ActivityPub.SideEffects.Handling + defp ap_streamer, do: Pleroma.Config.get([:side_effects, :ap_streamer], ActivityPub) + @impl true def handle(object, meta \\ []) @@ -302,8 +303,8 @@ def handle(%{data: %{"type" => "Delete", "object" => deleted_object}} = object, MessageReference.delete_for_object(deleted_object) - @ap_streamer.stream_out(object) - @ap_streamer.stream_out_participations(deleted_object, user) + ap_streamer().stream_out(object) + ap_streamer().stream_out_participations(deleted_object, user) :ok else {:actor, _} -> From 45b7325b9ef8110b424df3541b321c9a220f886c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 8 Jun 2021 19:14:12 -0500 Subject: [PATCH 42/74] Refactor skipped plugs into Pleroma.Web functions Speeds up recompilation by reducing compile cycles --- lib/pleroma/web.ex | 8 ++++++++ lib/pleroma/web/masto_fe_controller.ex | 8 ++------ .../web/mastodon_api/controllers/account_controller.ex | 5 ++--- .../web/mastodon_api/controllers/app_controller.ex | 8 +------- .../mastodon_api/controllers/custom_emoji_controller.ex | 6 +----- .../web/mastodon_api/controllers/instance_controller.ex | 6 +----- .../mastodon_api/controllers/mastodon_api_controller.ex | 6 +----- .../web/mastodon_api/controllers/status_controller.ex | 5 +---- .../web/mastodon_api/controllers/timeline_controller.ex | 3 +-- lib/pleroma/web/o_auth/o_auth_controller.ex | 5 +---- .../web/pleroma_api/controllers/account_controller.ex | 6 +----- .../web/pleroma_api/controllers/emoji_pack_controller.ex | 6 +----- lib/pleroma/web/twitter_api/controller.ex | 7 +------ 13 files changed, 22 insertions(+), 57 deletions(-) diff --git a/lib/pleroma/web.ex b/lib/pleroma/web.ex index d26931af9..5761e3b38 100644 --- a/lib/pleroma/web.ex +++ b/lib/pleroma/web.ex @@ -62,6 +62,14 @@ defp skip_plug(conn, plug_modules) do ) end + defp skip_auth(conn, _) do + skip_plug(conn, [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug]) + end + + defp skip_public_check(conn, _) do + skip_plug(conn, EnsurePublicOrAuthenticatedPlug) + end + # Executed just before actual controller action, invokes before-action hooks (callbacks) defp action(conn, params) do with %{halted: false} = conn <- diff --git a/lib/pleroma/web/masto_fe_controller.ex b/lib/pleroma/web/masto_fe_controller.ex index e788ab37a..d2460f51d 100644 --- a/lib/pleroma/web/masto_fe_controller.ex +++ b/lib/pleroma/web/masto_fe_controller.ex @@ -8,13 +8,12 @@ defmodule Pleroma.Web.MastoFEController do alias Pleroma.User alias Pleroma.Web.MastodonAPI.AuthController alias Pleroma.Web.OAuth.Token - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug plug(OAuthScopesPlug, %{scopes: ["write:accounts"]} when action == :put_settings) # Note: :index action handles attempt of unauthenticated access to private instance with redirect - plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action == :index) + plug(:skip_public_check when action == :index) plug( OAuthScopesPlug, @@ -22,10 +21,7 @@ defmodule Pleroma.Web.MastoFEController do when action == :index ) - plug( - :skip_plug, - [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :manifest - ) + plug(:skip_auth when action == :manifest) @doc "GET /web/*path" def index(conn, _params) do diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 4cc3645d4..5fcbffc34 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -24,7 +24,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do alias Pleroma.Web.MastodonAPI.MastodonAPIController alias Pleroma.Web.MastodonAPI.StatusView alias Pleroma.Web.OAuth.OAuthController - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter alias Pleroma.Web.TwitterAPI.TwitterAPI @@ -32,9 +31,9 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug(:skip_plug, [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :create) + plug(:skip_auth when action == :create) - plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:show, :statuses]) + plug(:skip_public_check when action in [:show, :statuses]) plug( OAuthScopesPlug, diff --git a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex index dd3b39c77..a95cc52fd 100644 --- a/lib/pleroma/web/mastodon_api/controllers/app_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/app_controller.ex @@ -14,16 +14,10 @@ defmodule Pleroma.Web.MastodonAPI.AppController do alias Pleroma.Web.OAuth.App alias Pleroma.Web.OAuth.Scopes alias Pleroma.Web.OAuth.Token - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug - alias Pleroma.Web.Plugs.OAuthScopesPlug action_fallback(Pleroma.Web.MastodonAPI.FallbackController) - plug( - :skip_plug, - [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] - when action in [:create, :verify_credentials] - ) + plug(:skip_auth when action in [:create, :verify_credentials]) plug(Pleroma.Web.ApiSpec.CastAndValidate) diff --git a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex index d7e18dc92..31b647755 100644 --- a/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex @@ -7,11 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.CustomEmojiController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug( - :skip_plug, - [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug] - when action == :index - ) + plug(:skip_auth when action == :index) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.CustomEmojiOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex index c7a5267d4..5376e4594 100644 --- a/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/instance_controller.ex @@ -7,11 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug( - :skip_plug, - [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug] - when action in [:show, :peers] - ) + plug(:skip_auth when action in [:show, :peers]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.InstanceOperation diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex index a1bcc91d9..a0f79f377 100644 --- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex @@ -15,11 +15,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do require Logger - plug( - :skip_plug, - [Pleroma.Web.Plugs.OAuthScopesPlug, Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug] - when action in [:empty_array, :empty_object] - ) + plug(:skip_auth when action in [:empty_array, :empty_object]) action_fallback(Pleroma.Web.MastodonAPI.FallbackController) diff --git a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex index 724dc5c5d..2eff4d9d0 100644 --- a/lib/pleroma/web/mastodon_api/controllers/status_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/status_controller.ex @@ -27,10 +27,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug( - :skip_plug, - Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug when action in [:index, :show] - ) + plug(:skip_public_check when action in [:index, :show]) @unauthenticated_access %{fallback: :proceed_unauthenticated, scopes: []} diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index 845f546d4..4b49b74ca 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -12,12 +12,11 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do alias Pleroma.Pagination alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug(:skip_plug, EnsurePublicOrAuthenticatedPlug when action in [:public, :hashtag]) + plug(:skip_public_check when action in [:public, :hashtag]) # TODO: Replace with a macro when there is a Phoenix release with the following commit in it: # https://github.com/phoenixframework/phoenix/commit/2e8c63c01fec4dde5467dbbbf9705ff9e780735e diff --git a/lib/pleroma/web/o_auth/o_auth_controller.ex b/lib/pleroma/web/o_auth/o_auth_controller.ex index 6951e0253..247d8399c 100644 --- a/lib/pleroma/web/o_auth/o_auth_controller.ex +++ b/lib/pleroma/web/o_auth/o_auth_controller.ex @@ -32,10 +32,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do plug(:fetch_session) plug(:fetch_flash) - plug(:skip_plug, [ - Pleroma.Web.Plugs.OAuthScopesPlug, - Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug - ]) + plug(:skip_auth) plug(RateLimiter, [name: :authentication] when action == :create_authorization) diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex index 6e01c5497..8e4d3e7f7 100644 --- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex @@ -11,7 +11,6 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.MastodonAPI.StatusView - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.Plugs.RateLimiter @@ -29,10 +28,7 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do plug(Pleroma.Web.ApiSpec.CastAndValidate) - plug( - :skip_plug, - [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :confirmation_resend - ) + plug(:skip_auth when action == :confirmation_resend) plug( OAuthScopesPlug, diff --git a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex index d0f677d3c..1ea44f347 100644 --- a/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex @@ -22,11 +22,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackController do ] ) - @skip_plugs [ - Pleroma.Web.Plugs.OAuthScopesPlug, - Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug - ] - plug(:skip_plug, @skip_plugs when action in [:index, :archive, :show]) + plug(:skip_auth when action in [:index, :archive, :show]) defdelegate open_api_operation(action), to: Pleroma.Web.ApiSpec.PleromaEmojiPackOperation diff --git a/lib/pleroma/web/twitter_api/controller.ex b/lib/pleroma/web/twitter_api/controller.ex index e32713311..1e78ff2c1 100644 --- a/lib/pleroma/web/twitter_api/controller.ex +++ b/lib/pleroma/web/twitter_api/controller.ex @@ -7,17 +7,12 @@ defmodule Pleroma.Web.TwitterAPI.Controller do alias Pleroma.User alias Pleroma.Web.OAuth.Token - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug alias Pleroma.Web.TwitterAPI.TokenView require Logger - plug( - :skip_plug, - [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] when action == :confirm_email - ) - + plug(:skip_auth when action == :confirm_email) plug(:skip_plug, OAuthScopesPlug when action in [:oauth_tokens, :revoke_token]) action_fallback(:errors) From c839078a7517f6c3119cffa4eed953ea0c9334d2 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 9 Jun 2021 03:43:01 +0200 Subject: [PATCH 43/74] ObjectValidators.{Announce,EmojiReact,Like}: Fix context, actor & addressing --- .../object_validators/announce_validator.ex | 27 +++++++--- .../object_validators/common_fixes.ex | 20 +++++++- .../emoji_react_validator.ex | 31 ++++++------ .../object_validators/like_validator.ex | 50 +++++++------------ .../announce_validation_test.exs | 22 ++++---- .../like_validation_test.exs | 35 +++++++------ test/pleroma/web/activity_pub/relay_test.exs | 2 +- .../transmogrifier/announce_handling_test.exs | 23 --------- 8 files changed, 105 insertions(+), 105 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex index a2f752ac3..4db76f387 100644 --- a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object alias Pleroma.User + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes alias Pleroma.Web.ActivityPub.Utils alias Pleroma.Web.ActivityPub.Visibility @@ -23,7 +24,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do field(:type, :string) field(:object, ObjectValidators.ObjectID) field(:actor, ObjectValidators.ObjectID) - field(:context, :string, autogenerate: {Utils, :generate_context_id, []}) + field(:context, :string) field(:to, ObjectValidators.Recipients, default: []) field(:cc, ObjectValidators.Recipients, default: []) field(:published, ObjectValidators.DateTime) @@ -36,6 +37,10 @@ def cast_and_validate(data) do end def cast_data(data) do + data = + data + |> fix() + %__MODULE__{} |> changeset(data) end @@ -43,11 +48,21 @@ def cast_data(data) do def changeset(struct, data) do struct |> cast(data, __schema__(:fields)) - |> fix_after_cast() end - def fix_after_cast(cng) do - cng + defp fix(data) do + data = + data + |> CommonFixes.fix_actor() + |> CommonFixes.fix_activity_addressing() + + with %Object{} = object <- Object.normalize(data["object"]) do + data + |> CommonFixes.fix_activity_context(object) + |> CommonFixes.fix_object_action_recipients(object) + else + _ -> data + end end defp validate_data(data_cng) do @@ -60,7 +75,7 @@ defp validate_data(data_cng) do |> validate_announcable() end - def validate_announcable(cng) do + defp validate_announcable(cng) do with actor when is_binary(actor) <- get_field(cng, :actor), object when is_binary(object) <- get_field(cng, :object), %User{} = actor <- User.get_cached_by_ap_id(actor), @@ -91,7 +106,7 @@ def validate_announcable(cng) do end end - def validate_existing_announce(cng) do + defp validate_existing_announce(cng) do actor = get_field(cng, :actor) object = get_field(cng, :object) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index c958fcc5d..9631013a7 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Object alias Pleroma.Object.Containment alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier @@ -36,7 +37,7 @@ def fix_object_defaults(data) do |> Transmogrifier.fix_implicit_addressing(follower_collection) end - def fix_activity_addressing(activity, _meta) do + def fix_activity_addressing(activity) do %User{follower_address: follower_collection} = User.get_cached_by_ap_id(activity["actor"]) activity @@ -57,4 +58,21 @@ def fix_actor(data) do |> Map.put("actor", actor) |> Map.put("attributedTo", actor) end + + def fix_activity_context(data, %Object{data: %{"context" => object_context}}) do + data + |> Map.put("context", object_context) + end + + def fix_object_action_recipients(%{"actor" => actor} = data, %Object{data: %{"actor" => actor}}) do + to = ((data["to"] || []) -- [actor]) |> Enum.uniq() + + Map.put(data, "to", to) + end + + def fix_object_action_recipients(data, %Object{data: %{"actor" => actor}}) do + to = ((data["to"] || []) ++ [actor]) |> Enum.uniq() + + Map.put(data, "to", to) + end end diff --git a/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex b/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex index ec7566515..a18bd7540 100644 --- a/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/emoji_react_validator.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.EmojiReactValidator do alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -31,6 +32,10 @@ def cast_and_validate(data) do end def cast_data(data) do + data = + data + |> fix() + %__MODULE__{} |> changeset(data) end @@ -38,28 +43,24 @@ def cast_data(data) do def changeset(struct, data) do struct |> cast(data, __schema__(:fields)) - |> fix_after_cast() end - def fix_after_cast(cng) do - cng - |> fix_context() - end + defp fix(data) do + data = + data + |> CommonFixes.fix_actor() + |> CommonFixes.fix_activity_addressing() - def fix_context(cng) do - object = get_field(cng, :object) - - with nil <- get_field(cng, :context), - %Object{data: %{"context" => context}} <- Object.get_cached_by_ap_id(object) do - cng - |> put_change(:context, context) + with %Object{} = object <- Object.normalize(data["object"]) do + data + |> CommonFixes.fix_activity_context(object) + |> CommonFixes.fix_object_action_recipients(object) else - _ -> - cng + _ -> data end end - def validate_emoji(cng) do + defp validate_emoji(cng) do content = get_field(cng, :content) if Pleroma.Emoji.is_unicode_emoji?(content) do diff --git a/lib/pleroma/web/activity_pub/object_validators/like_validator.ex b/lib/pleroma/web/activity_pub/object_validators/like_validator.ex index 509da507b..8b99c89b9 100644 --- a/lib/pleroma/web/activity_pub/object_validators/like_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/like_validator.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.LikeValidator do alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes alias Pleroma.Web.ActivityPub.Utils import Ecto.Changeset @@ -31,6 +32,10 @@ def cast_and_validate(data) do end def cast_data(data) do + data = + data + |> fix() + %__MODULE__{} |> changeset(data) end @@ -38,41 +43,20 @@ def cast_data(data) do def changeset(struct, data) do struct |> cast(data, __schema__(:fields)) - |> fix_after_cast() end - def fix_after_cast(cng) do - cng - |> fix_recipients() - |> fix_context() - end + defp fix(data) do + data = + data + |> CommonFixes.fix_actor() + |> CommonFixes.fix_activity_addressing() - def fix_context(cng) do - object = get_field(cng, :object) - - with nil <- get_field(cng, :context), - %Object{data: %{"context" => context}} <- Object.get_cached_by_ap_id(object) do - cng - |> put_change(:context, context) + with %Object{} = object <- Object.normalize(data["object"]) do + data + |> CommonFixes.fix_activity_context(object) + |> CommonFixes.fix_object_action_recipients(object) else - _ -> - cng - end - end - - def fix_recipients(cng) do - to = get_field(cng, :to) - cc = get_field(cng, :cc) - object = get_field(cng, :object) - - with {[], []} <- {to, cc}, - %Object{data: %{"actor" => actor}} <- Object.get_cached_by_ap_id(object), - {:ok, actor} <- ObjectValidators.ObjectID.cast(actor) do - cng - |> put_change(:to, [actor]) - else - _ -> - cng + _ -> data end end @@ -85,7 +69,7 @@ defp validate_data(data_cng) do |> validate_existing_like() end - def validate_existing_like(%{changes: %{actor: actor, object: object}} = cng) do + defp validate_existing_like(%{changes: %{actor: actor, object: object}} = cng) do if Utils.get_existing_like(actor, %{data: %{"id" => object}}) do cng |> add_error(:actor, "already liked this object") @@ -95,5 +79,5 @@ def validate_existing_like(%{changes: %{actor: actor, object: object}} = cng) do end end - def validate_existing_like(cng), do: cng + defp validate_existing_like(cng), do: cng end diff --git a/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs b/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs index 939922127..20964e855 100644 --- a/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs +++ b/test/pleroma/web/activity_pub/object_validators/announce_validation_test.exs @@ -33,6 +33,18 @@ test "returns ok for a valid announce", %{valid_announce: valid_announce} do assert {:ok, _object, _meta} = ObjectValidator.validate(valid_announce, []) end + test "keeps announced object context", %{valid_announce: valid_announce} do + assert %Object{data: %{"context" => object_context}} = + Object.get_cached_by_ap_id(valid_announce["object"]) + + {:ok, %{"context" => context}, _} = + valid_announce + |> Map.put("context", "https://example.org/invalid_context_id") + |> ObjectValidator.validate([]) + + assert context == object_context + end + test "returns an error if the object can't be found", %{valid_announce: valid_announce} do without_object = valid_announce @@ -51,16 +63,6 @@ test "returns an error if the object can't be found", %{valid_announce: valid_an assert {:object, {"can't find object", []}} in cng.errors end - test "returns an error if we don't have the actor", %{valid_announce: valid_announce} do - nonexisting_actor = - valid_announce - |> Map.put("actor", "https://gensokyo.2hu/users/raymoo") - - {:error, cng} = ObjectValidator.validate(nonexisting_actor, []) - - assert {:actor, {"can't find user", []}} in cng.errors - end - test "returns an error if the actor already announced the object", %{ valid_announce: valid_announce, announcer: announcer, diff --git a/test/pleroma/web/activity_pub/object_validators/like_validation_test.exs b/test/pleroma/web/activity_pub/object_validators/like_validation_test.exs index 55f67232e..e9ad817f1 100644 --- a/test/pleroma/web/activity_pub/object_validators/like_validation_test.exs +++ b/test/pleroma/web/activity_pub/object_validators/like_validation_test.exs @@ -40,17 +40,30 @@ test "is valid for a valid object", %{valid_like: valid_like} do assert LikeValidator.cast_and_validate(valid_like).valid? end - test "sets the 'to' field to the object actor if no recipients are given", %{ + test "Add object actor from 'to' field if it doesn't owns the like", %{valid_like: valid_like} do + user = insert(:user) + + object_actor = valid_like["actor"] + + valid_like = + valid_like + |> Map.put("actor", user.ap_id) + |> Map.put("to", []) + + {:ok, object, _meta} = ObjectValidator.validate(valid_like, []) + assert object_actor in object["to"] + end + + test "Removes object actor from 'to' field if it owns the like", %{ valid_like: valid_like, user: user } do - without_recipients = + valid_like = valid_like - |> Map.delete("to") + |> Map.put("to", [user.ap_id]) - {:ok, object, _meta} = ObjectValidator.validate(without_recipients, []) - - assert object["to"] == [user.ap_id] + {:ok, object, _meta} = ObjectValidator.validate(valid_like, []) + refute user.ap_id in object["to"] end test "sets the context field to the context of the object if no context is given", %{ @@ -66,16 +79,6 @@ test "sets the context field to the context of the object if no context is given assert object["context"] == post_activity.data["context"] end - test "it errors when the actor is missing or not known", %{valid_like: valid_like} do - without_actor = Map.delete(valid_like, "actor") - - refute LikeValidator.cast_and_validate(without_actor).valid? - - with_invalid_actor = Map.put(valid_like, "actor", "invalidactor") - - refute LikeValidator.cast_and_validate(with_invalid_actor).valid? - end - test "it errors when the object is missing or not known", %{valid_like: valid_like} do without_object = Map.delete(valid_like, "object") diff --git a/test/pleroma/web/activity_pub/relay_test.exs b/test/pleroma/web/activity_pub/relay_test.exs index 2aa07d1b5..d6de7d61e 100644 --- a/test/pleroma/web/activity_pub/relay_test.exs +++ b/test/pleroma/web/activity_pub/relay_test.exs @@ -148,7 +148,7 @@ test "returns error when object is unknown" do assert {:ok, %Activity{} = activity} = Relay.publish(note) assert activity.data["type"] == "Announce" assert activity.data["actor"] == service_actor.ap_id - assert activity.data["to"] == [service_actor.follower_address] + assert service_actor.follower_address in activity.data["to"] assert called(Pleroma.Web.Federator.publish(activity)) end diff --git a/test/pleroma/web/activity_pub/transmogrifier/announce_handling_test.exs b/test/pleroma/web/activity_pub/transmogrifier/announce_handling_test.exs index 1886fea3f..524acddaf 100644 --- a/test/pleroma/web/activity_pub/transmogrifier/announce_handling_test.exs +++ b/test/pleroma/web/activity_pub/transmogrifier/announce_handling_test.exs @@ -150,27 +150,4 @@ test "it rejects incoming announces with an inlined activity from another origin assert {:error, _e} = Transmogrifier.handle_incoming(data) end - - test "it does not clobber the addressing on announce activities" do - user = insert(:user) - {:ok, activity} = CommonAPI.post(user, %{status: "hey"}) - - data = - File.read!("test/fixtures/mastodon-announce.json") - |> Jason.decode!() - |> Map.put("object", Object.normalize(activity, fetch: false).data["id"]) - |> Map.put("to", ["http://mastodon.example.org/users/admin/followers"]) - |> Map.put("cc", []) - - _user = - insert(:user, - local: false, - ap_id: data["actor"], - follower_address: "http://mastodon.example.org/users/admin/followers" - ) - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - - assert data["to"] == ["http://mastodon.example.org/users/admin/followers"] - end end From d0147eba78ea6aeb054f53f18c36017a7583ff5c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 9 Jun 2021 09:28:22 -0500 Subject: [PATCH 44/74] Use eblurhash 1.1.0 from Hex --- mix.exs | 4 +--- mix.lock | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mix.exs b/mix.exs index 5d945bf5f..afb4da1f6 100644 --- a/mix.exs +++ b/mix.exs @@ -196,9 +196,7 @@ defp deps do {:majic, git: "https://git.pleroma.social/pleroma/elixir-libraries/majic.git", ref: "289cda1b6d0d70ccb2ba508a2b0bd24638db2880"}, - {:eblurhash, - git: "https://github.com/zotonic/eblurhash.git", - ref: "04a0b76eadf4de1be17726f39b6313b88708fd12"}, + {:eblurhash, "~> 1.1.0"}, {:open_api_spex, "~> 3.10"}, ## dev & test diff --git a/mix.lock b/mix.lock index 1a0cae3ee..9665ca753 100644 --- a/mix.lock +++ b/mix.lock @@ -29,7 +29,7 @@ "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, "earmark": {:hex, :earmark, "1.4.15", "2c7f924bf495ec1f65bd144b355d0949a05a254d0ec561740308a54946a67888", [:mix], [{:earmark_parser, ">= 1.4.13", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "3b1209b85bc9f3586f370f7c363f6533788fb4e51db23aa79565875e7f9999ee"}, "earmark_parser": {:hex, :earmark_parser, "1.4.13", "0c98163e7d04a15feb62000e1a891489feb29f3d10cb57d4f845c405852bbef8", [:mix], [], "hexpm", "d602c26af3a0af43d2f2645613f65841657ad6efc9f0e361c3b6c06b578214ba"}, - "eblurhash": {:git, "https://github.com/zotonic/eblurhash.git", "04a0b76eadf4de1be17726f39b6313b88708fd12", [ref: "04a0b76eadf4de1be17726f39b6313b88708fd12"]}, + "eblurhash": {:hex, :eblurhash, "1.1.0", "e10ccae762598507ebfacf0b645ed49520f2afa3e7e9943e73a91117dffce415", [:rebar3], [], "hexpm", "2e6b889d09fddd374e3c5ac57c486138768763264e99ac1074ae5fa7fc9ab51d"}, "ecto": {:hex, :ecto, "3.4.6", "08f7afad3257d6eb8613309af31037e16c36808dfda5a3cd0cb4e9738db030e4", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6f13a9e2a62e75c2dcfc7207bfc65645ab387af8360db4c89fee8b5a4bf3f70b"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, "ecto_explain": {:hex, :ecto_explain, "0.1.2", "a9d504cbd4adc809911f796d5ef7ebb17a576a6d32286c3d464c015bd39d5541", [:mix], [], "hexpm", "1d0e7798ae30ecf4ce34e912e5354a0c1c832b7ebceba39298270b9a9f316330"}, From 19a49dd757ebf60e8501c481f2d2be9d5e326808 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 09:58:29 -0500 Subject: [PATCH 45/74] Remove Metadata.Utils.attachment_url/1 This was a wasteful shortcut to MediaProxy.preview_url/1 and we don't always want the preview_url in the metadata anyway. --- lib/pleroma/web/metadata/providers/open_graph.ex | 16 ++++++++++------ .../web/metadata/providers/twitter_card.ex | 12 +++++++++--- lib/pleroma/web/metadata/utils.ex | 5 ----- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index e5712ec63..75d155236 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.Metadata.Providers.OpenGraph do alias Pleroma.User + alias Pleroma.Web.MediaProxy alias Pleroma.Web.Metadata alias Pleroma.Web.Metadata.Providers.Provider alias Pleroma.Web.Metadata.Utils @@ -36,8 +37,7 @@ def build_tags(%{ ] ++ if attachments == [] or Metadata.activity_nsfw?(object) do [ - {:meta, [property: "og:image", content: Utils.attachment_url(User.avatar_url(user))], - []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []}, {:meta, [property: "og:image:width", content: 150], []}, {:meta, [property: "og:image:height", content: 150], []} ] @@ -58,7 +58,7 @@ def build_tags(%{user: user}) do {:meta, [property: "og:url", content: user.uri || user.ap_id], []}, {:meta, [property: "og:description", content: truncated_bio], []}, {:meta, [property: "og:type", content: "article"], []}, - {:meta, [property: "og:image", content: Utils.attachment_url(User.avatar_url(user))], []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []}, {:meta, [property: "og:image:width", content: 150], []}, {:meta, [property: "og:image:height", content: 150], []} ] @@ -74,13 +74,17 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do case Utils.fetch_media_type(@media_types, url["mediaType"]) do "audio" -> [ - {:meta, [property: "og:audio", content: Utils.attachment_url(url["href"])], []} + {:meta, [property: "og:audio", content: MediaProxy.url(url["href"])], []} | acc ] + # Not using preview_url for this. It saves bandwidth, but the image dimensions will be wrong. + # We generate it on the fly and have no way to capture or analyze the image to get the dimensions. + # This can be an issue for apps/FEs rendering images in timelines too, but you can get clever with + # the aspect ratio metadata as a workaround. "image" -> [ - {:meta, [property: "og:image", content: Utils.attachment_url(url["href"])], []}, + {:meta, [property: "og:image", content: MediaProxy.url(url["href"])], []}, {:meta, [property: "og:image:alt", content: attachment["name"]], []} | acc ] @@ -88,7 +92,7 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do "video" -> [ - {:meta, [property: "og:video", content: Utils.attachment_url(url["href"])], []} + {:meta, [property: "og:video", content: MediaProxy.url(url["href"])], []} | acc ] |> maybe_add_dimensions(url) diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index dfe477a8a..a952d0a05 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do alias Pleroma.User + alias Pleroma.Web.MediaProxy alias Pleroma.Web.Metadata alias Pleroma.Web.Metadata.Providers.Provider alias Pleroma.Web.Metadata.Utils @@ -48,7 +49,8 @@ defp title_tag(user) do end def image_tag(user) do - {:meta, [property: "twitter:image", content: Utils.attachment_url(User.avatar_url(user))], []} + {:meta, [property: "twitter:image", content: MediaProxy.preview_url(User.avatar_url(user))], + []} end defp build_attachments(id, %{data: %{"attachment" => attachments}}) do @@ -65,13 +67,17 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do | acc ] + # Not using preview_url for this. It saves bandwidth, but the image dimensions will be wrong. + # We generate it on the fly and have no way to capture or analyze the image to get the dimensions. + # This can be an issue for apps/FEs rendering images in timelines too, but you can get clever with + # the aspect ratio metadata as a workaround. "image" -> [ {:meta, [property: "twitter:card", content: "summary_large_image"], []}, {:meta, [ property: "twitter:player", - content: Utils.attachment_url(url["href"]) + content: MediaProxy.url(url["href"]) ], []} | acc ] @@ -87,7 +93,7 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do {:meta, [property: "twitter:player", content: player_url(id)], []}, {:meta, [property: "twitter:player:width", content: "#{width}"], []}, {:meta, [property: "twitter:player:height", content: "#{height}"], []}, - {:meta, [property: "twitter:player:stream", content: url["href"]], []}, + {:meta, [property: "twitter:player:stream", content: MediaProxy.url(url["href"])], []}, {:meta, [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} | acc diff --git a/lib/pleroma/web/metadata/utils.ex b/lib/pleroma/web/metadata/utils.ex index bc31d66b9..caca42934 100644 --- a/lib/pleroma/web/metadata/utils.ex +++ b/lib/pleroma/web/metadata/utils.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.Metadata.Utils do alias Pleroma.Emoji alias Pleroma.Formatter alias Pleroma.HTML - alias Pleroma.Web.MediaProxy def scrub_html_and_truncate(%{data: %{"content" => content}} = object) do content @@ -38,10 +37,6 @@ def scrub_html(content) when is_binary(content) do def scrub_html(content), do: content - def attachment_url(url) do - MediaProxy.preview_url(url) - end - def user_name_string(user) do "#{user.name} " <> if user.local do From 2cf648d41989dc9cf243fb0972b075726c86adad Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 10:02:41 -0500 Subject: [PATCH 46/74] Add a video thumbnail to the OpenGraph metadata if Media Preview Proxy is enabled. --- lib/pleroma/web/metadata/providers/open_graph.ex | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 75d155236..332684782 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -96,6 +96,7 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do | acc ] |> maybe_add_dimensions(url) + |> maybe_add_video_thumbnail(url) _ -> acc @@ -124,4 +125,18 @@ defp maybe_add_dimensions(metadata, url) do metadata end end + + defp maybe_add_video_thumbnail(url, metadata) do + cond do + Pleroma.Config.get([:media_preview_proxy, :enabled], false) -> + [ + {:meta, [property: "og:image:width", content: "#{url["width"]}"], []}, + {:meta, [property: "og:image:height", content: "#{url["height"]}"], []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(url["href"])], []} + ] + + true -> + metadata + end + end end From dc8fe91decd9fd94b5e1ea4fcf2f798430b4c42e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 10:06:44 -0500 Subject: [PATCH 47/74] Metadata.Utils.attachment_url/1 was used in this test too --- test/pleroma/web/metadata/providers/twitter_card_test.exs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/pleroma/web/metadata/providers/twitter_card_test.exs b/test/pleroma/web/metadata/providers/twitter_card_test.exs index dbb15b79f..1b8d27cda 100644 --- a/test/pleroma/web/metadata/providers/twitter_card_test.exs +++ b/test/pleroma/web/metadata/providers/twitter_card_test.exs @@ -9,6 +9,7 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do alias Pleroma.User alias Pleroma.Web.CommonAPI alias Pleroma.Web.Endpoint + alias Pleroma.Web.MediaProxy alias Pleroma.Web.Metadata.Providers.TwitterCard alias Pleroma.Web.Metadata.Utils alias Pleroma.Web.Router @@ -17,7 +18,7 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCardTest do test "it renders twitter card for user info" do user = insert(:user, name: "Jimmy Hendriks", bio: "born 19 March 1994") - avatar_url = Utils.attachment_url(User.avatar_url(user)) + avatar_url = MediaProxy.preview_url(User.avatar_url(user)) res = TwitterCard.build_tags(%{user: user}) assert res == [ From 86bcb87e6c58797387934cbda5ec14b81f3f5f1d Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:05:24 -0500 Subject: [PATCH 48/74] Fix incorrectly ordered arguments to the function and not properly merging lists. --- lib/pleroma/web/metadata/providers/open_graph.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 332684782..0a90904af 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -126,9 +126,10 @@ defp maybe_add_dimensions(metadata, url) do end end - defp maybe_add_video_thumbnail(url, metadata) do + defp maybe_add_video_thumbnail(metadata, url) do cond do Pleroma.Config.get([:media_preview_proxy, :enabled], false) -> + metadata ++ [ {:meta, [property: "og:image:width", content: "#{url["width"]}"], []}, {:meta, [property: "og:image:height", content: "#{url["height"]}"], []}, From 2a47156b87c668d11f3f2eeee5782472c12c5279 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:06:53 -0500 Subject: [PATCH 49/74] Lint --- lib/pleroma/web/metadata/providers/open_graph.ex | 16 +++++++++------- .../web/metadata/providers/twitter_card.ex | 3 ++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index 0a90904af..f6c5c36d7 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -37,7 +37,8 @@ def build_tags(%{ ] ++ if attachments == [] or Metadata.activity_nsfw?(object) do [ - {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], + []}, {:meta, [property: "og:image:width", content: 150], []}, {:meta, [property: "og:image:height", content: 150], []} ] @@ -58,7 +59,8 @@ def build_tags(%{user: user}) do {:meta, [property: "og:url", content: user.uri || user.ap_id], []}, {:meta, [property: "og:description", content: truncated_bio], []}, {:meta, [property: "og:type", content: "article"], []}, - {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(User.avatar_url(user))], + []}, {:meta, [property: "og:image:width", content: 150], []}, {:meta, [property: "og:image:height", content: 150], []} ] @@ -130,11 +132,11 @@ defp maybe_add_video_thumbnail(metadata, url) do cond do Pleroma.Config.get([:media_preview_proxy, :enabled], false) -> metadata ++ - [ - {:meta, [property: "og:image:width", content: "#{url["width"]}"], []}, - {:meta, [property: "og:image:height", content: "#{url["height"]}"], []}, - {:meta, [property: "og:image", content: MediaProxy.preview_url(url["href"])], []} - ] + [ + {:meta, [property: "og:image:width", content: "#{url["width"]}"], []}, + {:meta, [property: "og:image:height", content: "#{url["height"]}"], []}, + {:meta, [property: "og:image", content: MediaProxy.preview_url(url["href"])], []} + ] true -> metadata diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index a952d0a05..bfcacf988 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -93,7 +93,8 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do {:meta, [property: "twitter:player", content: player_url(id)], []}, {:meta, [property: "twitter:player:width", content: "#{width}"], []}, {:meta, [property: "twitter:player:height", content: "#{height}"], []}, - {:meta, [property: "twitter:player:stream", content: MediaProxy.url(url["href"])], []}, + {:meta, [property: "twitter:player:stream", content: MediaProxy.url(url["href"])], + []}, {:meta, [property: "twitter:player:stream:content_type", content: url["mediaType"]], []} | acc From 5f7901cc48031dc7cb552a63b77721a6457425f6 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:09:14 -0500 Subject: [PATCH 50/74] Credo --- lib/pleroma/web/metadata/providers/open_graph.ex | 9 +++++---- lib/pleroma/web/metadata/providers/twitter_card.ex | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index f6c5c36d7..d9f2597ae 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -80,10 +80,11 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do | acc ] - # Not using preview_url for this. It saves bandwidth, but the image dimensions will be wrong. - # We generate it on the fly and have no way to capture or analyze the image to get the dimensions. - # This can be an issue for apps/FEs rendering images in timelines too, but you can get clever with - # the aspect ratio metadata as a workaround. + # Not using preview_url for this. It saves bandwidth, but the image dimensions will + # be wrong. We generate it on the fly and have no way to capture or analyze the + # analyze the image to get the dimensions. This can be an issue for apps/FEs + # rendering images in timelines too, but you can get clever with the aspect ratio + # metadata as a workaround. "image" -> [ {:meta, [property: "og:image", content: MediaProxy.url(url["href"])], []}, diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index bfcacf988..8adab818d 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -67,10 +67,11 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do | acc ] - # Not using preview_url for this. It saves bandwidth, but the image dimensions will be wrong. - # We generate it on the fly and have no way to capture or analyze the image to get the dimensions. - # This can be an issue for apps/FEs rendering images in timelines too, but you can get clever with - # the aspect ratio metadata as a workaround. + # Not using preview_url for this. It saves bandwidth, but the image dimensions will + # be wrong. We generate it on the fly and have no way to capture or analyze the + # analyze the image to get the dimensions. This can be an issue for apps/FEs + # rendering images in timelines too, but you can get clever with the aspect ratio + # metadata as a workaround. "image" -> [ {:meta, [property: "twitter:card", content: "summary_large_image"], []}, From f37db238480f841763555418d11859e3f0a06e5e Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:46:31 -0500 Subject: [PATCH 51/74] Test that videos only get image thumbnails in OGP metadata when we can produce them with Preview Proxy --- .../metadata/providers/open_graph_test.exs | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/test/pleroma/web/metadata/providers/open_graph_test.exs b/test/pleroma/web/metadata/providers/open_graph_test.exs index f5f71cee5..28ca8839c 100644 --- a/test/pleroma/web/metadata/providers/open_graph_test.exs +++ b/test/pleroma/web/metadata/providers/open_graph_test.exs @@ -107,4 +107,84 @@ test "it does not render attachments if post is nsfw" do refute {:meta, [property: "og:image", content: "https://misskey.microsoft/corndog.png"], []} in result end + + test "video attachments have image thumbnail with WxH metadata with Preview Proxy enabled" do + clear_config([:media_proxy, :enabled], true) + clear_config([:media_preview_proxy, :enabled], true) + user = insert(:user) + + note = + insert(:note, %{ + data: %{ + "actor" => user.ap_id, + "id" => "https://pleroma.gov/objects/whatever", + "content" => "test video post", + "sensitive" => false, + "attachment" => [ + %{ + "url" => [ + %{ + "mediaType" => "video/webm", + "href" => "https://pleroma.gov/about/juche.webm", + "height" => 600, + "width" => 800 + } + ] + } + ] + } + }) + + result = OpenGraph.build_tags(%{object: note, url: note.data["id"], user: user}) + + assert {:meta, [property: "og:image:width", content: "800"], []} in result + assert {:meta, [property: "og:image:height", content: "600"], []} in result + + assert {:meta, + [ + property: "og:image", + content: + "http://localhost:4001/proxy/preview/LzAnlke-l5oZbNzWsrHfprX1rGw/aHR0cHM6Ly9wbGVyb21hLmdvdi9hYm91dC9qdWNoZS53ZWJt/juche.webm" + ], []} in result + end + + test "video attachments have no image thumbnail with Preview Proxy disabled" do + clear_config([:media_proxy, :enabled], true) + clear_config([:media_preview_proxy, :enabled], false) + user = insert(:user) + + note = + insert(:note, %{ + data: %{ + "actor" => user.ap_id, + "id" => "https://pleroma.gov/objects/whatever", + "content" => "test video post", + "sensitive" => false, + "attachment" => [ + %{ + "url" => [ + %{ + "mediaType" => "video/webm", + "href" => "https://pleroma.gov/about/juche.webm", + "height" => 600, + "width" => 800 + } + ] + } + ] + } + }) + + result = OpenGraph.build_tags(%{object: note, url: note.data["id"], user: user}) + + refute {:meta, [property: "og:image:width", content: "800"], []} in result + refute {:meta, [property: "og:image:height", content: "600"], []} in result + + refute {:meta, + [ + property: "og:image", + content: + "http://localhost:4001/proxy/preview/LzAnlke-l5oZbNzWsrHfprX1rGw/aHR0cHM6Ly9wbGVyb21hLmdvdi9hYm91dC9qdWNoZS53ZWJt/juche.webm" + ], []} in result + end end From d12e62c0b6f83a439c49a4bd94b4e77e53da66a1 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:56:54 -0500 Subject: [PATCH 52/74] Add new Twittercard/OGP changes --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcb462f07..52d92c6d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - The `application` metadata returned with statuses is no longer hardcoded. Apps that want to display these details will now have valid data for new posts after this change. - HTTPSecurityPlug now sends a response header to opt out of Google's FLoC (Federated Learning of Cohorts) targeted advertising. - Email address is now returned if requesting user is the owner of the user account so it can be exposed in client and FE user settings UIs. +- Improved Twittercard and OpenGraph meta tag generation including thumbnails and image dimension metadata when available. ### Added From 6aa7fc15df372478fbff02730bc521fab2ccd1e3 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 9 Jun 2021 11:58:51 -0500 Subject: [PATCH 53/74] Formatting of the comment --- lib/pleroma/web/metadata/providers/open_graph.ex | 6 +++--- lib/pleroma/web/metadata/providers/twitter_card.ex | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index d9f2597ae..ef4ad6885 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -82,9 +82,9 @@ defp build_attachments(%{data: %{"attachment" => attachments}}) do # Not using preview_url for this. It saves bandwidth, but the image dimensions will # be wrong. We generate it on the fly and have no way to capture or analyze the - # analyze the image to get the dimensions. This can be an issue for apps/FEs - # rendering images in timelines too, but you can get clever with the aspect ratio - # metadata as a workaround. + # image to get the dimensions. This can be an issue for apps/FEs rendering images + # in timelines too, but you can get clever with the aspect ratio metadata as a + # workaround. "image" -> [ {:meta, [property: "og:image", content: MediaProxy.url(url["href"])], []}, diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex index 8adab818d..79183df86 100644 --- a/lib/pleroma/web/metadata/providers/twitter_card.ex +++ b/lib/pleroma/web/metadata/providers/twitter_card.ex @@ -69,9 +69,9 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do # Not using preview_url for this. It saves bandwidth, but the image dimensions will # be wrong. We generate it on the fly and have no way to capture or analyze the - # analyze the image to get the dimensions. This can be an issue for apps/FEs - # rendering images in timelines too, but you can get clever with the aspect ratio - # metadata as a workaround. + # image to get the dimensions. This can be an issue for apps/FEs rendering images + # in timelines too, but you can get clever with the aspect ratio metadata as a + # workaround. "image" -> [ {:meta, [property: "twitter:card", content: "summary_large_image"], []}, From 4bb578a1d76c8094db36021db0aed2dfcebd1dbc Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 23 May 2021 18:31:07 -0500 Subject: [PATCH 54/74] Add cycles test to .gitlab-ci.yml Thank you @jb55@bitcoinhackers.org for the awk syntax --- .gitlab-ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b155c81bd..88504b3e3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -154,6 +154,14 @@ analysis: script: - mix credo --strict --only=warnings,todo,fixme,consistency,readability +cycles: + stage: test + image: elixir:1.11 + script: + - mix deps.get + - mix compile + - mix xref graph --format cycles --label compile | awk '{print $0} END{exit ($0 != "No cycles found")}' + docs-deploy: stage: deploy cache: *testing_cache_policy From cefb952dffb3f6fb3e515167e58f910e7e6fc8ea Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 9 Jun 2021 13:08:24 -0500 Subject: [PATCH 55/74] CI: echo $MIX_ENV --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 88504b3e3..a790d60a4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,7 @@ stages: - docker before_script: + - echo $MIX_ENV - rm -rf _build/*/lib/pleroma - apt-get update && apt-get install -y cmake - mix local.hex --force From 87cd04fe0c10f5952aa456237906e4c966e445ea Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 9 Jun 2021 13:12:33 -0500 Subject: [PATCH 56/74] Cycles CI: disable cache --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a790d60a4..056af56cd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -158,6 +158,7 @@ analysis: cycles: stage: test image: elixir:1.11 + cache: {} script: - mix deps.get - mix compile From 15e2aaa9f6e2201c46d18d8ddead922a2ef3288f Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 9 Jun 2021 13:30:19 -0500 Subject: [PATCH 57/74] Fix compile cycle in Pleroma.Tests.AuthTestController --- lib/pleroma/tests/auth_test_controller.ex | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/tests/auth_test_controller.ex b/lib/pleroma/tests/auth_test_controller.ex index ddf3fea4f..76514948b 100644 --- a/lib/pleroma/tests/auth_test_controller.ex +++ b/lib/pleroma/tests/auth_test_controller.ex @@ -9,7 +9,6 @@ defmodule Pleroma.Tests.AuthTestController do use Pleroma.Web, :controller alias Pleroma.User - alias Pleroma.Web.Plugs.EnsurePublicOrAuthenticatedPlug alias Pleroma.Web.Plugs.OAuthScopesPlug # Serves only with proper OAuth token (:api and :authenticated_api) @@ -47,10 +46,7 @@ defmodule Pleroma.Tests.AuthTestController do # Via :authenticated_api, serves if token is present and has requested scopes # # Suggested use: as :fallback_oauth_check but open with nil :user for :api on private instances - plug( - :skip_plug, - EnsurePublicOrAuthenticatedPlug when action == :fallback_oauth_skip_publicity_check - ) + plug(:skip_public_check when action == :fallback_oauth_skip_publicity_check) plug( OAuthScopesPlug, @@ -62,11 +58,7 @@ defmodule Pleroma.Tests.AuthTestController do # Via :authenticated_api, serves if :user is set (regardless of token presence and its scopes) # # Suggested use: making an :api endpoint always accessible (e.g. email confirmation endpoint) - plug( - :skip_plug, - [OAuthScopesPlug, EnsurePublicOrAuthenticatedPlug] - when action == :skip_oauth_skip_publicity_check - ) + plug(:skip_auth when action == :skip_oauth_skip_publicity_check) # Via :authenticated_api, always fails with 403 (endpoint is insecure) # Via :api, drops :user if present and serves if public (private instance rejects on no user) From 202ee5fd77e721c8822dd779c8b558ec8cfacfcc Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 10 Jun 2021 09:56:43 -0500 Subject: [PATCH 58/74] Add note about video thumbnails for code spelunkers unfamiliar with Media Preview Proxy --- lib/pleroma/web/metadata/providers/open_graph.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/web/metadata/providers/open_graph.ex b/lib/pleroma/web/metadata/providers/open_graph.ex index ef4ad6885..df0cca74a 100644 --- a/lib/pleroma/web/metadata/providers/open_graph.ex +++ b/lib/pleroma/web/metadata/providers/open_graph.ex @@ -129,6 +129,8 @@ defp maybe_add_dimensions(metadata, url) do end end + # Media Preview Proxy makes thumbnails of videos without resizing, so we can trust the + # width and height of the source video. defp maybe_add_video_thumbnail(metadata, url) do cond do Pleroma.Config.get([:media_preview_proxy, :enabled], false) -> From 6b1f7f2f528824a1f5e935a14645e7731a9c2a9c Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Jun 2021 08:43:36 +0200 Subject: [PATCH 59/74] docs: Use one file to describe dependencies --- docs/installation/alpine_linux_en.md | 20 +------------------ docs/installation/debian_based_en.md | 20 +------------------ docs/installation/freebsd_en.md | 4 +++- .../installation/generic_dependencies.include | 16 +++++++++++++++ docs/installation/gentoo_en.md | 4 +--- docs/installation/netbsd_en.md | 4 +++- docs/installation/openbsd_en.md | 14 +++---------- 7 files changed, 28 insertions(+), 54 deletions(-) create mode 100644 docs/installation/generic_dependencies.include diff --git a/docs/installation/alpine_linux_en.md b/docs/installation/alpine_linux_en.md index 54859bf03..13395ff25 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/installation/alpine_linux_en.md @@ -5,25 +5,7 @@ This guide is a step-by-step installation guide for Alpine Linux. The instructio It assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-alpine-linux-on-your-linode/#configuration). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -l -s $SHELL -c 'command'` instead. -### Required packages - -* `postgresql` -* `elixir` -* `erlang` -* `erlang-parsetools` -* `erlang-xmerl` -* `git` -* `file-dev` -* Development Tools -* `cmake` - -#### Optional packages used in this guide - -* `nginx` (preferred, example configs for other reverse proxies can be found in the repo) -* `certbot` (or any other ACME client for Let’s Encrypt certificates) -* `ImageMagick` -* `ffmpeg` -* `exiftool` +{! backend/installation/generic_dependencies.include !} ### Prepare the system diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index b8c2b8e86..b6d24a5e9 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -3,25 +3,7 @@ This guide will assume you are on Debian Stretch. This guide should also work with Ubuntu 16.04 and 18.04. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -s $SHELL -c 'command'` instead. -### Required packages - -* `postgresql` (9.6+, Ubuntu 16.04 comes with 9.5, you can get a newer version from [here](https://www.postgresql.org/download/linux/ubuntu/)) -* `postgresql-contrib` (9.6+, same situtation as above) -* `elixir` (1.8+, Follow the guide to install from the Erlang Solutions repo or use [asdf](https://github.com/asdf-vm/asdf) as the pleroma user) -* `erlang-dev` -* `erlang-nox` -* `libmagic-dev` -* `git` -* `build-essential` -* `cmake` - -#### Optional packages used in this guide - -* `nginx` (preferred, example configs for other reverse proxies can be found in the repo) -* `certbot` (or any other ACME client for Let’s Encrypt certificates) -* `ImageMagick` -* `ffmpeg` -* `exiftool` +{! backend/installation/generic_dependencies.include !} ### Prepare the system diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md index 39b8e8d66..9cbe0f203 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/installation/freebsd_en.md @@ -2,7 +2,9 @@ This document was written for FreeBSD 12.1, but should be work on future releases. -## Required software +{! backend/installation/generic_dependencies.include !} + +## Installing software used in this guide This assumes the target system has `pkg(8)`. diff --git a/docs/installation/generic_dependencies.include b/docs/installation/generic_dependencies.include new file mode 100644 index 000000000..baed19de0 --- /dev/null +++ b/docs/installation/generic_dependencies.include @@ -0,0 +1,16 @@ +## Required dependencies + +* PostgreSQL 9.6+ +* Elixir 1.9+ +* Erlang OTP 22.2+ +* git +* file / libmagic +* gcc (clang might also work) +* GNU make +* CMake + +## Optionnal dependencies + +* ImageMagick +* FFmpeg +* exiftool diff --git a/docs/installation/gentoo_en.md b/docs/installation/gentoo_en.md index d649393fc..982ab52d2 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/installation/gentoo_en.md @@ -3,9 +3,7 @@ This guide will assume that you have administrative rights, either as root or a user with [sudo permissions](https://wiki.gentoo.org/wiki/Sudo). Lines that begin with `#` indicate that they should be run as the superuser. Lines using `$` should be run as the indicated user, e.g. `pleroma$` should be run as the `pleroma` user. -### Configuring your hostname (optional) - -If you would like your prompt to permanently include your host/domain, change `/etc/conf.d/hostname` to your hostname. You can reboot or use the `hostname` command to make immediate changes. +{! backend/installation/generic_dependencies.include !} ### Your make.conf, package.use, and USE flags diff --git a/docs/installation/netbsd_en.md b/docs/installation/netbsd_en.md index fc56e79ce..41b3b0072 100644 --- a/docs/installation/netbsd_en.md +++ b/docs/installation/netbsd_en.md @@ -1,6 +1,8 @@ # Installing on NetBSD -## Required software +{! backend/installation/generic_dependencies.include !} + +## Installing software used in this guide pkgin should have been installed by the NetBSD installer if you selected the right options. If it isn't installed, install it using pkg_add. diff --git a/docs/installation/openbsd_en.md b/docs/installation/openbsd_en.md index 95f029180..c80c8f678 100644 --- a/docs/installation/openbsd_en.md +++ b/docs/installation/openbsd_en.md @@ -4,19 +4,11 @@ This guide describes the installation and configuration of pleroma (and the requ For any additional information regarding commands and configuration files mentioned here, check the man pages [online](https://man.openbsd.org/) or directly on your server with the man command. +{! backend/installation/generic_dependencies.include !} + +### Preparing the system #### Required software -The following packages need to be installed: - - * elixir - * gmake - * git - * postgresql-server - * postgresql-contrib - * cmake - * ffmpeg - * ImageMagick - To install them, run the following command (with doas or as root): ``` From 17f980e9abf25b005570d3b638a111b953e87ee0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Jun 2021 08:44:27 +0200 Subject: [PATCH 60/74] docs: Remove Erlang Solutions repository --- docs/installation/debian_based_en.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/installation/debian_based_en.md b/docs/installation/debian_based_en.md index b6d24a5e9..02682e5b0 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/installation/debian_based_en.md @@ -1,7 +1,7 @@ # Installing on Debian Based Distributions ## Installation -This guide will assume you are on Debian Stretch. This guide should also work with Ubuntu 16.04 and 18.04. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -s $SHELL -c 'command'` instead. +This guide will assume you are on Debian 11 (“bullseye”) or later. This guide should also work with Ubuntu 18.04 (“Bionic Beaver”) and later. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu pleroma`; in this case, use `su -s $SHELL -c 'command'` instead. {! backend/installation/generic_dependencies.include !} @@ -22,20 +22,14 @@ sudo apt install git build-essential postgresql postgresql-contrib cmake libmagi ### Install Elixir and Erlang -* Download and add the Erlang repository: - -```shell -wget -P /tmp/ https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb -sudo dpkg -i /tmp/erlang-solutions_2.0_all.deb -``` - -* Install Elixir and Erlang: +* Install Elixir and Erlang (you might need to use backports or [asdf](https://github.com/asdf-vm/asdf) on old systems): ```shell sudo apt update sudo apt install elixir erlang-dev erlang-nox ``` + ### Optional packages: [`docs/installation/optional/media_graphics_packages.md`](../installation/optional/media_graphics_packages.md) ```shell From 822196f393e8b214b03ece875af0f53e41f40528 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Jun 2021 08:46:38 +0200 Subject: [PATCH 61/74] =?UTF-8?q?docs/=E2=80=A6/opt=5Fen.md:=20Reuse=20/ma?= =?UTF-8?q?in/=20repository=20url=20for=20the=20/community/=20repo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/installation/otp_en.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/installation/otp_en.md b/docs/installation/otp_en.md index 8e43e3239..3f67534ac 100644 --- a/docs/installation/otp_en.md +++ b/docs/installation/otp_en.md @@ -31,7 +31,7 @@ Other than things bundled in the OTP release Pleroma depends on: === "Alpine" ``` - echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories + awk 'NR==2' /etc/apk/repositories | sed 's/main/community/' | tee -a /etc/apk/repositories apk update apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot file-dev ``` @@ -50,7 +50,6 @@ Per [`docs/installation/optional/media_graphics_packages.md`](optional/media_gra === "Alpine" ``` - echo "http://nl.alpinelinux.org/alpine/latest-stable/community" >> /etc/apk/repositories apk update apk add imagemagick ffmpeg exiftool ``` From 640e1cf09d501b5b0088cb0c3bdb123c171e730a Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Fri, 11 Jun 2021 08:45:19 -0500 Subject: [PATCH 62/74] Cycles CI: skip unless Elixir code is modified --- .gitlab-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 056af56cd..3ac30b13d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -158,6 +158,11 @@ analysis: cycles: stage: test image: elixir:1.11 + only: + changes: + - "**/*.ex" + - "**/*.exs" + - "mix.lock" cache: {} script: - mix deps.get From a851a24036e07db99f9d893ec9043f0d826ca877 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 22 Jun 2021 11:12:53 +0200 Subject: [PATCH 63/74] Downgrade Plug to 1.10.x, revert upload_limit tuple to function change This should fix setting the upload limit in the database as found in: https://queer.hacktivis.me/notice/A8XUZp74Cg7eYNEMxU This reverts commit 7d350b73f58664eb822efaa5f522fcf2bd38f669. --- lib/pleroma/web/endpoint.ex | 2 +- mix.exs | 3 +++ mix.lock | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex index 7591d0ae5..8e274de88 100644 --- a/lib/pleroma/web/endpoint.ex +++ b/lib/pleroma/web/endpoint.ex @@ -102,7 +102,7 @@ defmodule Pleroma.Web.Endpoint do plug(Plug.Parsers, parsers: [ :urlencoded, - {:multipart, length: Config.get([:instance, :upload_limit])}, + {:multipart, length: {Config, :get, [[:instance, :upload_limit]]}}, :json ], pass: ["*/*"], diff --git a/mix.exs b/mix.exs index afb4da1f6..a0a6106a9 100644 --- a/mix.exs +++ b/mix.exs @@ -199,6 +199,9 @@ defp deps do {:eblurhash, "~> 1.1.0"}, {:open_api_spex, "~> 3.10"}, + # indirect dependency version override + {:plug, "~> 1.10.4", override: true}, + ## dev & test {:ex_doc, "~> 0.22", only: :dev, runtime: false}, {:ex_machina, "~> 2.4", only: :test}, diff --git a/mix.lock b/mix.lock index 9665ca753..7a1dbb22c 100644 --- a/mix.lock +++ b/mix.lock @@ -95,7 +95,7 @@ "phoenix_html": {:hex, :phoenix_html, "2.14.3", "51f720d0d543e4e157ff06b65de38e13303d5778a7919bcc696599e5934271b8", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "efd697a7fff35a13eeeb6b43db884705cba353a1a41d127d118fda5f90c8e80f"}, "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, "phoenix_swoosh": {:hex, :phoenix_swoosh, "0.3.3", "039435dd975f7e55953525b88f1d596f26c6141412584c16f4db109708a8ee68", [:mix], [{:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:swoosh, "~> 1.0", [hex: :swoosh, repo: "hexpm", optional: false]}], "hexpm", "4a540cea32e05356541737033d666ee7fea7700eb2101bf76783adbfe06601cd"}, - "plug": {:hex, :plug, "1.11.1", "f2992bac66fdae679453c9e86134a4201f6f43a687d8ff1cd1b2862d53c80259", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "23524e4fefbb587c11f0833b3910bfb414bf2e2534d61928e920f54e3a1b881f"}, + "plug": {:hex, :plug, "1.10.4", "41eba7d1a2d671faaf531fa867645bd5a3dce0957d8e2a3f398ccff7d2ef017f", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "ad1e233fe73d2eec56616568d260777b67f53148a999dc2d048f4eb9778fe4a0"}, "plug_cowboy": {:hex, :plug_cowboy, "2.5.0", "51c998f788c4e68fc9f947a5eba8c215fbb1d63a520f7604134cab0270ea6513", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5b2c8925a5e2587446f33810a58c01e66b3c345652eeec809b76ba007acde71a"}, "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"}, "plug_static_index_html": {:hex, :plug_static_index_html, "1.0.0", "840123d4d3975585133485ea86af73cb2600afd7f2a976f9f5fd8b3808e636a0", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "79fd4fcf34d110605c26560cbae8f23c603ec4158c08298bd4360fdea90bb5cf"}, From fc6ab78a84b1ef384fa48349e792921364de5df9 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 22 Jun 2021 12:25:25 +0200 Subject: [PATCH 64/74] Add test on changing [:instance, :upload_limit] --- .../api_spec/operations/media_operation.ex | 2 + .../controllers/media_controller_test.exs | 55 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/lib/pleroma/web/api_spec/operations/media_operation.ex b/lib/pleroma/web/api_spec/operations/media_operation.ex index 1e245b291..451b6510f 100644 --- a/lib/pleroma/web/api_spec/operations/media_operation.ex +++ b/lib/pleroma/web/api_spec/operations/media_operation.ex @@ -24,6 +24,7 @@ def create_operation do requestBody: Helpers.request_body("Parameters", create_request()), responses: %{ 200 => Operation.response("Media", "application/json", Attachment), + 400 => Operation.response("Media", "application/json", ApiError), 401 => Operation.response("Media", "application/json", ApiError), 422 => Operation.response("Media", "application/json", ApiError) } @@ -121,6 +122,7 @@ def create2_operation do requestBody: Helpers.request_body("Parameters", create_request()), responses: %{ 202 => Operation.response("Media", "application/json", Attachment), + 400 => Operation.response("Media", "application/json", ApiError), 422 => Operation.response("Media", "application/json", ApiError), 500 => Operation.response("Media", "application/json", ApiError) } diff --git a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs index 39d7f99f6..ff988a7fd 100644 --- a/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/media_controller_test.exs @@ -5,6 +5,8 @@ defmodule Pleroma.Web.MastodonAPI.MediaControllerTest do use Pleroma.Web.ConnCase + import ExUnit.CaptureLog + alias Pleroma.Object alias Pleroma.User alias Pleroma.Web.ActivityPub.ActivityPub @@ -67,6 +69,59 @@ test "/api/v2/media", %{conn: conn, user: user, image: image} do object = Object.get_by_id(media["id"]) assert object.data["actor"] == user.ap_id end + + test "/api/v2/media, upload_limit", %{conn: conn, user: user} do + desc = "Description of the binary" + + upload_limit = Config.get([:instance, :upload_limit]) * 8 + 8 + + assert :ok == + File.write(Path.absname("test/tmp/large_binary.data"), <<0::size(upload_limit)>>) + + large_binary = %Plug.Upload{ + content_type: nil, + path: Path.absname("test/tmp/large_binary.data"), + filename: "large_binary.data" + } + + assert capture_log(fn -> + assert %{"error" => "file_too_large"} = + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v2/media", %{ + "file" => large_binary, + "description" => desc + }) + |> json_response_and_validate_schema(400) + end) =~ + "[error] Elixir.Pleroma.Upload store (using Pleroma.Uploaders.Local) failed: :file_too_large" + + clear_config([:instance, :upload_limit], upload_limit) + + assert response = + conn + |> put_req_header("content-type", "multipart/form-data") + |> post("/api/v2/media", %{ + "file" => large_binary, + "description" => desc + }) + |> json_response_and_validate_schema(202) + + assert media_id = response["id"] + + %{conn: conn} = oauth_access(["read:media"], user: user) + + media = + conn + |> get("/api/v1/media/#{media_id}") + |> json_response_and_validate_schema(200) + + assert media["type"] == "unknown" + assert media["description"] == desc + assert media["id"] + + assert :ok == File.rm(Path.absname("test/tmp/large_binary.data")) + end end describe "Update media description" do From 54af527759a222fff4adc7ab52425f4e1085eb2c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 23 Jun 2021 13:02:41 -0500 Subject: [PATCH 65/74] Upgrade Ecto to v3.6.2, remove deprecated ecto_explain --- lib/pleroma/repo.ex | 2 -- mix.exs | 3 +-- mix.lock | 5 ++--- test/mix/tasks/pleroma/ecto/migrate_test.exs | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index b8ea06e33..61b64ed3e 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -8,8 +8,6 @@ defmodule Pleroma.Repo do adapter: Ecto.Adapters.Postgres, migration_timestamps: [type: :naive_datetime_usec] - use Ecto.Explain - import Ecto.Query require Logger diff --git a/mix.exs b/mix.exs index afb4da1f6..92b76d70c 100644 --- a/mix.exs +++ b/mix.exs @@ -121,8 +121,7 @@ defp deps do {:phoenix_pubsub, "~> 2.0"}, {:phoenix_ecto, "~> 4.0"}, {:ecto_enum, "~> 1.4"}, - {:ecto_explain, "~> 0.1.2"}, - {:ecto_sql, "~> 3.4.4"}, + {:ecto_sql, "~> 3.6.2"}, {:postgrex, ">= 0.15.5"}, {:oban, "~> 2.3.4"}, {:gettext, "~> 0.18"}, diff --git a/mix.lock b/mix.lock index 9665ca753..a5b9cb80f 100644 --- a/mix.lock +++ b/mix.lock @@ -30,10 +30,9 @@ "earmark": {:hex, :earmark, "1.4.15", "2c7f924bf495ec1f65bd144b355d0949a05a254d0ec561740308a54946a67888", [:mix], [{:earmark_parser, ">= 1.4.13", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "3b1209b85bc9f3586f370f7c363f6533788fb4e51db23aa79565875e7f9999ee"}, "earmark_parser": {:hex, :earmark_parser, "1.4.13", "0c98163e7d04a15feb62000e1a891489feb29f3d10cb57d4f845c405852bbef8", [:mix], [], "hexpm", "d602c26af3a0af43d2f2645613f65841657ad6efc9f0e361c3b6c06b578214ba"}, "eblurhash": {:hex, :eblurhash, "1.1.0", "e10ccae762598507ebfacf0b645ed49520f2afa3e7e9943e73a91117dffce415", [:rebar3], [], "hexpm", "2e6b889d09fddd374e3c5ac57c486138768763264e99ac1074ae5fa7fc9ab51d"}, - "ecto": {:hex, :ecto, "3.4.6", "08f7afad3257d6eb8613309af31037e16c36808dfda5a3cd0cb4e9738db030e4", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "6f13a9e2a62e75c2dcfc7207bfc65645ab387af8360db4c89fee8b5a4bf3f70b"}, + "ecto": {:hex, :ecto, "3.6.2", "efdf52acfc4ce29249bab5417415bd50abd62db7b0603b8bab0d7b996548c2bc", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "efad6dfb04e6f986b8a3047822b0f826d9affe8e4ebdd2aeedbfcb14fd48884e"}, "ecto_enum": {:hex, :ecto_enum, "1.4.0", "d14b00e04b974afc69c251632d1e49594d899067ee2b376277efd8233027aec8", [:mix], [{:ecto, ">= 3.0.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "> 3.0.0", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:mariaex, ">= 0.0.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: true]}], "hexpm", "8fb55c087181c2b15eee406519dc22578fa60dd82c088be376d0010172764ee4"}, - "ecto_explain": {:hex, :ecto_explain, "0.1.2", "a9d504cbd4adc809911f796d5ef7ebb17a576a6d32286c3d464c015bd39d5541", [:mix], [], "hexpm", "1d0e7798ae30ecf4ce34e912e5354a0c1c832b7ebceba39298270b9a9f316330"}, - "ecto_sql": {:hex, :ecto_sql, "3.4.5", "30161f81b167d561a9a2df4329c10ae05ff36eca7ccc84628f2c8b9fa1e43323", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.4.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.3.0 or ~> 0.4.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.0", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31990c6a3579b36a3c0841d34a94c275e727de8b84f58509da5f1b2032c98ac2"}, + "ecto_sql": {:hex, :ecto_sql, "3.6.2", "9526b5f691701a5181427634c30655ac33d11e17e4069eff3ae1176c764e0ba3", [:mix], [{:db_connection, "~> 2.2", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.6.2", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.4.0 or ~> 0.5.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "5ec9d7e6f742ea39b63aceaea9ac1d1773d574ea40df5a53ef8afbd9242fdb6b"}, "eimp": {:hex, :eimp, "1.0.14", "fc297f0c7e2700457a95a60c7010a5f1dcb768a083b6d53f49cd94ab95a28f22", [:rebar3], [{:p1_utils, "1.0.18", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "501133f3112079b92d9e22da8b88bf4f0e13d4d67ae9c15c42c30bd25ceb83b6"}, "elixir_make": {:hex, :elixir_make, "0.6.2", "7dffacd77dec4c37b39af867cedaabb0b59f6a871f89722c25b28fcd4bd70530", [:mix], [], "hexpm", "03e49eadda22526a7e5279d53321d1cced6552f344ba4e03e619063de75348d9"}, "esshd": {:hex, :esshd, "0.1.1", "d4dd4c46698093a40a56afecce8a46e246eb35463c457c246dacba2e056f31b5", [:mix], [], "hexpm", "d73e341e3009d390aa36387dc8862860bf9f874c94d9fd92ade2926376f49981"}, diff --git a/test/mix/tasks/pleroma/ecto/migrate_test.exs b/test/mix/tasks/pleroma/ecto/migrate_test.exs index 5bdfd8f30..3bfdde1c0 100644 --- a/test/mix/tasks/pleroma/ecto/migrate_test.exs +++ b/test/mix/tasks/pleroma/ecto/migrate_test.exs @@ -13,7 +13,7 @@ test "ecto.migrate info message" do assert capture_log(fn -> Mix.Tasks.Pleroma.Ecto.Migrate.run() - end) =~ "[info] Already up" + end) =~ "[info] Migrations already up" Logger.configure(level: level) end From 281806de75ae5b0cad0c9b0f5dbc7c01c0b64f93 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 24 Jun 2021 21:00:23 -0500 Subject: [PATCH 66/74] Activity deletion: fix FunctionClauseError #2686 --- lib/pleroma/activity.ex | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 53beca5e6..7e36c1b53 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -313,13 +313,15 @@ def delete_all_by_object_ap_id(id) when is_binary(id) do def delete_all_by_object_ap_id(_), do: nil - defp purge_web_resp_cache(%Activity{} = activity) do - %{path: path} = URI.parse(activity.data["id"]) - @cachex.del(:web_resp_cache, path) + defp purge_web_resp_cache(%Activity{data: %{"id" => id}} = activity) when is_binary(id) do + with %{path: path} <- URI.parse(id) do + @cachex.del(:web_resp_cache, path) + end + activity end - defp purge_web_resp_cache(nil), do: nil + defp purge_web_resp_cache(activity), do: activity def follow_accepted?( %Activity{data: %{"type" => "Follow", "object" => followed_ap_id}} = activity From be2da95c36c14ac42eee4009c6e3e803bafd3d2c Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 29 Jun 2021 21:45:38 -0500 Subject: [PATCH 67/74] Correctly purge a remote user --- lib/pleroma/user.ex | 16 ++++++++++------ test/pleroma/user_test.exs | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9942617d8..aebb5da95 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1713,6 +1713,12 @@ def purge_user_changeset(user) do }) end + def purge(%User{} = user) do + user + |> purge_user_changeset() + |> update_and_set_cache() + end + def delete(users) when is_list(users) do for user <- users, do: delete(user) end @@ -1726,9 +1732,9 @@ defp delete_and_invalidate_cache(%User{} = user) do Repo.delete(user) end - defp delete_or_deactivate(%User{local: false} = user), do: delete_and_invalidate_cache(user) + defp delete_or_purge(%User{local: false} = user), do: purge(user) - defp delete_or_deactivate(%User{local: true} = user) do + defp delete_or_purge(%User{local: true} = user) do status = account_status(user) case status do @@ -1739,9 +1745,7 @@ defp delete_or_deactivate(%User{local: true} = user) do delete_and_invalidate_cache(user) _ -> - user - |> purge_user_changeset() - |> update_and_set_cache() + purge(user) end end @@ -1769,7 +1773,7 @@ def perform(:delete, %User{} = user) do delete_outgoing_pending_follow_requests(user) - delete_or_deactivate(user) + delete_or_purge(user) end def perform(:set_activation_async, user, status), do: set_activation(user, status) diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 6f5bcab57..529f837e8 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1684,6 +1684,24 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do } = user end + test "delete/1 purges a remote user" do + user = + insert(:user, %{ + name: "qqqqqqq", + avatar: %{"a" => "b"}, + banner: %{"a" => "b"}, + local: false + }) + + {:ok, job} = User.delete(user) + {:ok, _} = ObanHelpers.perform(job) + user = User.get_by_id(user.id) + + assert user.name == nil + assert user.avatar == %{} + assert user.banner == %{} + end + test "get_public_key_for_ap_id fetches a user that's not in the db" do assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin") end From c6d4133727ba623d4c96358e3c4de5f2194d07f8 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 29 Jun 2021 22:30:48 -0500 Subject: [PATCH 68/74] Deletions: purge the user immediately --- lib/pleroma/user.ex | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index aebb5da95..406a7f5f9 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1724,31 +1724,27 @@ def delete(users) when is_list(users) do end def delete(%User{} = user) do + purge(user) BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end - defp delete_and_invalidate_cache(%User{} = user) do + defp delete_from_db(%User{} = user) do invalidate_cache(user) Repo.delete(user) end - defp delete_or_purge(%User{local: false} = user), do: purge(user) - - defp delete_or_purge(%User{local: true} = user) do + defp maybe_delete_from_db(%User{local: true} = user) do status = account_status(user) - case status do - :confirmation_pending -> - delete_and_invalidate_cache(user) - - :approval_pending -> - delete_and_invalidate_cache(user) - - _ -> - purge(user) + if status in [:confirmation_pending, :approval_pending] do + delete_from_db(user) + else + {:ok, user} end end + defp maybe_delete_from_db(user), do: {:ok, user} + def perform(:force_password_reset, user), do: force_password_reset(user) @spec perform(atom(), User.t()) :: {:ok, User.t()} @@ -1770,10 +1766,9 @@ def perform(:delete, %User{} = user) do delete_user_activities(user) delete_notifications_from_user_activities(user) - delete_outgoing_pending_follow_requests(user) - delete_or_purge(user) + maybe_delete_from_db(user) end def perform(:set_activation_async, user, status), do: set_activation(user, status) From 01c2d2a29670d8b3a4acee06c5f91b52e371fd00 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 29 Jun 2021 22:53:33 -0500 Subject: [PATCH 69/74] Also purge the user in User.perform/2 --- lib/pleroma/user.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 406a7f5f9..f3cf3c69b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1724,6 +1724,7 @@ def delete(users) when is_list(users) do end def delete(%User{} = user) do + # Purge the user immediately purge(user) BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end @@ -1749,6 +1750,9 @@ def perform(:force_password_reset, user), do: force_password_reset(user) @spec perform(atom(), User.t()) :: {:ok, User.t()} def perform(:delete, %User{} = user) do + # Purge the user again, in case perform/2 is called directly + purge(user) + # Remove all relationships user |> get_followers() From a7929c4d89a07a7f577e7cde5638bde8b1cb586a Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 29 Jun 2021 23:56:19 -0500 Subject: [PATCH 70/74] Deletions: preserve account status fields during purge, fix checks --- lib/pleroma/user.ex | 22 ++++++++++++---------- test/pleroma/user_test.exs | 4 ++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f3cf3c69b..5d8b936aa 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1692,9 +1692,7 @@ def purge_user_changeset(user) do follower_count: 0, following_count: 0, is_locked: false, - is_confirmed: true, password_reset_pending: false, - is_approved: true, registration_reason: nil, confirmation_token: nil, domain_blocks: [], @@ -1710,9 +1708,15 @@ def purge_user_changeset(user) do raw_fields: [], is_discoverable: false, also_known_as: [] + # id: preserved + # ap_id: preserved + # nickname: preserved }) end + # Purge doesn't delete the user from the database. + # It just nulls all its fields and deactivates it. + # See `User.purge_user_changeset/1` above. def purge(%User{} = user) do user |> purge_user_changeset() @@ -1729,20 +1733,18 @@ def delete(%User{} = user) do BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end + # *Actually* delete the user from the DB defp delete_from_db(%User{} = user) do invalidate_cache(user) Repo.delete(user) end - defp maybe_delete_from_db(%User{local: true} = user) do - status = account_status(user) + # If the user never finalized their account, it's safe to delete them. + defp maybe_delete_from_db(%User{local: true, is_confirmed: false} = user), + do: delete_from_db(user) - if status in [:confirmation_pending, :approval_pending] do - delete_from_db(user) - else - {:ok, user} - end - end + defp maybe_delete_from_db(%User{local: true, is_approved: false} = user), + do: delete_from_db(user) defp maybe_delete_from_db(user), do: {:ok, user} diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 529f837e8..60bc58a48 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1663,9 +1663,9 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do follower_count: 0, following_count: 0, is_locked: false, - is_confirmed: true, + is_confirmed: false, password_reset_pending: false, - is_approved: true, + is_approved: false, registration_reason: nil, confirmation_token: nil, domain_blocks: [], From 43800d83f4fc3b251cdd93c28dab2df7297021b3 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 30 Jun 2021 01:14:34 -0500 Subject: [PATCH 71/74] Deletions: allow deactivated users to be deleted --- lib/pleroma/web/activity_pub/activity_pub.ex | 9 ++++++--- .../object_validators/delete_validator.ex | 12 +++++++++++- .../activity_pub/object_validators/undo_validator.ex | 12 +++++++++++- test/pleroma/user_test.exs | 8 ++++---- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 5b45e2ca1..787b5884f 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -52,15 +52,18 @@ defp get_recipients(data) do {recipients, to, cc} end - defp check_actor_is_active(nil), do: true + defp check_actor_can_insert(%{"type" => "Delete"}), do: true + defp check_actor_can_insert(%{"type" => "Undo"}), do: true - defp check_actor_is_active(actor) when is_binary(actor) do + defp check_actor_can_insert(%{"actor" => actor}) when is_binary(actor) do case User.get_cached_by_ap_id(actor) do %User{is_active: true} -> true _ -> false end end + defp check_actor_can_insert(_), do: true + defp check_remote_limit(%{"object" => %{"content" => content}}) when not is_nil(content) do limit = Config.get([:instance, :remote_limit]) String.length(content) <= limit @@ -116,7 +119,7 @@ def persist(object, meta) do def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when is_map(map) do with nil <- Activity.normalize(map), map <- lazy_put_activity_defaults(map, fake), - {_, true} <- {:actor_check, bypass_actor_check || check_actor_is_active(map["actor"])}, + {_, true} <- {:actor_check, bypass_actor_check || check_actor_can_insert(map)}, {_, true} <- {:remote_limit_pass, check_remote_limit(map)}, {:ok, map} <- MRF.filter(map), {recipients, _, _} = get_recipients(map), diff --git a/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex b/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex index fc1a79a72..750ea0f7f 100644 --- a/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/delete_validator.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.DeleteValidator do alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.User import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -57,7 +58,7 @@ def validate_data(cng) do cng |> validate_required([:id, :type, :actor, :to, :cc, :object]) |> validate_inclusion(:type, ["Delete"]) - |> validate_actor_presence() + |> validate_delete_actor(:actor) |> validate_modification_rights() |> validate_object_or_user_presence(allowed_types: @deletable_types) |> add_deleted_activity_id() @@ -72,4 +73,13 @@ def cast_and_validate(data) do |> cast_data |> validate_data end + + defp validate_delete_actor(cng, field_name) do + validate_change(cng, field_name, fn field_name, actor -> + case User.get_cached_by_ap_id(actor) do + %User{} -> [] + _ -> [{field_name, "can't find user"}] + end + end) + end end diff --git a/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex b/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex index 783a79ddb..ab29f9820 100644 --- a/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/undo_validator.ex @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.UndoValidator do alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.User import Ecto.Changeset import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @@ -42,7 +43,7 @@ def validate_data(data_cng) do data_cng |> validate_inclusion(:type, ["Undo"]) |> validate_required([:id, :type, :object, :actor, :to, :cc]) - |> validate_actor_presence() + |> validate_undo_actor(:actor) |> validate_object_presence() |> validate_undo_rights() end @@ -59,4 +60,13 @@ def validate_undo_rights(cng) do _ -> cng end end + + defp validate_undo_actor(cng, field_name) do + validate_change(cng, field_name, fn field_name, actor -> + case User.get_cached_by_ap_id(actor) do + %User{} -> [] + _ -> [{field_name, "can't find user"}] + end + end) + end end diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 60bc58a48..181990e4b 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1621,9 +1621,9 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do follower_count: 9, following_count: 9001, is_locked: true, - is_confirmed: false, + is_confirmed: true, password_reset_pending: true, - is_approved: false, + is_approved: true, registration_reason: "ahhhhh", confirmation_token: "qqqq", domain_blocks: ["lain.com"], @@ -1663,9 +1663,9 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do follower_count: 0, following_count: 0, is_locked: false, - is_confirmed: false, + is_confirmed: true, password_reset_pending: false, - is_approved: false, + is_approved: true, registration_reason: nil, confirmation_token: nil, domain_blocks: [], From beb1c98ab5e0848127a4490180364552f6fcdbf5 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 30 Jun 2021 01:48:17 -0500 Subject: [PATCH 72/74] Deletions: don't purge keys so Delete/Undo activities can be signed --- lib/pleroma/user.ex | 2 -- test/pleroma/user_test.exs | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 5d8b936aa..de3b8ca3b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1680,8 +1680,6 @@ def purge_user_changeset(user) do email: nil, name: nil, password_hash: nil, - keys: nil, - public_key: nil, avatar: %{}, tags: [], last_refreshed_at: nil, diff --git a/test/pleroma/user_test.exs b/test/pleroma/user_test.exs index 181990e4b..ec0aaa9eb 100644 --- a/test/pleroma/user_test.exs +++ b/test/pleroma/user_test.exs @@ -1651,8 +1651,8 @@ test "delete/1 purges a user when they wouldn't be fully deleted" do email: nil, name: nil, password_hash: nil, - keys: nil, - public_key: nil, + keys: "RSA begin buplic key", + public_key: "--PRIVATE KEYE--", avatar: %{}, tags: [], last_refreshed_at: nil, From 310ef6b70d9ca18d857f43677d857d09d91ffe0e Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Wed, 30 Jun 2021 12:25:20 -0500 Subject: [PATCH 73/74] Deletions: change User.purge/1 to defp, add CHANGELOG entry --- CHANGELOG.md | 2 ++ lib/pleroma/user.ex | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52d92c6d2..330802b29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Don't crash so hard when email settings are invalid. - Checking activated Upload Filters for required commands. +- Remote users can no longer reappear after being deleted. +- Deactivated users may now be deleted. - Mix task `pleroma.database prune_objects` ### Removed diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f5b12abad..62506f37a 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1730,7 +1730,7 @@ def purge_user_changeset(user) do # Purge doesn't delete the user from the database. # It just nulls all its fields and deactivates it. # See `User.purge_user_changeset/1` above. - def purge(%User{} = user) do + defp purge(%User{} = user) do user |> purge_user_changeset() |> update_and_set_cache() From 64d009693e35039025b0ff1cc536206054c2b918 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Thu, 8 Jul 2021 12:33:17 -0500 Subject: [PATCH 74/74] Update Linkify to fix crash on posts with a URL we failed to parse correctly --- CHANGELOG.md | 1 + mix.exs | 2 +- mix.lock | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 330802b29..9854eb531 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Remote users can no longer reappear after being deleted. - Deactivated users may now be deleted. - Mix task `pleroma.database prune_objects` +- Linkify: Parsing crash with URLs ending in unbalanced closed paren, no path separator, and no query parameters ### Removed - **Breaking**: Remove deprecated `/api/qvitter/statuses/notifications/read` (replaced by `/api/v1/pleroma/notifications/read`) diff --git a/mix.exs b/mix.exs index e4b160971..1a7aac6a4 100644 --- a/mix.exs +++ b/mix.exs @@ -157,7 +157,7 @@ defp deps do {:floki, "~> 0.27"}, {:timex, "~> 3.6"}, {:ueberauth, "~> 0.4"}, - {:linkify, "~> 0.5.0"}, + {:linkify, "~> 0.5.1"}, {:http_signatures, "~> 0.1.0"}, {:telemetry, "~> 0.3"}, {:poolboy, "~> 1.5"}, diff --git a/mix.lock b/mix.lock index 65a225504..b78ae0bc9 100644 --- a/mix.lock +++ b/mix.lock @@ -67,7 +67,7 @@ "jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"}, "jumper": {:hex, :jumper, "1.0.1", "3c00542ef1a83532b72269fab9f0f0c82bf23a35e27d278bfd9ed0865cecabff", [:mix], [], "hexpm", "318c59078ac220e966d27af3646026db9b5a5e6703cb2aa3e26bcfaba65b7433"}, "libring": {:hex, :libring, "1.4.0", "41246ba2f3fbc76b3971f6bce83119dfec1eee17e977a48d8a9cfaaf58c2a8d6", [:mix], [], "hexpm"}, - "linkify": {:hex, :linkify, "0.5.0", "e0ea8de73ff44742d6a889721221f4c4eccaad5284957ee9832ffeb347602d54", [:mix], [], "hexpm", "4ccd958350aee7c51c89e21f05b15d30596ebbba707e051d21766be1809df2d7"}, + "linkify": {:hex, :linkify, "0.5.1", "6dc415cbc948b2f6ecec7cb226aab7ba9d3a1815bb501ae33e042334d707ecee", [:mix], [], "hexpm", "a3128c7e22fada4aa7214009501d8131e1fa3faf2f0a68b33dba379dc84ff944"}, "majic": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/majic.git", "289cda1b6d0d70ccb2ba508a2b0bd24638db2880", [ref: "289cda1b6d0d70ccb2ba508a2b0bd24638db2880"]}, "makeup": {:hex, :makeup, "1.0.5", "d5a830bc42c9800ce07dd97fa94669dfb93d3bf5fcf6ea7a0c67b2e0e4a7f26c", [:mix], [{:nimble_parsec, "~> 0.5 or ~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "cfa158c02d3f5c0c665d0af11512fed3fba0144cf1aadee0f2ce17747fba2ca9"}, "makeup_elixir": {:hex, :makeup_elixir, "0.14.1", "4f0e96847c63c17841d42c08107405a005a2680eb9c7ccadfd757bd31dabccfb", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "f2438b1a80eaec9ede832b5c41cd4f373b38fd7aa33e3b22d9db79e640cbde11"},