[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'
|
base_dn = 'ou=data,dc=crans,dc=org'
|
||||||
log_dn = "cn=log"
|
log_dn = "cn=log"
|
||||||
|
|
||||||
|
# Champs à ignorer dans l'historique
|
||||||
|
HIST_IGNORE_FIELDS = ["modifiersName", "entryCSN", "modifyTimestamp"]
|
||||||
|
|
||||||
def is_actif(sanction):
|
def is_actif(sanction):
|
||||||
"""Retourne True ou False suivant si la sanction fournie (chaîne
|
"""Retourne True ou False suivant si la sanction fournie (chaîne
|
||||||
venant de blacklist) est active ou non.
|
venant de blacklist) est active ou non.
|
||||||
|
@ -417,16 +420,35 @@ class CransLdapObject(object):
|
||||||
|
|
||||||
return histo
|
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 = 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:
|
for cn, attrs in res:
|
||||||
date = crans_utils.format_ldap_time(attrs['reqEnd'][0])
|
date = crans_utils.format_ldap_time(attrs['reqEnd'][0])
|
||||||
if attrs['reqType'][0] == 'delete':
|
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':
|
elif attrs['reqType'][0] == 'modify':
|
||||||
print "%s : %s modified %s (%s)" % (date, attrs['reqAuthzID'][0], attrs['reqDN'][0],
|
fields = {}
|
||||||
"/".join(attrs['reqMod']))
|
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):
|
def blacklist_actif(self):
|
||||||
u"""Vérifie si l'instance courante est blacklistée.
|
u"""Vérifie si l'instance courante est blacklistée.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue