summaryrefslogtreecommitdiff
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
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
-rw-r--r--changelog.d/missing-mrfs.add1
-rw-r--r--lib/pleroma/application_requirements.ex22
2 files changed, 23 insertions, 0 deletions
diff --git a/changelog.d/missing-mrfs.add b/changelog.d/missing-mrfs.add
new file mode 100644
index 000000000..6a17f9e1a
--- /dev/null
+++ b/changelog.d/missing-mrfs.add
@@ -0,0 +1 @@
+Startup detection for configured MRF modules that are missing or incorrectly defined
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