Awesome
Chief
Chief is a write policy plugin for Strfry (which is a nostr relay software). It enables relay operators to blacklist or whitelist public keys, event kinds and specific words or sentences using either a JSON file or a postgresql database.
Setup
Compile and configure
- Compile from source
- Run
cargo build --release
.
- Run
- Put the compiled binary where you want it to run from
- E.g.
sudo cp target/release/chief /usr/local/bin
.
- E.g.
- Create a folder in
/etc
where your configuration files will live and copy the example config to that foldersudo mkdir /etc/chief/
sudo cp docs/examples/example-config.toml /etc/chief/config.toml
.- This path is currently hardcoded and cannot be changed.
- Configure strfry to use Chief as the write policy
- Under "relay.writePolicy", set the plugin to
/usr/local/bin/chief
- Under "relay.writePolicy", set the plugin to
writePolicy {
# If non-empty, path to an executable script that implements the writePolicy plugin logic
plugin = "/usr/local/bin/chief"
}
Select a datasource
The datasource contains the public keys, kinds and/or words you want to either whitelist or blacklist. This application supports two different datasources: a JSON file or a postgresql database.
JSON
To use a JSON file as the datasource, please read this document.
Postgresql database
To use a postgresql database as the datasource, please read this document.
Filters
- Pubkey filter to blacklist or whitelist specific public keys
- Kinds filter to blacklist or whitelist specific note kinds
- Content filter to blacklist certain words and/or sentences
- Rate limiting filter to only allow a certain amount of events in a specific time period (measured in seconds)