

def do_GET(self):
    ctx = dict()
    self.ctx = ctx
    ctx['action'] = 'initializing basic auth handler'
    ctx['user'] = '-'
    if AuthHandler.do_GET(self):
        return
    ctx['action'] = 'empty password check'
    if (not ctx['pass']):
        self.auth_failed(ctx, 'attempt to use empty password')
        return
    try:
        ctx['action'] = 'initializing LDAP connection'
        ldap_obj = ldap.initialize(ctx['url'])
        ctx['action'] = 'binding as search user'
        ldap_obj.bind_s(ctx['binddn'], ctx['bindpasswd'], ldap.AUTH_SIMPLE)
        ctx['action'] = 'preparing search filter'
        searchfilter = (ctx['template'] % {
            'username': ctx['user'],
        })
        self.log_message((('searching on server "%s" with base dn ' + '"%s" with filter "%s"') % (ctx['url'], ctx['basedn'], searchfilter)))
        ctx['action'] = 'running search query'
        results = ldap_obj.search_s(ctx['basedn'], ldap.SCOPE_SUBTREE, searchfilter, ['objectclass'], 1)
        ctx['action'] = 'verifying search query results'
        if (len(results) < 1):
            self.auth_failed(ctx, 'no objects found')
            return
        ctx['action'] = 'binding as an existing user'
        ldap_dn = results[0][0]
        ldap_obj['action'] += (' "%s"' % ldap_dn)
        ldap_obj.bind_s(ldap_dn, ctx['pass'], ldap.AUTH_SIMPLE)
        self.log_message(('Auth OK for user "%s"' % ctx['user']))
        self.send_response(200)
        self.end_headers()
    except:
        self.auth_failed(ctx)

dataset/ETHPy150Open nginxinc/nginx-ldap-auth/nginx-ldap-auth-daemon.py LDAPAuthHandler.do_GET/VarMisuse@262/441 `ctx`->`ldap_obj`