.drone.yml | ||
.gitignore | ||
const.py | ||
docker-compose.dev.yml | ||
docker-compose.yml | ||
Dockerfile | ||
doorboy.py | ||
Jenkinsfile | ||
overnode.yml | ||
README.md | ||
requirements.txt |
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