Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
2375e9a9
Commit
2375e9a9
authored
May 20, 2019
by
Aaron Tinio
Browse files
Add report filtering to MRF.SimplePolicy
parent
8e9a764d
Changes
3
Hide whitespace changes
Inline
Side-by-side
config/config.exs
View file @
2375e9a9
...
...
@@ -298,6 +298,7 @@
media_removal:
[],
media_nsfw:
[],
federated_timeline_removal:
[],
report_removal:
[],
reject:
[],
accept:
[]
...
...
lib/pleroma/web/activity_pub/mrf/simple_policy.ex
View file @
2375e9a9
...
...
@@ -94,6 +94,16 @@ defp check_ftl_removal(%{host: actor_host} = _actor_info, object) do
{
:ok
,
object
}
end
defp
check_report_removal
(%{
host:
actor_host
}
=
_actor_info
,
%{
"type"
=>
"Flag"
}
=
object
)
do
if
actor_host
in
Pleroma
.
Config
.
get
([
:mrf_simple
,
:report_removal
])
do
{
:reject
,
nil
}
else
{
:ok
,
object
}
end
end
defp
check_report_removal
(
_actor_info
,
object
),
do
:
{
:ok
,
object
}
@impl
true
def
filter
(
object
)
do
actor_info
=
URI
.
parse
(
object
[
"actor"
])
...
...
@@ -102,7 +112,8 @@ def filter(object) do
{
:ok
,
object
}
<-
check_reject
(
actor_info
,
object
),
{
:ok
,
object
}
<-
check_media_removal
(
actor_info
,
object
),
{
:ok
,
object
}
<-
check_media_nsfw
(
actor_info
,
object
),
{
:ok
,
object
}
<-
check_ftl_removal
(
actor_info
,
object
)
do
{
:ok
,
object
}
<-
check_ftl_removal
(
actor_info
,
object
),
{
:ok
,
object
}
<-
check_report_removal
(
actor_info
,
object
)
do
{
:ok
,
object
}
else
_e
->
{
:reject
,
nil
}
...
...
test/web/activity_pub/mrf/simple_policy_test.exs
View file @
2375e9a9
...
...
@@ -15,6 +15,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do
media_removal:
[],
media_nsfw:
[],
federated_timeline_removal:
[],
report_removal:
[],
reject:
[],
accept:
[]
)
...
...
@@ -85,6 +86,33 @@ defp build_media_message do
}
end
describe
"when :report_removal"
do
test
"is empty"
do
Config
.
put
([
:mrf_simple
,
:report_removal
],
[])
report_message
=
build_report_message
()
local_message
=
build_local_message
()
assert
SimplePolicy
.
filter
(
report_message
)
==
{
:ok
,
report_message
}
assert
SimplePolicy
.
filter
(
local_message
)
==
{
:ok
,
local_message
}
end
test
"has a matching host"
do
Config
.
put
([
:mrf_simple
,
:report_removal
],
[
"remote.instance"
])
report_message
=
build_report_message
()
local_message
=
build_local_message
()
assert
SimplePolicy
.
filter
(
report_message
)
==
{
:reject
,
nil
}
assert
SimplePolicy
.
filter
(
local_message
)
==
{
:ok
,
local_message
}
end
end
defp
build_report_message
do
%{
"actor"
=>
"https://remote.instance/users/bob"
,
"type"
=>
"Flag"
}
end
describe
"when :federated_timeline_removal"
do
test
"is empty"
do
Config
.
put
([
:mrf_simple
,
:federated_timeline_removal
],
[])
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment