# 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?