예제 #1
0
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
예제 #2
0
 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))
예제 #3
0
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
예제 #4
0
 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