total rebase
[anni] / lib / pleroma / web / activity_pub / mrf.ex
old mode 100755 (executable)
new mode 100644 (file)
index ff9f844..1071f8e
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.ActivityPub.MRF do
@@ -54,6 +54,8 @@ defmodule Pleroma.Web.ActivityPub.MRF do
   @required_description_keys [:key, :related_policy]
 
   def filter_one(policy, message) do
+    Code.ensure_loaded(policy)
+
     should_plug_history? =
       if function_exported?(policy, :history_awareness, 0) do
         policy.history_awareness()
@@ -137,7 +139,16 @@ defmodule Pleroma.Web.ActivityPub.MRF do
 
   @spec subdomains_regex([String.t()]) :: [Regex.t()]
   def subdomains_regex(domains) when is_list(domains) do
-    for domain <- domains, do: ~r(^#{String.replace(domain, "*.", "(.*\\.)*")}$)i
+    for domain <- domains do
+      try do
+        target = String.replace(domain, "*.", "(.*\\.)*")
+        ~r<^#{target}$>i
+      rescue
+        e ->
+          Logger.error("MRF: Invalid subdomain Regex: #{domain}")
+          reraise e, __STACKTRACE__
+      end
+    end
   end
 
   @spec subdomain_match?([Regex.t()], String.t()) :: boolean()
@@ -188,6 +199,8 @@ defmodule Pleroma.Web.ActivityPub.MRF do
 
   def config_descriptions(policies) do
     Enum.reduce(policies, @mrf_config_descriptions, fn policy, acc ->
+      Code.ensure_loaded(policy)
+
       if function_exported?(policy, :config_description, 0) do
         description =
           @default_description
@@ -199,7 +212,7 @@ defmodule Pleroma.Web.ActivityPub.MRF do
         if Enum.all?(@required_description_keys, &Map.has_key?(description, &1)) do
           [description | acc]
         else
-          Logger.warn(
+          Logger.warning(
             "#{policy} config description doesn't have one or all required keys #{inspect(@required_description_keys)}"
           )