Basic web interface for user administration of the electronic door lock
Go to file
2022-02-04 23:08:52 +01:00
bin added default argument for super admin file 2021-08-23 20:30:50 +02:00
imaginaerraum_door_admin fixed incorrect indentation 2022-02-04 22:45:44 +01:00
tests fixed issue with non-typeable key 2022-02-02 21:40:17 +01: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 worked on docs 2022-02-04 23:08:52 +01:00
setup.cfg added tests for opening and closing the door via button 2022-01-25 19:38:19 +01:00
setup.py use setup.cfg based package setup script 2022-01-23 12:33:20 +01:00

Flask-based web interface for user token adminstration 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 list 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