|
||
---|---|---|
src | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
cliff.toml | ||
DCO | ||
LICENSE | ||
README.md | ||
rust-toolchain.toml | ||
rustfmt.toml | ||
sumi.toml | ||
taplo.toml |
Forgejo Guardian
Simple Forgejo instance guardian, banning users and alerting admins based on certain regular expressions (regex)
Installation
You can let cargo install 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 yourPATH
. If you want to update it, runcargo 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 configurationexpressions
: 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, requiresread:admin
andwrite: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 usersus
: 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 usernamesfull_names
: Regular expressions to match against the full namesbiographies
: Regular expressions to match against the biographiesemails
: Regular expressions to match against the emailswebsites
: Regular expressions to match against the websiteslocations
: Regular expressions to match against the locations
[expressions.ban]
usernames = ['^admin.*$']
[expressions.sus]
usernames = ['^mod.*$']