aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-04-14 09:20:18 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-04-14 06:32:44 -0500
commit4a178b3d6589bbb9ab08e8a768cc0a3a5d5e9629 (patch)
tree7dba559edd29bbdef91c76121c8340d701e0b299 /lib
parentfef8daa454ab04ac2394e02efcc2b48c1fbad91c (diff)
downloadpleroma-4a178b3d6589bbb9ab08e8a768cc0a3a5d5e9629.tar.gz
ActivityPub: implement MRF core hook and baseline noop policy object
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex6
-rw-r--r--lib/pleroma/web/activity_pub/mrf/drop_policy.ex8
-rw-r--r--lib/pleroma/web/activity_pub/mrf/noop_policy.ex5
3 files changed, 18 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index 04b50c1cc..bfb0e04be 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -10,6 +10,9 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
@httpoison Application.get_env(:pleroma, :httpoison)
+ @instance Application.get_env(:pleroma, :instance)
+ @rewrite_policy Keyword.get(@instance, :rewrite_policy)
+
def get_recipients(data) do
(data["to"] || []) ++ (data["cc"] || [])
end
@@ -17,7 +20,8 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
def insert(map, local \\ true) when is_map(map) do
with nil <- Activity.get_by_ap_id(map["id"]),
map <- lazy_put_activity_defaults(map),
- :ok <- insert_full_object(map) do
+ :ok <- insert_full_object(map),
+ {:ok, map} <- @rewrite_policy.filter(map) do
{:ok, activity} =
Repo.insert(%Activity{
data: map,
diff --git a/lib/pleroma/web/activity_pub/mrf/drop_policy.ex b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex
new file mode 100644
index 000000000..4333bca28
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/drop_policy.ex
@@ -0,0 +1,8 @@
+defmodule Pleroma.Web.ActivityPub.MRF.DropPolicy do
+ require Logger
+
+ def filter(object) do
+ Logger.info("REJECTING #{inspect(object)}")
+ {:reject, object}
+ end
+end
diff --git a/lib/pleroma/web/activity_pub/mrf/noop_policy.ex b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex
new file mode 100644
index 000000000..9dd3acb04
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/noop_policy.ex
@@ -0,0 +1,5 @@
+defmodule Pleroma.Web.ActivityPub.MRF.NoOpPolicy do
+ def filter(object) do
+ {:ok, object}
+ end
+end