|
@@ -253,31 +253,40 @@ class BatcaveHttpRequestHandler(BaseHTTPRequestHandler):
|
|
|
self.send_headers('text/json')
|
|
|
self.wfile.write(json.dumps(node))
|
|
|
|
|
|
- def respond_nodestatus(self, rawid):
|
|
|
- """Display node status."""
|
|
|
+ def get_nodestatus(self, rawid):
|
|
|
+ """Determine node's status."""
|
|
|
|
|
|
# search node by the given id
|
|
|
node = self.find_node(rawid)
|
|
|
|
|
|
# handle unknown nodes
|
|
|
if node is None:
|
|
|
- self.send_error(404, 'No node with id \'' + rawid + '\' present.')
|
|
|
- return
|
|
|
-
|
|
|
- self.send_headers('text/plain')
|
|
|
+ return None
|
|
|
|
|
|
+ # check that the last batadv update is noted in the data
|
|
|
updated = node[self.FIELDKEY_UPDATED] if self.FIELDKEY_UPDATED in node else None
|
|
|
if updated is None or not 'batadv' in updated:
|
|
|
- self.wfile.write('unknown')
|
|
|
- return
|
|
|
+ return 'unknown'
|
|
|
|
|
|
+ # make decision based on time of last batadv update
|
|
|
diff = time.time() - updated['batadv']
|
|
|
if diff < 150:
|
|
|
- self.wfile.write('active')
|
|
|
+ return 'active'
|
|
|
elif diff < 300:
|
|
|
- self.wfile.write('stale')
|
|
|
+ return 'stale'
|
|
|
else:
|
|
|
- self.wfile.write('offline')
|
|
|
+ return 'offline'
|
|
|
+
|
|
|
+ def respond_nodestatus(self, rawid):
|
|
|
+ """Display node status."""
|
|
|
+
|
|
|
+ status = self.get_nodestatus(rawid)
|
|
|
+
|
|
|
+ if status is None:
|
|
|
+ self.send_error(404, 'No node with id \'' + rawid + '\' present.')
|
|
|
+
|
|
|
+ self.send_headers('text/plain')
|
|
|
+ self.wfile.write(status)
|
|
|
|
|
|
def respond_nodeidmac2name(self, ids):
|
|
|
storage = self.server.storage
|