Project:Tool Access Control/ACNet
From London Hackspace Wiki
Summary
This page aims to scope out the different projects that work together as part of the Access Control Network. The main components are:
- ACNode - The clients that sit on the tool that is being controlled and manage physical access by reading the rfid card.
- ACServer - The server stores the authentication information and pulls membership information from Turing over JSON and stores is at a SQLite DB
- Membership DB - Secured storage of membership data.
TODO
- Add a secondary acnode and test multiple acnode functionality (Sol)
- Figure out a strategy of syncing the membership database to the local access database, as currently manual (mentar)
- Optimise the sync so it takes less time and add it to the cron job to every few minutes
- Move the acserver to a separate VM running on the server downstairs (tgreer + mentar)
- Add a way of adding cached tool useage using POST /[nodeID]/cachedtooluse/[cardID]/[timeUsed]/[timestamp] (mentar + sol)
- Code a basic web ui for adding tools/maintainers/nodes (mentar)
System diagram
<graphviz border='frame' format='png' >
digraph rfboard{ rankdir=TD; size="10,5!"; subgraph cluster_0 {
node [shape=box,style=filled,color=lightgrey]; label = "ACServer";
local_db [label="local db",shape=box]; httpserver [label="HTTP server",shape=box]; httpserver -> local_db; local_db -> httpserver; }
acnode1 [label="ACNode",shape=box]; acnode2 [label="ACNode",shape=box]; acnode3 [label="ACNode",shape=box]; membershipdb [label="Membership DB",shape=box];
acnode1 -> httpserver; acnode2 -> httpserver; acnode3 -> httpserver;
httpserver -> acnode1; httpserver -> acnode2; httpserver -> acnode3;
membershipdb-> httpserver;
} </graphviz>
AC Node
Currently proposed (and built) by Solexious Link
AC Server
2 versions Python Flask implementation started by ms7821 can be located here further improved by asoko
PHP Code Igniter implementation developed by mentar and Oskar located here
Usage: curl http://[server]:[port]/[node_id]/card/[card_id]
For testing it's installed on babbage port 1234
Membership DB
Running on Turing VM slice (hosted outside the space as it has personal data). Accessed in JSON format.