.. | ||
.gitignore | ||
pushcards.py | ||
README.md | ||
requirements.txt | ||
settings.json.example |
Protospace lockout card updater
Runs on the door controller and updates the auth server with member cards.
Setup
Cloning
Clone to user pi
's home directory. If you'd like to place it elsewhere, adjust the supervisor config below.
$ cd
$ git clone https://gogs.tannercollin.com/tanner/pslockout
Python
$ sudo apt install python3 python3-pip python3-virtualenv # for Debian
$ cd ~pi/pslockout/doorcontrol
$ virtualenv -p python3 env
$ . env/bin/activate
(env) $ pip install -r requirements.txt
(env) $ deactivate
Supervisor
Supervisor is used to keep the script always running.
$ sudo apt install supervisor
Create a file named /etc/supervisor/conf.d/pushcards.conf and add:
[program:pushcards]
user=pi
directory=/home/pi/pslockout/doorcontrol
command=/bin/bash -c 'source env/bin/activate && python pushcards.py'
autostart=true
autorestart=true
stderr_logfile=/var/log/pushcards.log
stderr_logfile_maxbytes=1MB
stdout_logfile=/var/log/pushcards.log
stdout_logfile_maxbytes=1MB
settings.json
Copy the example and insert a lockout admin's auth token:
$ cd ~pi/pslockout/doorcontrol
$ cp settings.json.example settings.json
$ vim settings.json
You can find your auth token by requesting it with curl
:
$ curl -d username=tanner.collin -d password=supersecret http://tools-auth.protospace.ca/login/
{
"token": "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
}
Launch
Reload supervisor to start pushcards:
$ sudo supervisorctl reread
$ sudo supervisorctl update
Theory of Operation
Every ten seconds the script checks to see if the card database has changed.
If it was modified, it reads the card numbers into a Python object.
It then sends the object (modified or not) to the auth server which updates the cards for any users found in the system.