diff --git a/lc_ldap.py b/lc_ldap.py index 09e61c8..6b133fe 100644 --- a/lc_ldap.py +++ b/lc_ldap.py @@ -48,6 +48,11 @@ uri = 'ldap://ldap.adm.crans.org/' base_dn = 'ou=data,dc=crans,dc=org' log_dn = "cn=log" +# Pour enregistrer dans l'historique, on a besoin de savoir qui exécute le script +# Si le script a été exécuté via un sudo, la variable SUDO_USER (l'utilisateur qui a effectué le sudo) +# est plus pertinente que USER (qui sera root) +current_user = os.getenv("SUDO_USER") or os.getenv("USER") + # Quand on a besoin du fichier de secrets def import_secrets(): if not "/etc/crans/secrets/" in sys.path: @@ -360,6 +365,18 @@ class CransLdapObject(object): return self.ofields + self.xfields + self.ufields + self.mfields fields = property(_get_fields) + def history_add(self, login, chain): + """Ajoute une ligne à l'historique de l'objet. + ###ATTENTION : C'est un kludge pour pouvoir continuer à faire "comme avant", + ### mais on devrait tout recoder pour utiliser l'historique LDAP""" + assert isinstance(login, str) or isinstance(login, unicode) + assert isinstance(chain, unicode) + + new_line = u"%s, %s : %s" % (time.strftime("%d/%m/%Y %H:%M"), login, chain) + # Attention, le __setitem__ est surchargé, mais pas .append sur l'historique + self["historique"] = self["historique"] + [new_line] + + def save(self): """Sauvegarde dans la base les modifications apportées à l'objet. Interne: Vérifie que self._modifs contient des valeurs correctes et