From bea2d14d1a0f5f1b18c0dab0b204aa2d9b4b1d78 Mon Sep 17 00:00:00 2001 From: Bernhard Tittelbach Date: Thu, 17 Sep 2009 23:44:48 +0000 Subject: [PATCH] url error check and xmpp error handling --- update-web-status.py | 21 +++++++++++++++------ update-xmpp-status.py | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/update-web-status.py b/update-web-status.py index 11a6d5e..19bda77 100755 --- a/update-web-status.py +++ b/update-web-status.py @@ -27,9 +27,10 @@ class UWSConfig: def __init__(self,configfile=None): self.configfile=configfile self.config_parser=ConfigParser.ConfigParser() - self.config_parser.add_section('url') - self.config_parser.set('url','open','https://www.realraum.at/cgi/status.cgi?pass=jako16&set=%3Chtml%3E%3Cbody%20bgcolor=%22lime%22%3E%3Ccenter%3E%3Cb%3ET%26uuml%3Br%20ist%20Offen%3C/b%3E%3C/center%3E%3C/body%3E%3C/html%3E') - self.config_parser.set('url','closed','https://www.realraum.at/cgi/status.cgi?pass=jako16&set=%3Chtml%3E%3Cbody%20bgcolor=%22red%22%3E%3Cb%3E%3Ccenter%3ET%26uuml%3Br%20ist%20Geschlossen%3C/center%3E%3C/b%3E%3C/body%3E%3C/html%3E') + self.config_parser.add_section('web') + self.config_parser.set('web','cgiuri','https://www.realraum.at/cgi/status.cgi?pass=jako16&set=') + self.config_parser.set('web','htmlopen','
Tür ist Offen
') + self.config_parser.set('web','htmlclosed','
Tür ist Geschlossen
') self.config_mtime=0 if not self.configfile is None: try: @@ -136,16 +137,23 @@ def popenTimeout2(cmd, pinput, returncode_ok=[0], ptimeout=21): def touchURL(url): try: f = urllib.urlopen(url) - f.read() + rq_response = f.read() + logging.debug("touchURL: Response "+rq_response) f.close() + return rq_response except Exception, e: logging.error("touchURL: "+str(e)) +def setRealraumHtmlStatus(htmlcode): + htmlcode_escaped = re.sub(r'[^\x30-\x39\x41-\x7E]',lambda m:"%%%x"%ord(m.group(0)),htmlcode) + if touchURL(uwscfg.web_cgiuri + htmlcode_escaped) != htmlcode: + logging.error("setRealraumHtmlStatus: Error setting Status, Output does not match Input") + def displayOpen(): - touchURL(uwscfg.url_open) + setRealraumHtmlStatus(uwscfg.web_htmlopen) def displayClosed(): - touchURL(uwscfg.url_closed) + setRealraumHtmlStatus(uwscfg.web_htmlclosed) def exitHandler(signum, frame): logging.info("Update-Web-Status stopping") @@ -176,6 +184,7 @@ if len(sys.argv) > 2: else: uwscfg = UWSConfig() +socket.setdefaulttimeout(10.0) #affects all new Socket Connections (urllib as well) sockhandle = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) RE_STATUS = re.compile(r'Status: (\w+), idle') RE_REQUEST = re.compile(r'Request: (\w+) (?:Card )?(.+)') diff --git a/update-xmpp-status.py b/update-xmpp-status.py index 116db82..18c0c76 100644 --- a/update-xmpp-status.py +++ b/update-xmpp-status.py @@ -254,7 +254,7 @@ while True: if not m is None: errorstr = m.group(1) if "too long!" in errorstr: - distributeXmppMsg(uwscfg.xmpp_recipients_debug, "Door Error: "+errorstr, high_priority=True) + distributeXmppMsg("Door Error: "+errorstr, high_priority=True) else: sendXmppMsg(uwscfg.xmpp_recipients_debug, "D: Error: "+errorstr) except Exception, ex: -- 1.7.10.4