Doorboy proxy exports door access information from MongoDB to door Raspberry Pi controllers
Go to file
Lauri Võsandi f068ae19ac Simplify and clean up 2021-04-04 18:56:44 +00:00
.gitignore Simplify and clean up 2021-04-04 18:56:44 +00:00
Dockerfile rewrite with sanic, motor 2021-04-02 09:17:39 +00:00
README.md Simplify and clean up 2021-04-04 18:56:44 +00:00
const.py change db to get_default_database 2021-03-31 10:23:48 +03:00
docker-compose.dev.yml Simplify and clean up 2021-04-04 18:56:44 +00:00
docker-compose.yml Rolled out in prod 2021-04-04 08:58:45 +00:00
main.py Attribute token.enabled is timestamp, not boolean 2021-04-04 11:51:11 +00:00
overnode.yml Rolled out in prod 2021-04-04 08:58:45 +00:00
requirements.txt clean up requirements, small tweak 2021-04-03 17:09:51 +03:00

README.md

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

To deploy in prod adjust DOORBOY_SECRET, MONGO_URI in .env and proceed to launch:

docker build -t 172.20.40.1:5000/doorboy:latest .
docker push 172.20.40.1:5000/doorboy:latest
overnode pull
overnode up