[lc_ldap] On n'affiche que les données pertinentes de l'historique
This commit is contained in:
parent
e239973d60
commit
db0e6c6092
1 changed files with 27 additions and 5 deletions
32
lc_ldap.py
32
lc_ldap.py
|
@ -44,6 +44,9 @@ uri = 'ldapi:///' #'ldap://ldap.adm.crans.org/'
|
|||
base_dn = 'ou=data,dc=crans,dc=org'
|
||||
log_dn = "cn=log"
|
||||
|
||||
# Champs à ignorer dans l'historique
|
||||
HIST_IGNORE_FIELDS = ["modifiersName", "entryCSN", "modifyTimestamp"]
|
||||
|
||||
def is_actif(sanction):
|
||||
"""Retourne True ou False suivant si la sanction fournie (chaîne
|
||||
venant de blacklist) est active ou non.
|
||||
|
@ -417,16 +420,35 @@ class CransLdapObject(object):
|
|||
|
||||
return histo
|
||||
|
||||
def search_historique(self):
|
||||
def search_historique(self, ign_fields=HIST_IGNORE_FIELDS):
|
||||
u"""Récupère l'historique
|
||||
l'argument optionnel ign_fields contient la liste des champs
|
||||
à ignorer, HIST_IGNORE_FIELDS par défaut
|
||||
Renvoie une liste de lignes de texte."""
|
||||
res = self.conn.search_s(log_dn, 2, 'reqDN=%s' % self.dn)
|
||||
res.sort((lambda a, b: cmp(a[1]['reqEnd'][0], b[1]['reqEnd'][0])))
|
||||
res.sort(key=(lambda a: a[1]['reqEnd'][0]))
|
||||
out = []
|
||||
for cn, attrs in res:
|
||||
date = crans_utils.format_ldap_time(attrs['reqEnd'][0])
|
||||
if attrs['reqType'][0] == 'delete':
|
||||
print "%s : %s deleted %s" % (date, attrs['reqAuthzID'][0], attrs['reqDN'][0])
|
||||
out.append("%s : [%s] Suppression" % (date, attrs['reqAuthzID'][0]))
|
||||
elif attrs['reqType'][0] == 'modify':
|
||||
print "%s : %s modified %s (%s)" % (date, attrs['reqAuthzID'][0], attrs['reqDN'][0],
|
||||
"/".join(attrs['reqMod']))
|
||||
fields = {}
|
||||
for mod in attrs['reqMod']:
|
||||
field, change = mod.split(':', 1)
|
||||
if field not in ign_fields:
|
||||
if field in fields:
|
||||
fields[field].append(change)
|
||||
else:
|
||||
fields[field] = [change]
|
||||
mod_list = []
|
||||
for field in fields:
|
||||
mods = fields[field]
|
||||
mod_list.append("%s %s" %(field, ", ".join(mods)))
|
||||
|
||||
if mod_list != []:
|
||||
out.append("%s : [%s] %s" % (date, attrs['reqAuthzID'][0], " ; ".join(mod_list)))
|
||||
return out
|
||||
|
||||
def blacklist_actif(self):
|
||||
u"""Vérifie si l'instance courante est blacklistée.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue