Browse Source

Add [:instances_favicons, :enabled] setting, defaults to false

chores/our-libs-hex-releases
Haelwenn (lanodan) Monnier 3 years ago
parent
commit
312fc55f14
No known key found for this signature in database GPG Key ID: D5B7A8E43C997DEE
6 changed files with 53 additions and 6 deletions
  1. +2
    -0
      config/config.exs
  2. +13
    -0
      config/description.exs
  3. +2
    -0
      config/test.exs
  4. +6
    -0
      docs/configuration/cheatsheet.md
  5. +10
    -6
      lib/pleroma/web/mastodon_api/views/account_view.ex
  6. +20
    -0
      test/web/mastodon_api/views/account_view_test.exs

+ 2
- 0
config/config.exs View File

@@ -706,6 +706,8 @@ config :tzdata, :http_client, Pleroma.HTTP.Tzdata

config :ex_aws, http_client: Pleroma.HTTP.ExAws

config :pleroma, :instances_favicons, enabled: false

# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"

+ 13
- 0
config/description.exs View File

@@ -3447,5 +3447,18 @@ config :pleroma, :config_description, [
suggestions: [false]
}
]
},
%{
group: :pleroma,
key: :instances_favicons,
type: :group,
description: "Control favicons for instances",
children: [
%{
key: :enabled,
type: :boolean,
description: "Allow/disallow displaying and getting instances favicons"
}
]
}
]

+ 2
- 0
config/test.exs View File

@@ -111,6 +111,8 @@ config :pleroma, Pleroma.Plugs.RemoteIp, enabled: false

config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true

config :pleroma, :instances_favicons, enabled: true

if File.exists?("./config/test.secret.exs") do
import_config "test.secret.exs"
else


+ 6
- 0
docs/configuration/cheatsheet.md View File

@@ -987,3 +987,9 @@ Restrict access for unauthenticated users to timelines (public and federate), us
## Pleroma.Web.ApiSpec.CastAndValidate

* `:strict` a boolean, enables strict input validation (useful in development, not recommended in production). Defaults to `false`.

## :instances_favicons

Control favicons for instances.

* `enabled`: Allow/disallow displaying and getting instances favicons

+ 10
- 6
lib/pleroma/web/mastodon_api/views/account_view.ex View File

@@ -205,12 +205,16 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do
end

favicon =
user
|> Map.get(:ap_id, "")
|> URI.parse()
|> URI.merge("/")
|> Pleroma.Instances.Instance.get_or_update_favicon()
|> MediaProxy.url()
if Pleroma.Config.get([:instances_favicons, :enabled]) do
user
|> Map.get(:ap_id, "")
|> URI.parse()
|> URI.merge("/")
|> Pleroma.Instances.Instance.get_or_update_favicon()
|> MediaProxy.url()
else
nil
end

%{
id: to_string(user.id),


+ 20
- 0
test/web/mastodon_api/views/account_view_test.exs View File

@@ -5,6 +5,7 @@
defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
use Pleroma.DataCase

alias Pleroma.Config
alias Pleroma.User
alias Pleroma.UserRelationship
alias Pleroma.Web.CommonAPI
@@ -18,6 +19,8 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
:ok
end

setup do: clear_config([:instances_favicons, :enabled])

test "Represent a user account" do
background_image = %{
"url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}]
@@ -94,6 +97,23 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
assert expected == AccountView.render("show.json", %{user: user})
end

test "Favicon is nil when :instances_favicons is disabled" do
user = insert(:user)

Config.put([:instances_favicons, :enabled], true)

assert %{
pleroma: %{
favicon:
"https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png"
}
} = AccountView.render("show.json", %{user: user})

Config.put([:instances_favicons, :enabled], false)

assert %{pleroma: %{favicon: nil}} = AccountView.render("show.json", %{user: user})
end

test "Represent the user account for the account owner" do
user = insert(:user)



Loading…
Cancel
Save