logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/
commit: 7234aa8c18ec44bd7263e14b71631a287a67cdfd
parent d1b9d03302b4f8ea83174d0934f71360709d7585
Author: Nicole Mikołajczyk <git@mkljczk.pl>
Date:   Thu,  3 Apr 2025 10:32:25 +0200

Merge remote-tracking branch 'origin/develop' into instance-markup-info

Signed-off-by: Nicole Mikołajczyk <git@mkljczk.pl>

Diffstat:

Achangelog.d/freebsd-rc.fix1+
Achangelog.d/siteinfo-baseurls.add2++
Achangelog.d/typos.skip0
Minstallation/freebsd/rc.d/pleroma2++
Mlib/pleroma/web/api_spec.ex2+-
Mlib/pleroma/web/api_spec/operations/admin/rule_operation.ex8++++----
Mlib/pleroma/web/api_spec/operations/instance_operation.ex2+-
Mlib/pleroma/web/mastodon_api/views/instance_view.ex16++++++++++++++++
Mtest/pleroma/web/activity_pub/activity_pub_test.exs2+-
Mtest/pleroma/web/mastodon_api/controllers/instance_controller_test.exs33+++++++++++++++++++++++++++++++++
10 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/changelog.d/freebsd-rc.fix b/changelog.d/freebsd-rc.fix @@ -0,0 +1 @@ +Set PATH in the FreeBSD rc script to avoid failures starting the service diff --git a/changelog.d/siteinfo-baseurls.add b/changelog.d/siteinfo-baseurls.add @@ -0,0 +1 @@ +Add `base_urls` to the /api/v1/instance pleroma metadata which provides information about the base URLs for media_proxy and uploads when configured +\ No newline at end of file diff --git a/changelog.d/typos.skip b/changelog.d/typos.skip diff --git a/installation/freebsd/rc.d/pleroma b/installation/freebsd/rc.d/pleroma @@ -24,4 +24,6 @@ command=/usr/local/bin/elixir command_args="--erl \"-detached\" -S /usr/local/bin/mix phx.server" procname="*beam.smp" +PATH="${PATH}:/usr/local/sbin:/usr/local/bin" + run_rc_command "$1" diff --git a/lib/pleroma/web/api_spec.ex b/lib/pleroma/web/api_spec.ex @@ -97,7 +97,7 @@ defmodule Pleroma.Web.ApiSpec do "Frontend management", "Instance configuration", "Instance documents", - "Instance rule managment", + "Instance rule management", "Invites", "MediaProxy cache", "OAuth application management", diff --git a/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex b/lib/pleroma/web/api_spec/operations/admin/rule_operation.ex @@ -16,7 +16,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do def index_operation do %Operation{ - tags: ["Instance rule managment"], + tags: ["Instance rule management"], summary: "Retrieve list of instance rules", operationId: "AdminAPI.RuleController.index", security: [%{"oAuth" => ["admin:read"]}], @@ -33,7 +33,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do def create_operation do %Operation{ - tags: ["Instance rule managment"], + tags: ["Instance rule management"], summary: "Create new rule", operationId: "AdminAPI.RuleController.create", security: [%{"oAuth" => ["admin:write"]}], @@ -49,7 +49,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do def update_operation do %Operation{ - tags: ["Instance rule managment"], + tags: ["Instance rule management"], summary: "Modify existing rule", operationId: "AdminAPI.RuleController.update", security: [%{"oAuth" => ["admin:write"]}], @@ -65,7 +65,7 @@ defmodule Pleroma.Web.ApiSpec.Admin.RuleOperation do def delete_operation do %Operation{ - tags: ["Instance rule managment"], + tags: ["Instance rule management"], summary: "Delete rule", operationId: "AdminAPI.RuleController.delete", parameters: [Operation.parameter(:id, :path, :string, "Rule ID")], diff --git a/lib/pleroma/web/api_spec/operations/instance_operation.ex b/lib/pleroma/web/api_spec/operations/instance_operation.ex @@ -52,7 +52,7 @@ defmodule Pleroma.Web.ApiSpec.InstanceOperation do summary: "Retrieve list of instance rules", operationId: "InstanceController.rules", responses: %{ - 200 => Operation.response("Array of domains", "application/json", array_of_rules()) + 200 => Operation.response("Array of rules", "application/json", array_of_rules()) } } end diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -261,6 +261,21 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do end defp pleroma_configuration(instance) do + base_urls = %{} + + base_urls = + if Config.get([:media_proxy, :enabled]) do + Map.put(base_urls, :media_proxy, Config.get([:media_proxy, :base_url])) + else + base_urls + end + + base_urls = + case Config.get([Pleroma.Upload, :base_url]) do + nil -> base_urls + url -> Map.put(base_urls, :upload, url) + end + %{ metadata: %{ account_activation_required: Keyword.get(instance, :account_activation_required), @@ -271,6 +286,7 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do birthday_required: Config.get([:instance, :birthday_required]), birthday_min_age: Config.get([:instance, :birthday_min_age]), translation: supported_languages(), + base_urls: base_urls, markup: markup() }, stats: %{mau: Pleroma.User.active_user_count()}, diff --git a/test/pleroma/web/activity_pub/activity_pub_test.exs b/test/pleroma/web/activity_pub/activity_pub_test.exs @@ -826,7 +826,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do assert object.data["repliesCount"] == 2 end - test "increates quotes count", %{user: user} do + test "increases quotes count", %{user: user} do user2 = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"}) diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs @@ -161,4 +161,37 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do |> get("/api/v1/instance/translation_languages") |> json_response_and_validate_schema(200) end + + test "base_urls in pleroma metadata", %{conn: conn} do + media_proxy_base_url = "https://media.example.org" + upload_base_url = "https://uploads.example.org" + + clear_config([:media_proxy, :enabled], true) + clear_config([:media_proxy, :base_url], media_proxy_base_url) + clear_config([Pleroma.Upload, :base_url], upload_base_url) + + conn = get(conn, "/api/v1/instance") + + assert result = json_response_and_validate_schema(conn, 200) + assert result["pleroma"]["metadata"]["base_urls"]["media_proxy"] == media_proxy_base_url + assert result["pleroma"]["metadata"]["base_urls"]["upload"] == upload_base_url + + # Test when media_proxy is disabled + clear_config([:media_proxy, :enabled], false) + + conn = get(conn, "/api/v1/instance") + + assert result = json_response_and_validate_schema(conn, 200) + refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy") + assert result["pleroma"]["metadata"]["base_urls"]["upload"] == upload_base_url + + # Test when upload base_url is not set + clear_config([Pleroma.Upload, :base_url], nil) + + conn = get(conn, "/api/v1/instance") + + assert result = json_response_and_validate_schema(conn, 200) + refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy") + refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "upload") + end end