# Background This component serves allowed list of keyfob UID hashes from MongoDB and pushes open door commands to door controllers. We run three instances `replica{1..3}.doorboy.infra.k-space.ee` for high availability. To connect from door controllers use round robin record `doorboy.infra.k-space.ee` # Testing endpoints For manually testing something like this might help: ``` source .env curl -f http://doorboy.infra.k-space.ee:5000/allowed -H "KEY: $DOORBOY_SECRET" | md5sum ``` # Test scenarios When updating doorboy proxy, members site or kdoorpi verify follwing: * Swiping unknown card shows up as unknown, it can be claimed on members site and it immediately can be used after claiming * Card enable/disable on members site works and has effect * Opening door via buttons at https://members.k-space.ee/m/doorboy works and has effect * Opening door via `/open-ground-door`, `/open-front-door` and `/open-back-door` commands in Slack channel #members works * TODO: Keep door open via members site works and has effect When testing changes prefer using the *back* door and use a brick or something to keep it open to prevent interfering with other members entering and exiting. # Development The easiest is to obtain VM from Proxmox cluster with public IP address. To run development instance: ``` docker-compose -f docker-compose.dev.yml up --build ``` On kdoorpi override `KDOORPI_API_ALLOWED`, `KDOORPI_API_LONGPOLL` environment variables to redirect requests to your dev instance. # Deploying Images are built and pushed to Docker Hub by Jenkins. To deploy in prod adjust `DOORBOY_SECRET`, `MONGO_URI` in `.env` and proceed to launch: ``` overnode pull overnode up ```