X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fiotlab%2FLDAPapi.py;h=abf91d993beea1713ce16ada8bb4f8dff082fc55;hb=82d0355774b73966cbe0c838c611808dfd2f1c7a;hp=217e2001cce5df01166b4df272b65700f9e9d9d9;hpb=432cca980c7eed80284776f05566cf628088f7aa;p=sfa.git diff --git a/sfa/iotlab/LDAPapi.py b/sfa/iotlab/LDAPapi.py index 217e2001..abf91d99 100644 --- a/sfa/iotlab/LDAPapi.py +++ b/sfa/iotlab/LDAPapi.py @@ -108,11 +108,12 @@ class ldap_co: #rights to add objects self.ldapserv.simple_bind_s(self.ldapAdminDN, self.ldapAdminPassword) + return {'bool': True} except ldap.LDAPError, error: return {'bool': False, 'message': error} - return {'bool': True} + def close(self): """Close the LDAP connection. @@ -589,51 +590,31 @@ class LDAPapi: .. seealso:: make_ldap_filters_from_record """ - logger.debug(" \r\n \t LDAP LdapAddUser \r\n\r\n ================\r\n ") - user_ldap_attrs = self.make_ldap_attributes_from_record(record) - logger.debug("JORDAN LdapAddUser (ctd) user_ldap_attrs=%r" % user_ldap_attrs) - - #Check if user already in LDAP wih email, first name and last name - filter_by = self.make_ldap_filters_from_record(user_ldap_attrs) - logger.debug("JORDAN LdapAddUser (ctd) filter_by = %r" % filter_by) - user_exist = self.LdapSearch(filter_by) - logger.debug("JORDAN LdapAddUser (ctd) user_exist = %r" % user_exist) - if user_exist: - logger.warning(" \r\n \t LDAP LdapAddUser user %s %s \ - already exists" % (user_ldap_attrs['sn'], - user_ldap_attrs['mail'])) - return {'bool': False} - - #Bind to the server - result = self.conn.connect() - logger.debug("JORDAN LdapAddUser (ctd) result = %r" % result) - - if(result['bool']): - - # A dict to help build the "body" of the object - logger.debug(" \r\n \t LDAP LdapAddUser attrs %s " - % user_ldap_attrs) - - # The dn of our new entry/object - dn = 'uid=' + user_ldap_attrs['uid'] + "," + self.baseDN - - try: - ldif = modlist.addModlist(user_ldap_attrs) - logger.debug("LDAPapi.py add attrs %s \r\n ldif %s" - % (user_ldap_attrs, ldif)) - self.conn.ldapserv.add_s(dn, ldif) - - logger.info("Adding user %s login %s in LDAP" - % (user_ldap_attrs['cn'], user_ldap_attrs['uid'])) - except ldap.LDAPError, error: - logger.log_exc("LDAP Add Error %s" % error) - return {'bool': False, 'message': error} - - self.conn.close() - return {'bool': True, 'uid': user_ldap_attrs['uid']} + filter_by = self.make_ldap_filters_from_record({'email' : record['email']}) + user = self.LdapSearch(filter_by) + if user: + logger.debug("LDAPapi.py user ldap exist \t%s" % user) + # user = [('uid=saint,ou=People,dc=senslab,dc=info', {'uid': ['saint'], 'givenName': ['Fred'], ...})] + return {'bool': True, 'uid': user[0][1]['uid'][0]} else: - return result - + user_ldap_attrs = self.make_ldap_attributes_from_record(record) + result = self.conn.connect() + if(result['bool']): + logger.debug("LDAPapi.py user ldap doesn't exist \t%s" % user_ldap_attrs) + # The dn of our new entry/object + dn = 'uid=' + user_ldap_attrs['uid'] + "," + self.baseDN + try: + ldif = modlist.addModlist(user_ldap_attrs) + self.conn.ldapserv.add_s(dn, ldif) + self.conn.close() + return {'bool': True, 'uid': user_ldap_attrs['uid']} + except ldap.LDAPError, error: + logger.log_exc("LDAP Add Error %s" % error) + return {'bool': False, 'message': error} + + + + def LdapDelete(self, person_dn): """Deletes a person in LDAP. Uses the dn of the user. @@ -877,9 +858,9 @@ class LDAPapi: logger.log_exc("LDAP LdapSearch Error %s" % error) return [] - else: - logger.error("LDAP.PY \t Connection Failed") - return + else: + logger.error("LDAP.PY \t Connection Failed") + return [] def _process_ldap_info_for_all_users(self, result_data): """Process the data of all enabled users in LDAP.