From 61621ebdbc5b783fbba7f37559030f7a8e151d53 Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Tue, 2 Apr 2024 10:54:53 +0100 Subject: [PATCH] Add tests for extra warnings about media subdomains --- config/description.exs | 4 +-- config/test.exs | 1 + docs/docs/configuration/cheatsheet.md | 2 +- lib/pleroma/config/deprecation_warnings.ex | 6 ++-- .../config/deprecation_warnings_test.exs | 31 +++++++++++++++++++ 5 files changed, 38 insertions(+), 6 deletions(-) diff --git a/config/description.exs b/config/description.exs index 3ddd874f8..ec5050be6 100644 --- a/config/description.exs +++ b/config/description.exs @@ -100,9 +100,9 @@ label: "Base URL", type: :string, description: - "Base URL for the uploads. Required if you use a CDN or host attachments under a different domain.", + "Base URL for the uploads. Required if you use a CDN or host attachments under a different domain - it is HIGHLY recommended that you **do not** set this to be the same as the domain akkoma is hosted on.", suggestions: [ - "https://cdn-host.com" + "https://media.akkoma.dev/media/" ] }, %{ diff --git a/config/test.exs b/config/test.exs index 666a0fb87..97d005eab 100644 --- a/config/test.exs +++ b/config/test.exs @@ -22,6 +22,7 @@ config :pleroma, :auth, oauth_consumer_strategies: [] config :pleroma, Pleroma.Upload, + base_url: "http://localhost:4001/media/", filters: [], link_name: false diff --git a/docs/docs/configuration/cheatsheet.md b/docs/docs/configuration/cheatsheet.md index c4259c6cf..d238d73aa 100644 --- a/docs/docs/configuration/cheatsheet.md +++ b/docs/docs/configuration/cheatsheet.md @@ -602,7 +602,7 @@ the source code is here: [kocaptcha](https://github.com/koto-bank/kocaptcha). Th * `filters`: List of [upload filters](#upload-filters) to use. * `link_name`: When enabled Akkoma will add a `name` parameter to the url of the upload, for example `https://instance.tld/media/corndog.png?name=corndog.png`. This is needed to provide the correct filename in Content-Disposition headers * `base_url`: The base URL to access a user-uploaded file; MUST be configured explicitly. - Using a (sub)domain distinct from the instance endpoint is **strongly** recommended. + Using a (sub)domain distinct from the instance endpoint is **strongly** recommended. A good value might be `https://media.myakkoma.instance/media/`. * `proxy_remote`: If you're using a remote uploader, Akkoma will proxy media requests instead of redirecting to it. * `proxy_opts`: Proxy options, see `Pleroma.ReverseProxy` documentation. * `filename_display_max_length`: Set max length of a filename to display. 0 = no limit. Default: 30. diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 3161f5907..d7c64ea2a 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -352,10 +352,11 @@ def check_uploader_base_url_set() do Please make the following change:\n \n* `config :pleroma, Pleroma.Upload, base_url: "https://example.com/media/` \n - \nPlease note that it is HEAVILY recommended to use a subdomain to host user-uploaded media! + \nPlease note that it is HEAVILY recommended to use a subdomain to host user-uploaded media! """) - :error + # This is a hard exit - the uploader will not work without a base_url + raise ArgumentError, message: "No base_url set for uploads - please set one in your config!" end end @@ -369,7 +370,6 @@ def check_uploader_base_url_is_not_base_domain() do akkoma_host = [Pleroma.Web.Endpoint, :url] |> Pleroma.Config.get() - |> IO.inspect() |> Keyword.get(:host) if uploader_host == akkoma_host do diff --git a/test/pleroma/config/deprecation_warnings_test.exs b/test/pleroma/config/deprecation_warnings_test.exs index 98c128e6a..7e2e04e6a 100644 --- a/test/pleroma/config/deprecation_warnings_test.exs +++ b/test/pleroma/config/deprecation_warnings_test.exs @@ -289,4 +289,35 @@ test "check_http_adapter/0" do Application.put_env(:tesla, :adapter, Tesla.Mock) end + + test "check_uploader_base_url_set/0" do + clear_config([Pleroma.Upload], base_url: nil) + + # we need to capture the error + assert_raise ArgumentError, fn -> + assert capture_log(fn -> + DeprecationWarnings.check_uploader_base_url_set() + end) =~ "Your config does not specify a base_url for uploads!" + end + + clear_config([Pleroma.Upload], base_url: "https://example.com") + + refute capture_log(fn -> + DeprecationWarnings.check_uploader_base_url_set() + end) =~ "Your config does not specify a base_url for uploads!" + end + + test "check_uploader_base_url_is_not_base_domain/0" do + clear_config([Pleroma.Upload], base_url: "http://localhost") + + assert capture_log(fn -> + DeprecationWarnings.check_uploader_base_url_is_not_base_domain() + end) =~ "Your Akkoma Host and your Upload base_url's host are the same!" + + clear_config([Pleroma.Upload], base_url: "https://media.localhost") + + refute capture_log(fn -> + DeprecationWarnings.check_uploader_base_url_is_not_base_domain() + end) =~ "Your Akkoma Host and your Upload base_url's host are the same!" + end end