This is the server side piece of the door lock code, and is made of a few pieces. ==================================== An ldap server (openldap) -- configs - setup the openldap configuration sing the configs from the ./openldap director - this includes the special schema in schema/interlockroc.schema Setup load the initial directory with the contents of the ldif/core.ldif file using ldapadd ( ldapadd -D "cn=root,cn=visp" -W -f ldif/core.ldif ) ==================================== A few tools to manage the directory -- addButton.py -- addHacker.py -- delButton.py -- delHacker.py -- disableButton.py -- enableButton.py -- linkButton.py -- listButtons.p ==================================== A python server to answer queries -- lockServer.py Some quick notes: To stay synchronized we are storing the button type in LDAP as: 8 bit family code ( for instance ) 48 bit serial number 8 bit CRC ID --48-bit-id- CB 01 000012FDA5B3 6B Run examples: Button: ./addButton.py --button 01000012FDA5B36B ./delButton.py --button 01000012FDA5B36B ./enableButton.py --button 01000012FDA5B36B ./disableButton.py --button 01000012FDA5B36B Hackers: ./addHacker.py --uid pee2 --name "paul erkkila2" --address "address 2" --alias "alias 2" --econtact "econtact 2" --status "lost in space" --level "4" ./delHacker.py --uid pee2 Link a button to a user: ./linkButton.py --button 01000012FDA5B36B --uid pee List the buttons out: ./listButtons.py =========================================================== Arduino code that interfaces with this can be found here: https://github.com/pee/Interlock-Doorduino ============================================================= TODO: ============================================================= Input validation is rudimentary at best If you put spaces in some string arguments, ldap will get confused think it's not ascii, and base64 encode it for you! Link user->button