1
2
3
4
5
6
7
8
9 """
10 Agent zephir pour la surveillance de la crl agriates
11 """
12
13 from zephir.monitor.agentmanager.agent import Agent
14 from zephir.monitor.agentmanager.data import HTMLData, TableData
15 from zephir.monitor.agentmanager import status, util
16 from twisted.internet.utils import getProcessOutput
17 import datetime
18 from creole import parsedico
19
22 Agent.__init__(self, name, **params)
23 self.status = status.OK()
24 self.table = TableData([
25 ('expire', "Date d'expiration", {'align':'left'}, None),
26 ])
27 title = HTMLData("<h3>Surveillance de la CRL</h3>")
28 self.data = [title, self.table]
29
41
43
44 expire = ""
45 for line in response.split('\n'):
46 line = line[3:].strip()
47 if line.startswith('next'):
48 expire = line.split()[1:5]
49 expire = " ".join(expire)
50
51 if expire == "":
52 self.status = status.Warn("date d'invalidation non trouvée")
53 return [{'expire':"ipsec listcrls ne renvoie pas de date d'invalidation de la crl" }]
54 expdate = util.parse_date(expire)
55
56 warn_delta = datetime.timedelta(seconds=60*20)
57 warndate = expdate - warn_delta
58 date = datetime.datetime.utcnow()
59 if date > expdate:
60 msg = "expiration de la CRL"
61 self.status = status.Error(msg)
62 else:
63 delta = expdate - date
64 minutes = (delta.days*3600*24 + delta.seconds) / 60
65 if date > warndate:
66 self.status=status.Warn("Expiration dans %s minutes" % minutes)
67 return [{'expire': expdate.strftime('%d %b %Y %H:%M:%S')}]
68
70 msg = u"erreur de lecture de la date d'expiration"
71 self.status = status.Warn(msg)
72 return None
73
75 Agent.write_data(self)
76 if self.last_measure is not None:
77 self.table.table_data = self.last_measure.value
78
81