gv doku protokoll
[svn42.git] / update-web-status.py
index a2e4beb..e1e2412 100755 (executable)
@@ -194,10 +194,19 @@ if len(sys.argv) > 1:
 else:
   uwscfg = UWSConfig()
 
+if len(sys.argv) > 2:
+  if sys.argv[2] == "open":
+    displayOpen()
+  elif sys.argv[2] == "closed":
+    displayClosed()
+  elif sys.argv[2] == "panic":
+    displayPanic()
+  print "Satus submitted to Web, now exiting..."
+  sys.exit(0)
+
 #socket.setdefaulttimeout(10.0) #affects all new Socket Connections (urllib as well)
-#RE_STATUS = re.compile(r'Status: (\w+), idle')
-RE_PRESENCE = re.compile(r'Presence: (yes|no)')
-RE_BUTTON = re.compile(r'button\d?')
+RE_PRESENCE = re.compile(r'Presence: (yes|no)(?:, (opened|closed), (.+))?')
+RE_BUTTON = re.compile(r'PanicButton|button\d?')
 while True:
   try:
     if not os.path.exists(uwscfg.tracker_socket):
@@ -209,6 +218,8 @@ while True:
     conn = os.fdopen(sockhandle.fileno())
     #sockhandle.send("listen\n")
     #sockhandle.send("status\n")
+    last_status=None
+    unixts_panic_button=None
     while True:
       line = conn.readline()
       logging.debug("Got Line: " + line)
@@ -221,16 +232,28 @@ while True:
       m = RE_PRESENCE.match(line)
       if not m is None:
         status = m.group(1)
-        if status == "yes":
+        last_status=(status == "yes")
+        unixts_panic_button=None
+        if last_status:
           displayOpen()
         else:
           displayClosed()
         continue
+        
       m = RE_BUTTON.match(line)
       if not m is None:
         displayPanic()
+        unixts_panic_button=time.time()
+        continue
+        
+      if not last_status is None and not unixts_panic_button is None and time.time() - unixts_panic_button > 3600:
+        unixts_panic_button=None
+        if last_status:
+          displayOpen()
+        else:
+          displayClosed()
         continue
-          
+        
   except Exception, ex:
     logging.error("main: "+str(ex)) 
     try: