+ self._loggedIn = False
+ self._username = None
+ if DISPSRV_MIFARE:
+ card_base64 = base64.b64encode(cardId)
+
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
+ sock.connect(DISPENSE_ENDPOINT)
+ logging.debug('connected to dispsrv')
+ sockf = sock.makefile()
+ sockf.write("AUTHIDENT\n"); sockf.flush()
+ rsp = sockf.readline()
+ assert "200" in rsp
+ logging.debug('authenticated')
+ sockf.write("AUTHCARD %s\n" % (card_base64,)); sockf.flush()
+ rsp = sockf.readline()
+ if not "200" in rsp:
+ logging.info("Rejected card base64:%s" % (card_base64,))
+ return False
+ username = rsp.split('=')[1].strip()
+ logging.info("Accepted card base64:%s for %s" % (card_base64,username,))
+
+ # Check for thier username
+ try:
+ # Get info from the system (by username)
+ info = pwd.getpwnam(username)
+ except KeyError:
+ logging.info('getting info for user \'%s\': user not in password file' % (username,))
+ return False
+ else:
+ # Get the users ID
+ self._userid = get_uid(cardId)