diff --git a/README.md b/README.md new file mode 100644 index 0000000..96237d4 --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +# Webhookey + +## Build + +### Install Rust +The Rust toolchain needs to be installed: +``` sh + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +Further, for Rocket we need to have the nightly toolchain installed: +``` sh + rustup toolchain install nightly +``` + +### Build Webhookey +The webhookey project can be built for development: +``` sh + cargo b +``` + +or for releasing: +``` sh + cargo b --release +``` + +### Install Webhookey +When a Rust toolchain installed you can also install Webhookey +directly without cloning it manualy: +``` sh + cargo install --git https://git.onders.org/finga/webhookey.git webhookey +``` + +or from within the project: +``` sh + cargo install webhookey +``` + +### Run Webhookey +Webhookey can either be run from the project directory with: +``` sh + cargo b +``` + +or you can copy the produced binary somewhere else from +`webhookey/target/{debug, release}/webhookey` depending on which one +you built. + +## Configuration +Configuration syntax is YAML and has to be done in following order: + +Right now there is only the configuration parameter for hooks, here +each hook has to be configured, It contains following fields: +- action: optional string for the action to be executed when all + filters match +- filters: list of filters + +Each filter has to have following fields: +- pointer: pointer to the JSON field according to [RFC + 6901](https://tools.ietf.org/html/rfc6901) +- regex: regular expression which has to match the field pointed to by + the pointer + +### Configuration paths +Following locations are checked for a configuration file: +- `/etc/webhookey/config.yml` +- `/webhookey/config.yml` +- `./config.yml` + +Whereas `` depends on the platform: +- Linux: `$XDG_CONFIG_HOME` or `$HOME/.config` +- macOS: `$HOME/Library/Application Support` +- Windows: `{FOLDERID_RoamingAppData}` + +# TODOs + +## Systemd service file +## Use `lazy_static` or `once_cell` for compiled regexes +## Use `clap` to parse command line arguments +## Implement the functionality to reply to certain webhooks +## Security +### Authentication features +### Secure cookies?