2024-12-22 19:36:24 +00:00
|
|
|
# spam accounts management for forgejo
|
2024-11-23 12:20:40 +00:00
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
- remove `model.json` if you want to start with no pre-existing model of what is
|
|
|
|
spam or not. Or keep it to use the current classifier. The file gets updated
|
|
|
|
when using the tool: the classifier learns from spam/legit decisions and
|
|
|
|
should get progressively better at identifying spam.
|
|
|
|
- run: `cargo run`
|
2024-12-21 20:22:16 +00:00
|
|
|
- classify users as spam/not spam. By default the classification is stored
|
|
|
|
locally in `db.json`, no concrete action is taken. (see the
|
|
|
|
`ACTUALLY_BAN_USERS` environment variable below.)
|
2024-11-23 12:28:24 +00:00
|
|
|
|
2024-12-20 20:14:43 +00:00
|
|
|
## Configuration
|
|
|
|
|
|
|
|
Forgery reads the following environment variables:
|
2024-12-22 19:36:24 +00:00
|
|
|
- `FORGEJO_URL`: url of the forgejo instance (e.g. https://git.deuxfleurs.fr)
|
2024-12-21 20:22:16 +00:00
|
|
|
- `FORGEJO_API_TOKEN`: Forgejo API token *granting admin access*. Required. You
|
|
|
|
can generate an API token using the Forgejo web interface in `Settings ->
|
|
|
|
Applications -> Generate New Token`.
|
2024-12-22 14:03:38 +00:00
|
|
|
- `ORG_NAME`: organization name (used in the notification email sent when
|
|
|
|
locking accounts)
|
|
|
|
- `ADMIN_CONTACT_EMAIL`: email that can be used to contact admins of your
|
|
|
|
instance (included in the notification email sent when locking accounts)
|
2024-12-22 19:36:24 +00:00
|
|
|
- `ACTUALLY_BAN_USERS`: define it to `true` to actually lock user accounts, send
|
|
|
|
notification emails and eventually delete user accounts. If not defined (the
|
|
|
|
default) or set to `false`, no actual action is taken: spammers are only
|
|
|
|
listed in the database. The variable should be set in production, but probably
|
|
|
|
not for testing.
|
2024-12-20 20:14:43 +00:00
|
|
|
|
|
|
|
Environment variables that are relevant when `ACTUALLY_BAN_USERS=true`:
|
|
|
|
- `SMTP_ADDRESS`: address of the SMTP relay used to send email notifications
|
|
|
|
- `SMTP_USERNAME`: SMTP username
|
|
|
|
- `SMTP_PASSWORD`: SMTP password
|
|
|
|
|
2024-11-23 12:28:24 +00:00
|
|
|
## Todos
|
|
|
|
|
2024-12-20 19:48:13 +00:00
|
|
|
- discuss the current design choices for when locking the account/sending a
|
|
|
|
notification email fails.
|
|
|
|
(Current behavior is to periodically retry, avoid deleting if the account
|
|
|
|
could not be locked, but delete the account after the grace period even if
|
|
|
|
the email could not be sent…)
|
2024-11-23 12:28:24 +00:00
|
|
|
- add backend to store data on garage instead of local files
|
|
|
|
- improve error handling
|