Simple Forgejo instance guardian, banning users and alerting admins based on certain regular expressions
Find a file
Awiteb cf706d1717
chore: Update the toolchain
Signed-off-by: Awiteb <a@4rs.nl>
2024-11-14 12:25:27 +00:00
src feat: Initialize forgejo-guardian 2024-11-14 11:19:45 +03:00
.gitignore feat: Initialize forgejo-guardian 2024-11-14 11:19:45 +03:00
Cargo.lock chore: Add teloxide and rust_i18n 2024-11-14 12:25:09 +00:00
Cargo.toml chore: Add teloxide and rust_i18n 2024-11-14 12:25:09 +00:00
cliff.toml chore: Add cliff configurations 2024-11-14 19:13:26 +00:00
DCO chore: Add the Developer Certificate of Origin 2024-11-14 19:12:06 +00:00
LICENSE chore: Add the license 2024-11-14 19:12:22 +00:00
README.md feat: Initialize forgejo-guardian 2024-11-14 11:19:45 +03:00
rust-toolchain.toml chore: Update the toolchain 2024-11-14 12:25:27 +00:00
rustfmt.toml feat: Initialize forgejo-guardian 2024-11-14 11:19:45 +03:00
sumi.toml chore: Add sumi configurations 2024-11-14 19:13:10 +00:00
taplo.toml chore: Add taplo configurations 2024-11-14 19:13:44 +00:00

Forgejo Guardian

Simple Forgejo instance guardian, banning users and alerting admins based on certain regular expressions (regex)

agplv3-or-later

Installation

You can let cargo build the binary for you, or build it yourself.

Build it

cargo-install

Tip

This will install the binary in ~/.cargo/bin/forgejo-guardian. Make sure to add this directory to your PATH. If you want to update it, run cargo install ... again.

cargo install --git https://git.4rs.nl/awiteb/forgejo-guardian

cargo-install (from source)

Tip

Then when you want to update it, pull the changes and run cargo install --path . again.

git clone https://git.4rs.nl/awiteb/forgejo-guardian
cd forgejo-guardian
cargo install --path .

Build (from source)

Tip

The binary will be in ./target/release/forgejo-guardian.

git clone https://git.4rs.nl/awiteb/forgejo-guardian
cd forgejo-guardian
cargo build --release

Configuration

We use TOML format for configuration, the default configuration file is /app/forgejo-guardian.toml, but you can specify a different one with FORGEJO_GUARDIAN_CONFIG environment variable.

Structure

In our configuration file, we have two main sections:

  • forgejo: Forgejo instance configuration
  • expressions: Regular expressions to match against

forgejo

Forgejo configuration section, with the following fields:

  • instance_url: Forgejo instance URL (must be HTTPS or HTTP)
  • token: Token to use to get the new users and ban them, requires read:admin and write:admin scopes.
[forgejo]
instance_url = "https://forgejo.example
token = "your-token"

expressions

Expressions configuration section, with the following fields:

  • ban: Regular expressions to match against to ban the user
  • sus: Regular expressions to match against to alert the admins

ban and sus are tables, and each one have the following fields:

  • usernames: Regular expressions to match against the usernames
  • full_names: Regular expressions to match against the full names
  • biographies: Regular expressions to match against the biographies
  • emails: Regular expressions to match against the emails
  • websites: Regular expressions to match against the websites
  • locations: Regular expressions to match against the locations
[expressions.ban]
usernames = ['^admin.*$']

[expressions.sus]
usernames = ['^mod.*$']