new: api plugin will report pwned access points

This commit is contained in:
Simone Margaritelli
2019-10-07 13:06:29 +02:00
parent da52bcd705
commit d6efc0b70d
3 changed files with 154 additions and 40 deletions

View File

@ -5,6 +5,7 @@ import os
import time
import subprocess
import yaml
import json
# https://stackoverflow.com/questions/823196/yaml-merge-in-python
@ -82,12 +83,24 @@ def blink(times=1, delay=0.3):
class StatusFile(object):
def __init__(self, path):
def __init__(self, path, data_format='raw'):
self._path = path
self._updated = None
self._format = data_format
self.data = None
if os.path.exists(path):
self._updated = datetime.fromtimestamp(os.path.getmtime(path))
with open(path) as fp:
if data_format == 'json':
self.data = json.load(fp)
else:
self.data = fp.read()
def data_field_or(self, name, default=""):
if self.data is not None and name in self.data:
return self.data[name]
return default
def newer_then_minutes(self, minutes):
return self._updated is not None and ((datetime.now() - self._updated).seconds / 60) < minutes
@ -97,5 +110,13 @@ class StatusFile(object):
def update(self, data=None):
self._updated = datetime.now()
self.data = data
with open(self._path, 'w') as fp:
fp.write(str(self._updated) if data is None else data)
if data is None:
fp.write(str(self._updated))
elif self._format == 'json':
json.dump(self.data, fp)
else:
fp.write(data)