Add script to push card data to auth server
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# 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=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 requsting with `curl`:
|
||||
|
||||
```
|
||||
$ curl -d username=tanner.collin -d password=supersecret http://tools-auth.protospace.ca/login/
|
||||
|
||||
{
|
||||
"token": "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
|
||||
}
|
||||
```
|
||||
|
||||
### Launch
|
||||
|
||||
Reload supervisor and 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.
|
||||
Reference in New Issue
Block a user