def authorise_ldap(username, password, binddn, server, ent): res = False bind_rdn = "" server = ldap.initialize('ldap://' + server) putenv("TLS_REQCERT=never") ds = ldap.open(server, 636) if (ds): server.protocol_version = ldap.VERSION3 server.set_option(ldap.OPT_REFERRALS, 0) server.simple_bind_s(username, password) assert isinstance(ds, object) r = ldap.bind(ds) if (r): sr = ldap.search(ds, binddn, ent.u) if sr and ldap.count_entries(ds, sr) == 1: info = ldap.get_entries(ds, sr) bind_rdn = info[0]["dn"] ldap.close(ds) if bind_rdn != "": ds = ldap.open("ldap.cs.cf.ac.uk/") #ldap_connect(server, 636) if (ds): ldap.set_option(ds, ldap.OPT_PROTOCOL_VERSION, 3) ldap.set_option(ds, ldap.OPT_REFERRALS, 0) r = ldap.simple_bind(ds) if (ldap.simple_bind(ds, bind_rdn, password)): res = True ldap.close(ds) return res
def getRecords(self,key,value,full=True): try: ldap = settings['ldap'].connect() filterstr = '(&(%s=%s)(objectClass=dominoPerson)(employeeid=*)(!(employeeid=999*))(!(employeeid=0000)))' ldap_results = ldap.search( filterstr % (key,value)) if full: results = [LdapPerson.getGroups(result) for result in ldap_results] return [LdapPerson(result) for result in ldap_results] except KeyError as e: raise RecordLoadError("LDAP data source missing") except Exception as e: print repr(e) raise RecordLoadError("LDAP error: %s" % repr(e))
def information_ldap(user, binddn, server, entry): info = '' server = ldap.initialize('ldap://' + "address") putenv("TLS_REQCERT=never") #ds = ldap_connect(server, 636) ds = ldap.open("ldap.cs.cf.ac.uk/") if (ds): server.protocol_version = 3 server.set_option(ldap.OPT_REFERRALS, 0) r = ldap.bind_s(ds) if r: sr = ldap.search(ds, binddn, ent + "=" + u) if sr and ldap.count_entries(ds, sr) == server: info = ldap.get_entries(ds, sr) ldap.close(ds) return info
def getGroups(self,result): cn, data = result ldap = settings['ldap'].connect() filterstr = '(&(member=%s)(objectClass=dominoGroup)(giddisplay=Public))' % cn data['groups'] = [r for r in ldap.search(filterstr)] return result