projects
/
saartuer.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
status report command introduced
[saartuer.git]
/
tysock.py
diff --git
a/tysock.py
b/tysock.py
index 82d26a8075ab097d90fc39f177699722eddbea21..b987567168bd9ca93a23e3ff0252b76a3f0d9c2d 100644
(file)
--- a/
tysock.py
+++ b/
tysock.py
@@
-1,4
+1,4
@@
-import socket, os, stat, struct, pwd
+import socket, os, stat, struct, pwd
, errno
from statemachine import StateMachine
from libtuer import logger
SO_PEERCRED = 17 # DO - NOT - TOUCH
from statemachine import StateMachine
from libtuer import logger
SO_PEERCRED = 17 # DO - NOT - TOUCH
@@
-27,6
+27,10
@@
class TySocket():
CMDs = {
b'buzz': StateMachine.CMD_BUZZ,
b'unlock': StateMachine.CMD_UNLOCK,
CMDs = {
b'buzz': StateMachine.CMD_BUZZ,
b'unlock': StateMachine.CMD_UNLOCK,
+ b'lock': StateMachine.CMD_LOCK,
+ b'fallback_mode_on': StateMachine.CMD_FALLBACK_ON,
+ b'fallback_mode_off': StateMachine.CMD_FALLBACK_OFF,
+ b'status': StateMachine.CMD_STATUS,
}
def __init__(self, sm):
}
def __init__(self, sm):
@@
-44,10
+48,11
@@
class TySocket():
self._sock.listen(1)
def _answer(self, conn):
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)
# 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):
return answer
def accept(self):
@@
-68,10
+73,14
@@
class TySocket():
if data in self.CMDs:
self._sm.callback(self.CMDs[data], self._answer(conn))
# _answer will be called, and it will close the connection
if data in self.CMDs:
self._sm.callback(self.CMDs[data], self._answer(conn))
# _answer will be called, and it will close the connection
+ continue # make sure we break so we don't close it
else:
waynesend(conn, 'Command not found')
else:
waynesend(conn, 'Command not found')
- conn.close()
except KeyboardInterrupt:
raise # forward Ctrl-C to the outside
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.critical("TySocket: Something went wrong: %s" % str(e))
except Exception as e:
logger.critical("TySocket: Something went wrong: %s" % str(e))
+ conn.close()