1
2
3
4
5
6
7
8
9 """
10 Agent zephir pour la surveillance d'expiration des certificats
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
24 self.warn_delay = 45
25
26 self.err_delay = 30
27 self.status = status.OK()
28 self.table = TableData([
29 ('subj', "Sujet du certificat", {'align':'left'}, None),
30 ('expire', "Date d'expiration", {'align':'left'}, None),
31 ('delay', "Temps restant", {'align':'left'}, None),
32 ])
33 title = HTMLData("<h3>Surveillance des certificats</h3>")
34 self.data = [title, self.table]
35
43
45 log.msg("It doesn't work")
46
52
54
55 data = {}
56 subj = ""
57 for line in response.strip().split('\n'):
58 if line.count('subject:') == 1:
59 subj = line.split('subject:')[1].strip()
60 if line.count('not after') == 1:
61 expires = line.split('not after')[1].strip().split(',')[0].strip()
62 expires = " ".join(expires.split()[:4])
63 data[subj] = expires
64 res = []
65 warn = self.warn_delay
66 err = self.err_delay
67 status_err = False
68 status_warn = False
69 for sub, expires in data.items():
70
71 expdate = util.parse_date(expires)
72 delta = expdate - datetime.datetime.utcnow()
73 delay = "%d jours" % delta.days
74 if delta.days < err:
75 err = delta.days
76 status_err = True
77 elif delta.days < warn:
78 warn = delta.days
79 status_warn = True
80 res.append({'subj':sub,'expire':str(util.parse_date(expires)),'delay':delay })
81
82 if status_err:
83 self.status = status.Error("Fin de validité dans moins de %d jours" % err)
84 elif status_warn:
85 self.status = status.Warn("Fin de validité dans moins de %d jours" % warn)
86 return res
87
89 msg = u"erreur de lecture de la date d'expiration"
90 self.status = status.Warn(msg)
91 return None
92
94 Agent.write_data(self)
95 if self.last_measure is not None:
96 self.table.table_data = self.last_measure.value
97
100