See #580 (closed)
Following the work done in !512 (merged) and !504 (merged), this MR implements the first actual moderation feature of Funkwhale
As shown in the gif below, domain and account admin area now support setting moderation rules (internally called instance policies) to partially or completely block a domain or account.
Overview:
- Full blocking a domain will purge the database from libraries, uploads, messages, follows, etc. for all the accounts of this domain
- Full blocking an account will have the same effect but on the account data only
- Admins can also purge multiple accounts / domains by hand in the admin without blocking those
- Instance policies are applied when receiving messages from other instances, but also when fetching data. For instance, if baddomain.com is blocked, local users who try to follow a library from this domain will see an error message
- Policies support different settings (this was heavily inspired by what's available in Mastodon, and the suggested improvements suggested here by @ThibG):
- Block everything: no data will be received from or send toward the targeted domain/account
- Reject media: no user avatars, attachments, audio files or metadata (artists, albums, tracks…) will be downloaded. Existing entries will be removed.
- Silence activity: domain/account activity (favorites, etc.) will be hidden in public areas, except from followers
- Silence notifications: local users will never receive notifications from the account/domain unless they're following the sender
- Those two last options refer to future Funkwhale developments and as such are currently hidden in the UI to avoid confusion
- Policies can have an optionnal summary describing why the policy is in place. This is only shown in admin in this version, but we could imagine having an opt-in setting to display this data to local users or publicly
- Each policy can be temporarily disabled/enabled on the fly