Example #1
0
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
Example #2
0
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
Example #3
0
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)