# 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.