Merge branch 'fix/mrf-docs' into 'develop'

Fix MRF documentation

See merge request pleroma/pleroma!2187
This commit is contained in:
feld 2020-02-18 20:57:23 +00:00
commit 3416948cdf

View file

@ -1,4 +1,5 @@
# Message Rewrite Facility # Message Rewrite Facility
The Message Rewrite Facility (MRF) is a subsystem that is implemented as a series of hooks that allows the administrator to rewrite or discard messages. The Message Rewrite Facility (MRF) is a subsystem that is implemented as a series of hooks that allows the administrator to rewrite or discard messages.
Possible uses include: Possible uses include:
@ -11,6 +12,7 @@ Possible uses include:
* sending only public messages to a specific instance * sending only public messages to a specific instance
The MRF provides user-configurable policies. The default policy is `NoOpPolicy`, which disables the MRF functionality. Pleroma also includes an easy to use policy called `SimplePolicy` which maps messages matching certain pre-defined criterion to actions built into the policy module. The MRF provides user-configurable policies. The default policy is `NoOpPolicy`, which disables the MRF functionality. Pleroma also includes an easy to use policy called `SimplePolicy` which maps messages matching certain pre-defined criterion to actions built into the policy module.
It is possible to use multiple, active MRF policies at the same time. It is possible to use multiple, active MRF policies at the same time.
## Quarantine Instances ## Quarantine Instances
@ -18,7 +20,8 @@ It is possible to use multiple, active MRF policies at the same time.
You have the ability to prevent from private / followers-only messages from federating with specific instances. Which means they will only get the public or unlisted messages from your instance. You have the ability to prevent from private / followers-only messages from federating with specific instances. Which means they will only get the public or unlisted messages from your instance.
If, for example, you're using `MIX_ENV=prod` aka using production mode, you would open your configuration file located in `config/prod.secret.exs` and edit or add the option under your `:instance` config object. Then you would specify the instance within quotes. If, for example, you're using `MIX_ENV=prod` aka using production mode, you would open your configuration file located in `config/prod.secret.exs` and edit or add the option under your `:instance` config object. Then you would specify the instance within quotes.
```
```elixir
config :pleroma, :instance, config :pleroma, :instance,
[...] [...]
quarantined_instances: ["instance.example", "other.example"] quarantined_instances: ["instance.example", "other.example"]
@ -30,7 +33,7 @@ config :pleroma, :instance,
To use `SimplePolicy`, you must enable it. Do so by adding the following to your `:instance` config object, so that it looks like this: To use `SimplePolicy`, you must enable it. Do so by adding the following to your `:instance` config object, so that it looks like this:
``` ```elixir
config :pleroma, :instance, config :pleroma, :instance,
[...] [...]
rewrite_policy: Pleroma.Web.ActivityPub.MRF.SimplePolicy rewrite_policy: Pleroma.Web.ActivityPub.MRF.SimplePolicy
@ -50,7 +53,7 @@ Servers should be configured as lists.
This example will enable `SimplePolicy`, block media from `illegalporn.biz`, mark media as NSFW from `porn.biz` and `porn.business`, reject messages from `spam.com`, remove messages from `spam.university` from the federated timeline and block reports (flags) from `whiny.whiner`: This example will enable `SimplePolicy`, block media from `illegalporn.biz`, mark media as NSFW from `porn.biz` and `porn.business`, reject messages from `spam.com`, remove messages from `spam.university` from the federated timeline and block reports (flags) from `whiny.whiner`:
``` ```elixir
config :pleroma, :instance, config :pleroma, :instance,
rewrite_policy: [Pleroma.Web.ActivityPub.MRF.SimplePolicy] rewrite_policy: [Pleroma.Web.ActivityPub.MRF.SimplePolicy]
@ -60,7 +63,6 @@ config :pleroma, :mrf_simple,
reject: ["spam.com"], reject: ["spam.com"],
federated_timeline_removal: ["spam.university"], federated_timeline_removal: ["spam.university"],
report_removal: ["whiny.whiner"] report_removal: ["whiny.whiner"]
``` ```
### Use with Care ### Use with Care
@ -83,7 +85,7 @@ defmodule Site.RewritePolicy do
# Capture the object as `object`, the message content as `content` and the # Capture the object as `object`, the message content as `content` and the
# message itself as `message`. # message itself as `message`.
@impl true @impl true
def filter(%{"type" => Create", "object" => {"type" => "Note", "content" => content} = object} = message) def filter(%{"type" => "Create", "object" => {"type" => "Note", "content" => content} = object} = message)
when is_binary(content) do when is_binary(content) do
# Subject / CW is stored as summary instead of `name` like other AS2 objects # Subject / CW is stored as summary instead of `name` like other AS2 objects
# because of Mastodon doing it that way. # because of Mastodon doing it that way.
@ -111,7 +113,7 @@ end
If you save this file as `lib/site/mrf/rewrite_policy.ex`, it will be included when you next rebuild Pleroma. You can enable it in the configuration like so: If you save this file as `lib/site/mrf/rewrite_policy.ex`, it will be included when you next rebuild Pleroma. You can enable it in the configuration like so:
``` ```elixir
config :pleroma, :instance, config :pleroma, :instance,
rewrite_policy: [ rewrite_policy: [
Pleroma.Web.ActivityPub.MRF.SimplePolicy, Pleroma.Web.ActivityPub.MRF.SimplePolicy,