I did this in freedom-fire-day so it doesn't currently follow the flask template.
It's also a bit weird because it writes to a local ignored `clients.json` file
instead of using a database. I did this as a placeholder because we've not yet
decided what the infrastructure looks like.
### Data flow
- Client A sends to `client-a-outbox` (or POSTs to API /send - not yet implemented)
...
...
@@ -31,14 +23,23 @@ which queues it reads from.
Subsequent requests to the client endpoint return the client_id but not the secret.
### Setup
### Running via docker-compose
Using `docker-compose` will mean that everything is setup automatically, this includes the `rabbitmq` container, the backbone API, and the backbone bus. The `run-compose.sh` script has been provided to simplify this even further - all you have to do is set whatever env vars you need in the `.env` file and then run `./run-compose.sh` (the defaults in `.env` are fine for local dev work, but ones not labelled `optional` will need setting in a production setting). The env vars are:
- `MQ_HOST` - The hostname of our `rabbitmq` instance. This defaults to `rmq` which matches the container name of the `rabbitmq` instance in the compose yaml file
- `DATA_DIR` - Where to mount the volume of the API container on your local system. This defaults to the result of `pwd`, which should be within the `communications-backbone` repo
- `SOAR_TOKEN_LIFETIME` (Optional) - The number of hours until a newly created token expires
- `SOAR_TOKEN_SECRET` (Optional) - A secret key used to encrypt/decrypt token data. If specified the value should be set using TokenModel.getKey()