for server in serverList: # Required parameters try: ldapConnection = server['connection'] ldapVersion = server['version'] ldapUseTls = server['tls'] ldapBindDn = server['binddn'] ldapBindPassword = server['bindpassword'] groupList = server['groups'] if 'memberAttr' in config: _memberAttr = config['memberAttr'] except Exception as error: print("[LdapUserList::Run] Module LastLogin misses some parameters: " + str(error.message)) exit() # # LDAP connection # con = ldap.initialize(ldapConnection); con.set_option(ldap.OPT_PROTOCOL_VERSION, ldapVersion) con.set_option(ldap.OPT_DEREF, ldap.DEREF_ALWAYS) if ldapUseTls: con.set_option(ldap.OPT_X_TLS_DEMAND, True) try: con.simple_bind_s(ldapBindDn, ldapBindPassword) except Exception as error: print("[LdapUserList::Run] LDAP connection failed: " + str(error.message)) exit() if (verbose): print "[LdapUserList::Run] LDAP connected to " + ldapConnection + " as: " + con.whoami_s() # # Query for entries # userDict = {} # <========== this for group in groupList: if(verbose): print("[LdapUserList::Run] Searching group " + group) result = con.search_s(group, ldap.SCOPE_SUBTREE, "objectClass=*", [_memberAttr]) for g in result: groupname = g[0] # Check if we have some members if not _memberAttr in g[1]: continue userlist = g[1][_memberAttr] userDict[groupname] = userlist # # Print entries # _result.append("groupdn;userdn") for (k,v) in userDict.iteritems(): # <========= this for user in v: _result.append(k + ";" + user)