From a99ba09f1c43a4a554888207213871ba9780d56f Mon Sep 17 00:00:00 2001 From: red Date: Fri, 4 Jul 2025 11:41:00 -0400 Subject: [PATCH] add mrf --- pleroma/custom-modules/mrf_yeehaw_policy.ex | 50 +++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 pleroma/custom-modules/mrf_yeehaw_policy.ex diff --git a/pleroma/custom-modules/mrf_yeehaw_policy.ex b/pleroma/custom-modules/mrf_yeehaw_policy.ex new file mode 100644 index 0000000..4c925d3 --- /dev/null +++ b/pleroma/custom-modules/mrf_yeehaw_policy.ex @@ -0,0 +1,50 @@ +defmodule Pleroma.Web.ActivityPub.MRF.YeehawPolicy do + @behaviour Pleroma.Web.ActivityPub.MRF.Policy + + require Logger + + @impl true + def filter( + %{ + "type" => "Create", + "object" => %{"type" => "Note", "content" => _content} = object, + "actor" => actor + } = activity + ) do + actor_info = URI.parse(actor) + local_instance = Pleroma.Config.get([Pleroma.Web.Endpoint, :url, :host]) + try do + if actor_info.host == local_instance do + {:ok, + Map.put( + activity, + "object", + object |> update_in(["content"], fn x -> x <> "\n\n- Yeehaw" end) + )} + else + {:ok, activity} + end + rescue + err -> + Logger.warning(inspect(err)) + {:ok, activity} + end + end + + def filter(activity), do: {:ok, activity} + + @impl true + def describe do + {:ok, %{}} + end + + @impl true + def config_description do + %{ + key: :mrf_yeehawpolicy, + related_policy: "Pleroma.Web.ActivityPub.MRF.YeeHawPolicy", + label: "YeeHaw at everyone", + description: "YeeHaw at everyone on the local instance" + } + end +end