summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2024-05-16 20:37:37 +0000
committerfeld <feld@feld.me>2024-05-16 20:37:37 +0000
commit7de657ac45e13f9809ad1fbd4b2429d2045e8f89 (patch)
tree87b44bcd0f7e04053662f2276b42e60485a68a60 /lib
parente944b1529862a2a40158803da5fe04a024f7aa4f (diff)
parent7f8a9329e566140f9f36cecac58b13097b7e0519 (diff)
downloadpleroma-7de657ac45e13f9809ad1fbd4b2429d2045e8f89.tar.gz
pleroma-7de657ac45e13f9809ad1fbd4b2429d2045e8f89.zip
Merge branch 'bad-mrf' into 'develop'
Startup detection for configured MRF modules that are missing or incorrectly defined See merge request pleroma/pleroma!4110
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/application_requirements.ex22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/pleroma/application_requirements.ex b/lib/pleroma/application_requirements.ex
index 819245481..8c0df64fc 100644
--- a/lib/pleroma/application_requirements.ex
+++ b/lib/pleroma/application_requirements.ex
@@ -28,6 +28,7 @@ defmodule Pleroma.ApplicationRequirements do
|> check_welcome_message_config!()
|> check_rum!()
|> check_repo_pool_size!()
+ |> check_mrfs()
|> handle_result()
end
@@ -234,4 +235,25 @@ defmodule Pleroma.ApplicationRequirements do
true
end
end
+
+ defp check_mrfs(:ok) do
+ mrfs = Config.get!([:mrf, :policies])
+
+ missing_mrfs =
+ Enum.reduce(mrfs, [], fn x, acc ->
+ if Code.ensure_compiled(x) do
+ acc
+ else
+ acc ++ [x]
+ end
+ end)
+
+ if Enum.empty?(missing_mrfs) do
+ :ok
+ else
+ {:error, "The following MRF modules are configured but missing: #{inspect(missing_mrfs)}"}
+ end
+ end
+
+ defp check_mrfs(result), do: result
end