[lc_ldap.py] ajout de commentaires, suppression de code mort
This commit is contained in:
parent
76cfc500e9
commit
f786fa148e
1 changed files with 22 additions and 20 deletions
42
lc_ldap.py
42
lc_ldap.py
|
@ -90,6 +90,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
if user and not re.match('[a-z_][a-z0-9_-]*', user):
|
||||
raise ValueError('Invalid user name: %s' % user)
|
||||
|
||||
# Si un username, on récupère le dn associé
|
||||
if user and not dn:
|
||||
self.simple_bind_s(base_dn)
|
||||
res = self.search_s(base_dn, 1, 'uid=%s' % user)
|
||||
|
@ -99,6 +100,9 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
raise ldap.INVALID_CREDENTIALS({'desc': 'Too many matches: uid=%s' % user })
|
||||
else:
|
||||
dn = res[0][0]
|
||||
|
||||
# Si on a un dn, on se connecte avec à la base ldap sinon on s'y
|
||||
# connecte en anonyme
|
||||
if dn:
|
||||
self.conn = self.bind_s(dn, cred)
|
||||
self.dn = dn
|
||||
|
@ -109,16 +113,23 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
self.droits = []
|
||||
|
||||
def search(self, filterstr='(objectClass=*)', mode='ro', dn= base_dn, scope= 2, sizelimit=400):
|
||||
"""La fonction de recherche dans la base ldap qui renvoie un liste de
|
||||
CransLdapObjects. On utilise la feature de sizelimit de python ldap"""
|
||||
res = self.search_ext_s(dn, scope, filterstr, sizelimit=sizelimit)
|
||||
return [ new_cransldapobject(self, r[0], mode=mode) for r in res ]
|
||||
|
||||
def allMachines(self):
|
||||
"""Renvoie la liste de toutes les machines,
|
||||
Conçue pour s'éxécuter le plus rapidement possible"""
|
||||
"""Renvoie la liste de toutes les machines, Conçue pour
|
||||
s'éxécuter le plus rapidement possible. On dumpe malgré tout
|
||||
toute la base, c'est pour pouvoir aussi rajouter à moindre coût
|
||||
les propriétaires."""
|
||||
res = {}
|
||||
machines = []
|
||||
# On récupère tous les objets ldap et on les met dans un dico
|
||||
# (proxying de la base ldap)
|
||||
for dn, attrs in self.search_s(base_dn, scope=2):
|
||||
res[dn] = attrs
|
||||
# On crée la liste des machines
|
||||
for dn, attrs in res.items():
|
||||
if dn.startswith('mid='):
|
||||
m = new_cransldapobject(self, dn, ldif = attrs)
|
||||
|
@ -155,10 +166,13 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
|
||||
else: raise ValueError("Realm inconnu: %s" % realm)
|
||||
|
||||
# On récupère la plage des mids
|
||||
if realm == 'fil':
|
||||
plage = xrange(256, 2047)
|
||||
else:
|
||||
plage = xrange( *(config.mid[realm]))
|
||||
# On récupère le premier id libre dans la plages s'il n'est pas
|
||||
# déjà précisé dans le ldiff
|
||||
mid = uldif.setdefault('mid', [ unicode(self._find_id('mid', plage)) ])
|
||||
uldif['ipHostNumber'] = [ unicode(crans_utils.ip_of_mid(int (mid[0]))) ]
|
||||
return self._create_entity('mid=%s,%s' % (mid[0], parent), uldif)
|
||||
|
@ -180,20 +194,18 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
def _create_entity(self, dn, uldif):
|
||||
'''Crée une nouvelle entité ldap en dn, avec attributs ldif:
|
||||
uniquement en unicode'''
|
||||
# Conversion en cldiff pour vérification des valeurs
|
||||
cldif = ldif_to_cldif(uldif, self)
|
||||
#lock = CransLock(self)
|
||||
# for item in ['aid', 'uid', 'chbre', 'mailAlias', 'canonicalAlias',
|
||||
# 'fid', 'cid', 'mid', 'macAddress', 'host', 'hostAlias' ]:
|
||||
# for val in cldif.get(item, []):
|
||||
# lock.add(item, val)
|
||||
# Conversion en ascii
|
||||
ldif = cldif_to_ldif(cldif)
|
||||
# Création de la requête LDAP
|
||||
modlist = addModlist(ldif)
|
||||
#with lock:
|
||||
# print dn, modlist
|
||||
#
|
||||
# Requête LDAP de création de l'objet
|
||||
self.add_s(dn, modlist)
|
||||
# Renvoi du CransLdapObject
|
||||
return new_cransldapobject(self, dn, mode='w')
|
||||
|
||||
|
||||
def _find_id(self, attr, plage = xrange(1, 32000)):
|
||||
'''Trouve un <attr>id libre dans plage'''
|
||||
res = self.search_s(base_dn, 2, '%s=*' % attr, attrlist = [attr])
|
||||
|
@ -211,12 +223,6 @@ class lc_ldap(ldap.ldapobject.LDAPObject):
|
|||
(attr, plage[0], i))
|
||||
return i
|
||||
|
||||
# def _hist(self, msg):
|
||||
# now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M : ')
|
||||
# return unicode(now) + msg
|
||||
|
||||
# ? def reconnect(self, conn=None):
|
||||
|
||||
|
||||
def new_cransldapobject(conn, dn, mode='ro', ldif = None):
|
||||
"""Crée un objet CransLdap en utilisant la classe correspondant à
|
||||
|
@ -290,10 +296,6 @@ class CransLdapObject(object):
|
|||
if self.mode not in ['w', 'rw']:
|
||||
raise EnvironmentError("Objet en lecture seule, réessayer en lecture/écriture")
|
||||
|
||||
# Vérifications et Historique
|
||||
#histo = self._gen_hist(self._modifs)
|
||||
#self._modifs['historique'] += histo
|
||||
|
||||
# On récupère la liste des modifications
|
||||
modlist = self.get_modlist()
|
||||
self.conn.modify_s(self.dn, modlist)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue