A framework for makerspace tool/door authz/authn
Project description
Software
For the basic walkthrough of how this code works, see https://google.github.io/makerspace-auth/client/Walkthrough.html
Prerequisites:
- Python 2.7 or 3.6+
evdev
(python-evdev on Debian)RPi
module (orpip install fake-rpi
for testing)- Make sure you're in the 'input' group to use evdev
- Make sure you're in the gpio group if you're on a Pi
Developing:
- The easiest way is to run
make setup
and then. .venv/bin/activate
. - You can also run the tests with tox, using
tox -p all
- The code is formatted with isort+black, run
make lint
and/ormake format
before sending pull requests.
Protocol
While using a server is optional (you can do everything with shell scripts), we use a simple HTTP-based protocol that's intended to be easy to adapt to existing systems. See https://google.github.io/makerspace-auth/server/Protocol.html
QA example
This simply flashes a light when its button is pressed. We use this to run QA on authboards once assembled, and is a very simple example of how the event loop works.
Two-button example
We determined two buttons ("on" and "off", basically) to be the minimum viable controls, and this is the version that we use at Google. If you're looking for a good jumping-off point, start here.
The basic workflow is:
- Scan badge
- Press "on". Tool will power up.
- Warning timer commences beeps. If you press "on" again, you get more time.
- Otherwise, tool powers off.
You should copy (or symlink) this file to ~/.authboxrc and make edits to conform to your pin numbers. The defaults are for an RDR-6081AKU (keystroking) and pi-hat-1 v1.0 hardware triggering both onbarod relays to enable devices.
This example out of the box stores authorized users in a local file
(See sample_auth_check.sh
) but you likely want it to query your existing
user/training database. If you'd like to use the same protocol, that's
documented at
https://google.github.io/makerspace-auth/server/Protocol.html and if you use
curl, remember the '-f'.
Starting on boot
The simplest way that works on all distros is a cron job:
# Visually
pi$ crontab -e
(add the following line at the end, save, and apply)
@reboot cd /path/to/software; python two_button.py
# Through script
pi$ (crontab -l; echo "@reboot cd /path/to/software; python two_button.py") | crontab -
If your distro uses systemd, you can also make a systemd unit that runs it.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for authbox-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f4bece15f09e46e725862981fe7a14c2d31bbfa17690eee04d19a162c59f9b4 |
|
MD5 | 3c14269d802bce2b4c1147551e32655f |
|
BLAKE2b-256 | 297226853ea106a65f8b2e10b39444bffa872a04b770f4aaafccf0def12e67f2 |