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
acfded5a
Verified
Commit
acfded5a
authored
Jan 22, 2022
by
Alex Gleason
Browse files
MRF reasons: normalize config for backwards compatibility
parent
e72fd4ce
Pipeline
#38806
passed with stages
in 12 minutes and 19 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/web/activity_pub/mrf.ex
View file @
acfded5a
...
...
@@ -4,6 +4,7 @@
defmodule
Pleroma
.
Web
.
ActivityPub
.
MRF
do
require
Logger
import
Pleroma
.
Web
.
Utils
.
Guards
,
only:
[
not_empty_string:
1
]
@behaviour
Pleroma
.
Web
.
ActivityPub
.
MRF
.
PipelineFiltering
...
...
@@ -110,6 +111,16 @@ def instance_list_from_tuples(list) do
end)
end
@spec normalize_instance_list(list()) :: [{String.t(), String.t()}]
def normalize_instance_list(list) do
Enum.map(list, fn
{host, reason} when not_empty_string(host) and not_empty_string(reason) -> {host, reason}
{host, _reason} when not_empty_string(host) -> {host, ""}
host when not_empty_string(host) -> {host, ""}
value -> raise "
Invalid
MRF
config:
#{inspect(value)}"
end
)
end
def
describe
(
policies
)
do
{
:ok
,
policy_configs
}
=
policies
...
...
lib/pleroma/web/activity_pub/mrf/simple_policy.ex
View file @
acfded5a
...
...
@@ -263,13 +263,14 @@ def describe do
mrf_simple_excluded
=
Config
.
get
(
:mrf_simple
)
|>
Enum
.
map
(
fn
{
rule
,
instances
}
->
instances
=
MRF
.
normalize_instance_list
(
instances
)
{
rule
,
Enum
.
reject
(
instances
,
fn
{
host
,
_
}
->
host
in
exclusions
end
)}
end
)
mrf_simple
=
mrf_simple_excluded
|>
Enum
.
map
(
fn
{
rule
,
instances
}
->
{
rule
,
Enum
.
map
(
instances
,
fn
{
host
,
_
}
->
host
end
)}
{
rule
,
MRF
.
instance_list_from_tuples
(
instances
)}
end
)
|>
Map
.
new
()
...
...
test/pleroma/web/activity_pub/mrf_test.exs
View file @
acfded5a
...
...
@@ -79,9 +79,18 @@ test "it handles legacy config" do
end
end
describe
"normalize_instance_list/1"
do
test
"returns a list of tuples"
do
list
=
[{
"some.tld"
,
"a reason"
},
"other.tld"
]
expected
=
[{
"some.tld"
,
"a reason"
},
{
"other.tld"
,
""
}]
assert
MRF
.
normalize_instance_list
(
list
)
==
expected
end
end
describe
"describe/0"
do
test
"it works as expected with noop policy"
do
clear_config
([
:mrf
,
:policies
],
[
Pleroma
.
Web
.
ActivityPub
.
MRF
.
NoOpPolicy
])
clear_config
([
:mrf
,
:policies
],
[
MRF
.
NoOpPolicy
])
expected
=
%{
mrf_policies:
[
"NoOpPolicy"
,
"HashtagPolicy"
],
...
...
@@ -112,6 +121,32 @@ test "it works as expected with mock policy" do
{
:ok
,
^
expected
}
=
MRF
.
describe
()
end
test
"it works as expected with SimplePolicy"
do
clear_config
([
:mrf
,
:policies
],
[
MRF
.
SimplePolicy
])
clear_config
([
:mrf_simple
,
:reject
],
[{
"lain.com"
,
"2kool4skool"
},
"othersite.xyz"
])
expected
=
%{
exclusions:
false
,
mrf_hashtag:
%{
federated_timeline_removal:
[],
reject:
[],
sensitive:
[
"nsfw"
]},
mrf_policies:
[
"SimplePolicy"
,
"HashtagPolicy"
],
mrf_simple:
%{
accept:
[],
avatar_removal:
[],
banner_removal:
[],
federated_timeline_removal:
[],
followers_only:
[],
media_nsfw:
[],
media_removal:
[],
reject:
[
"lain.com"
,
"othersite.xyz"
],
reject_deletes:
[],
report_removal:
[]
},
mrf_simple_info:
%{
reject:
%{
"lain.com"
=>
%{
"reason"
=>
"2kool4skool"
}}}
}
{
:ok
,
^
expected
}
=
MRF
.
describe
()
end
end
test
"config_descriptions/0"
do
...
...
Write
Preview
Markdown
is supported
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