Basic web interface for user administration of the electronic door lock
Go to file
2022-09-16 21:56:20 +02:00
bin changed encoding 2022-09-16 21:56:20 +02:00
imaginaerraum_door_admin require APPLICATION_SETTINGS to be set 2022-09-16 21:55:48 +02:00
tests updated Flask-Security-Too to most recent version 2022-09-16 21:53:10 +02:00
LICENSE configured repo to work with pip setup 2021-03-15 22:51:51 +01:00
MANIFEST.in added missing * 2021-04-17 14:50:07 +02:00
pyproject.toml configured repo to work with pip setup 2021-03-15 22:51:51 +01:00
README.md fixed typos 2022-09-12 22:24:21 +02:00
setup.cfg moved back to setup.py because buildroot does not seem to work with pure setup.cfg 2022-09-12 23:30:54 +02:00
setup.py updated Flask-Security-Too to most recent version 2022-09-16 21:53:10 +02:00

Flask-based web interface for user token administration of our hackerspace's door lock.

Installation

Clone the repo

git clone <path_to_repo>

Install using pip

pip install .

Running the app

export FLASK_APP=imaginaerraum_door_admin
flask run

Configuration

You can set custom configuration options by defining an environment variable APPLICATION_SETTINGS pointing to a file with configuration options.

For example, consider the following configuration file app_config.py:

# door app configuration
SECRET_KEY = 'mysupersecretkey'
SECURITY_PASSWORD_SALT = 'saltycaramel'

TESTING = False
DEBUG = False

TOKEN_FILE = 'door_tokens.txt'
ADMIN_FILE = 'admins.txt'

NFC_SOCKET = "/tmp/nfc.sock"
NFC_LOG = "nfc.log"

To instruct the flask app to use this configuration, use the following commands:

export APPLICATION_SETTINGS=app_config.py
flask run

Below, you can find a list of configuration options.

Flask app configuration

You can override common Flask configuration variables. In particular, you definitely should set custom values for the SECRET_KEY and SECURITY_PASSWORD_SALT.

Token file

The token file is an ASCII file which lists the IDs of RFID tokens that can be used to unlock the door. You can specify the path to the token file using the TOKEN_FILE variable in the configuration file. Here's an example of a token file (lines starting with # represent inactive tokens):

# token | name | organization | email | valid_thru
#042979fa186280||||
04487cfa176280|Frodo|Hobbits|frodo@shire.me|
043a85fa1a6280|Gandalf|Wizards|gandalf@middleearth.me|
#04206e2aef6880|Boromir|Humans|boromir@gondor.me|

Admin file

ADMIN_FILE -> file to create new super admins

User database

NFC files

NFC_SOCKET = "/tmp/nfc.sock" -> unix socket to interact with the door NFC_LOG = "nfc.log" -> log file of door events

Development

cd tests
export APPLICATION_SETTINGS=/home/simon/imaginaerraum/door-lock/webinterface/tests/debug_app_config.py
pytest --cov=../imaginaerraum_door_admin --cov-report=html --cov-report=term