Shares anti-abuse state between the nodes of a cluster, so that limits hold for the cluster as a whole:
- rate limits (
[rate_limit], tenant limits, and the counts of[outbound]): the events each node counted; - failed logins (
[auth]and the admin API): each node counts every node's failures, so a client cannot spread its guesses, and is banned everywhere; - accounts suspended by
[outbound]; - greylisting, when the nodes have their own SQLite databases.
Every cluster.sync_interval (1 second), each node sends what changed
to the others. What a node counted while it was cut off from the
others is not sent again, and limits are looser by what the nodes
have not told each other yet.
Summary
Functions
Returns a specification to start this module under a supervisor.
Shares a greylist entry that this node stored.
Whether greylist entries need sharing: only between SQLite databases.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec greylist(GenServer.server(), map()) :: :ok
Shares a greylist entry that this node stored.
@spec greylist?(Sovite.Core.Config.t()) :: boolean()
Whether greylist entries need sharing: only between SQLite databases.