-import socket, os, stat
+import socket, os, stat, struct, pwd, errno
from statemachine import StateMachine
from libtuer import logger
SO_PEERCRED = 17 # DO - NOT - TOUCH
class TySocket():
CMDs = {
b'buzz': StateMachine.CMD_BUZZ,
- b'open': StateMachine.CMD_OPEN,
+ b'unlock': StateMachine.CMD_UNLOCK,
}
def __init__(self, sm):
self._sock.listen(1)
def _answer(self, conn):
- def answer(msg):
+ def answer(msg, lastMsg = True):
# this is called in another thread, so it should be quick and not touch the TySocket
waynesend(conn, msg)
- conn.close()
+ if lastMsg:
+ conn.close()
return answer
def accept(self):
# _answer will be called, and it will close the connection
else:
waynesend(conn, 'Command not found')
- conn.close()
except KeyboardInterrupt:
raise # forward Ctrl-C to the outside
+ except socket.timeout:
+ # it's okay
+ logger.info("TySocket: Connection timed out")
except Exception as e:
- logger.error("TySocket: Something went wrong: %s" % str(e))
-
- def stop(self):
- pass
+ logger.critical("TySocket: Something went wrong: %s" % str(e))
+ conn.close()