Skip to main content

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:

  1. Python 2.7 or 3.6+
  2. evdev (python-evdev on Debian)
  3. RPi module (or pip install fake-rpi for testing)
  4. Make sure you're in the 'input' group to use evdev
  5. Make sure you're in the gpio group if you're on a Pi

Developing:

  1. The easiest way is to run make setup and then . .venv/bin/activate.
  2. You can also run the tests with tox, using tox -p all
  3. The code is formatted with isort+black, run make lint and/or make 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:

  1. Scan badge
  2. Press "on". Tool will power up.
  3. Warning timer commences beeps. If you press "on" again, you get more time.
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

authbox-1.0.0.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

authbox-1.0.0-py2.py3-none-any.whl (24.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file authbox-1.0.0.tar.gz.

File metadata

  • Download URL: authbox-1.0.0.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0

File hashes

Hashes for authbox-1.0.0.tar.gz
Algorithm Hash digest
SHA256 53cea7f39c2f28440e6d132ec98056b35424f496b6d5ba98b05f65118555e10a
MD5 9efb18426329ef0424b4977ee9be54b9
BLAKE2b-256 5d8938fcd09b8659aec1fdaefe45cc12aa95170c67f38bd05670f6662438eada

See more details on using hashes here.

File details

Details for the file authbox-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: authbox-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 24.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.8.0

File hashes

Hashes for authbox-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7f4bece15f09e46e725862981fe7a14c2d31bbfa17690eee04d19a162c59f9b4
MD5 3c14269d802bce2b4c1147551e32655f
BLAKE2b-256 297226853ea106a65f8b2e10b39444bffa872a04b770f4aaafccf0def12e67f2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page