X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=update-xmpp-status.py;h=61615e6ebdf6767252bf1741629b5aa9d7c42985;hb=b654506283c4f625e5ade66e2bc5eb22ad4d1545;hp=f6ee4c051a03dbe2aeb4f7238f4985a2f61e358c;hpb=3c2707ef1227a38c0e80f24cb7cd7690f93975da;p=svn42.git diff --git a/update-xmpp-status.py b/update-xmpp-status.py index f6ee4c0..61615e6 100755 --- a/update-xmpp-status.py +++ b/update-xmpp-status.py @@ -37,8 +37,10 @@ class UWSConfig: self.config_parser.set('msg','status_opened_msg',"RealRaum door now open") self.config_parser.set('msg','status_closed_msg',"RealRaum door now closed") self.config_parser.set('msg','status_error_msg',"ERROR Last Operation took too long !!!") - self.config_parser.set('msg','request_msg'," after ${request} request") - self.config_parser.set('msg','comment_msg'," (${comment})") + self.config_parser.set('msg','request_msg',"\safter ${request} request") + self.config_parser.set('msg','comment_msg',"\s(${comment})") + self.config_parser.set('msg','status_still_opened_msg',"Door remains closed") + self.config_parser.set('msg','status_still_closed_msg',"Door remains open") self.config_parser.add_section('debug') self.config_parser.set('debug','enabled',"False") self.config_mtime=0 @@ -67,6 +69,13 @@ class UWSConfig: self.config_mtime=os.path.getmtime(self.configfile) except (ConfigParser.ParsingError, IOError), pe_ex: logging.error("Error parsing Configfile: "+str(pe_ex)) + self.config_parser.set('msg','comment_msg', self.config_parser.get('msg','comment_msg').replace("\\s"," ")) + self.config_parser.set('msg','request_msg', self.config_parser.get('msg','request_msg').replace("\\s"," ")) + self.config_parser.set('msg','status_error_msg', self.config_parser.get('msg','status_error_msg').replace("\\s"," ")) + self.config_parser.set('msg','status_closed_msg', self.config_parser.get('msg','status_closed_msg').replace("\\s"," ")) + self.config_parser.set('msg','status_opened_msg', self.config_parser.get('msg','status_opened_msg').replace("\\s"," ")) + self.config_parser.set('msg','status_still_closed_msg', self.config_parser.get('msg','status_still_closed_msg').replace("\\s"," ")) + self.config_parser.set('msg','status_still_opened_msg', self.config_parser.get('msg','status_still_opened_msg').replace("\\s"," ")) if self.config_parser.get('debug','enabled') == "True": logger.setLevel(logging.DEBUG) else: @@ -179,31 +188,49 @@ def distributeXmppMsg(msg,high_priority=False,debug=False): else: sendXmppMsg(uwscfg.xmpp_recipients_debug, "D: " + msg) -current_status = (None,None,None) +current_status = (None, None, None) def filterAndFormatMessage(new_status): global current_status - if current_status == new_status or new_status == (current_status[0],None,None): + if new_status in [current_status, (current_status[0], None, None)] : distributeXmppMsg("Status recieved but filtered: (%s,%s,%s)" % new_status ,debug=True) + elif current_status == (None, None, None): + current_status=new_status + distributeXmppMsg("Initial Status: (%s,%s,%s)" % new_status ,debug=True) else: (status,req,req_comment) = new_status high_priority_msg = False - if status == "opened": - status_msg = uwscfg.msg_status_opened_msg - elif status == "closed": - status_msg = uwscfg.msg_status_closed_msg - elif status == "error": + req_msg="" + status_msg="" + comment_msg="" + if status == "error": status_msg = uwscfg.msg_status_error_msg high_priority_msg=True else: - distributeXmppMsg("Unknown Status: (%s,%s,%s)" % new_status ,debug=True) - return + if current_status[0] == status: + if status == "opened": + status_msg = uwscfg.msg_status_still_opened_msg + elif status == "closed": + status_msg = uwscfg.msg_status_still_closed_msg + else: + logging.error("Unknown Status recieved: (%s,%s,%s)" % new_status) + distributeXmppMsg("Unknown Status: (%s,%s,%s)" % new_status ,debug=True) + return + else: + if status == "opened": + status_msg = uwscfg.msg_status_opened_msg + elif status == "closed": + status_msg = uwscfg.msg_status_closed_msg + else: + logging.error("Unknown Status recieved: (%s,%s,%s)" % new_status) + distributeXmppMsg("Unknown Status: (%s,%s,%s)" % new_status ,debug=True) + return if req: req_msg = uwscfg.msg_request_msg.replace("${request}",req) if req_comment: comment_msg = uwscfg.msg_comment_msg.replace("${comment}",req_comment) msg = uwscfg.msg_format.replace("${status_msg}", status_msg).replace("${request_msg}",req_msg).replace("${comment_msg}",comment_msg) distributeXmppMsg(msg, high_priority=high_priority_msg) - current_status=new_status + current_status=new_status def exitHandler(signum, frame): logging.info("Door Status Listener stopping") @@ -249,13 +276,16 @@ while True: conn = os.fdopen(sockhandle.fileno()) sockhandle.send("listen\n") sockhandle.send("status\n") - last_request = (None,None) + last_request = (None, None) while True: line = conn.readline() logging.debug("Got Line: " + line) uwscfg.checkConfigUpdates() + if line == "": + raise Exception("EOF on Socket, daemon seems to have quit") + m = RE_STATUS.match(line) if not m is None: status = m.group(1) @@ -264,7 +294,7 @@ while True: if not m is None: last_request = m.group(1,2) else: - last_request = (None,None) + last_request = (None, None) m = RE_ERROR.match(line) if not m is None: errorstr = m.group(1) @@ -279,5 +309,6 @@ while True: sockhandle.close() except: pass + conn=None + sockhandle=None time.sleep(5) -