def login_ldap(username, password): ldapconf = get_ldapconf() if ldapconf == None: return False flag = False try: # Server = "ldap://10.2.145.102:389" # baseDN = "dc=autonavi,dc=com" # searchScope = ldap.SCOPE_SUBTREE # searchFilter = "sAMAccountName=" + username # username = '******' + username Server = ldapconf.server baseDN = ldapconf.base_dn searchScope = ldap.SCOPE_SUBTREE searchFilter = ldapconf.loginname + "=" + username username = ldapconf.domainname + "\\" + username retrieveAttributes = None conn = ldap.initialize(Server) conn.set_option(ldap.OPT_REFERRALS, 0) conn.protocol_version = ldap.VERSION3 conn.simple_bind_s(username, password) print "connect ldap success" flag = True except ldap.LDAPError, e: flag = False
def add_validate_ldap(validateusername): ldapconf = get_ldapconf() if ldapconf == None: return False username = ldapconf.username password = ldapconf.password flag = False try: Server = ldapconf.server baseDN = ldapconf.base_dn searchScope = ldap.SCOPE_SUBTREE searchFilter = ldapconf.loginname + "=" + validateusername username = ldapconf.domainname + "\\" + username retrieveAttributes = None conn = ldap.initialize(Server) conn.set_option(ldap.OPT_REFERRALS, 0) conn.protocol_version = ldap.VERSION3 conn.simple_bind_s(username, password) print "connect ldap success" ldap_result_id = conn.search(baseDN, searchScope, searchFilter, retrieveAttributes) result_set = [] while 1: result_type, result_data = conn.result(ldap_result_id, 0) if(result_data == []): break else: if result_type == ldap.RES_SEARCH_ENTRY: result_set.append(result_data) Name,Attrs = result_data[0] if hasattr(Attrs, 'has_key') and Attrs.has_key('mail'): print Attrs['mail'][0] if hasattr(Attrs, 'has_key') and Attrs.has_key('sAMAccountName'): print Attrs['sAMAccountName'][0] flag = True except ldap.LDAPError, e: flag = False
def searchback_ldap(request): retdir = {} ldapconf = get_ldapconf() username = ldapconf.domainname +'\\' + ldapconf.username password = ldapconf.password baseDN = 'OU=高德集团,DC=autonavi,DC=com' if 'keyword_name' in request.POST and request.POST['keyword_name']: keyword_name = request.POST.get('keyword_name') keyword_name = keyword_name.strip().encode('utf-8') # searchFilter = '(|(CN=%s*)(mail=%s*))' % (keyword,keyword) # searchFilter = "mail=*" + keyword + "*" searchFilter = "name=*" + keyword_name + "*" retdir['keyword_name'] = keyword_name elif 'keyword_mail' in request.POST and request.POST['keyword_mail']: keyword_mail = request.POST.get('keyword_mail') keyword_mail = keyword_mail.strip().encode('utf-8') searchFilter = "mail=*" + keyword_mail + "*" retdir['keyword_mail'] = keyword_mail else: searchFilter = "sAMAccountName=*" # searchFilter = "sAMAccountName=''" retrieveAttributes = ['cn', 'title', 'telephoneNumber', 'physicalDeliveryOfficeName', 'department', 'mail', 'company', 'mailNickname'] # 连接ldap服务器 conn = ldap.initialize(ldapconf.server) conn.set_option(ldap.OPT_REFERRALS, 0) conn.protocol_version = ldap.VERSION3 conn.simple_bind_s(username, password) try: result_list = conn.search_st(baseDN, ldap.SCOPE_SUBTREE, searchFilter, retrieveAttributes, timeout=10) user_list = [] for item in result_list: temp = {} if item[1].has_key('cn'): temp['cn'] = item[1]['cn'][0] else: temp['cn'] = "" if item[1].has_key('title'): temp['title'] = item[1]['title'][0] else: temp['title'] = "" if item[1].has_key('telephoneNumber'): temp['telephoneNumber'] = item[1]['telephoneNumber'][0] else: temp['telephoneNumber'] = "" if item[1].has_key('physicalDeliveryOfficeName'): temp['physicalDeliveryOfficeName'] = item[1]['physicalDeliveryOfficeName'][0] else: temp['physicalDeliveryOfficeName'] = "" if item[1].has_key('department'): temp['department'] = item[1]['department'][0] else: temp['department'] = "" if item[1].has_key('mail'): temp['mail'] = item[1]['mail'][0] else: temp['mail'] = "" if item[1].has_key('company'): temp['company'] = item[1]['company'][0] else: temp['company'] = "" if item[1].has_key('mailNickname'): temp['mailNickname'] = item[1]['mailNickname'][0] else: temp['mailNickname'] = "" user_list.append(temp) except BaseException: return HttpResponseBadRequest("搜索失败或超时请检查搜索条件后重新搜索") if 'numPerPage' in request.POST and request.POST['numPerPage']: numPerPage = request.POST['numPerPage'] else: numPerPage = 10 paginator = Paginator(user_list, numPerPage) page = request.POST.get('pageNum', 1) try: if int(page) > paginator.num_pages: page = str(paginator.num_pages) user_list = paginator.page(page) except (EmptyPage, InvalidPage): user_list = paginator.page(paginator.num_pages) tmpdir = {'user_list':user_list, 'currentPage':page, 'numPerPage':numPerPage} retdir.update(tmpdir) return render_to_response('account/searchback_ldap.html', retdir)