⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search_st.c

📁 操做 openldap 的c语言源码
💻 C
字号:
#include "ldap.h"
#include "stdio.h"
int main()
{
  LDAP  *ld;
  LDAPMessage *res,*e;
  int i,version;
  char *server;
  int *port;
  char *dn;
  char *a;
  BerElement *ptr;
  char **vals;
  char **ppValue = NULL;
  char *sdn;
  server="192.168.3.3";
  port = 389;
  struct timeval timeout; 

  if( (ld = ldap_open(server, port ))  == NULL )
   {
        printf("失败");
        exit( 1 );
   }
   version = LDAP_VERSION3;
   ldap_set_option( ld, LDAP_OPT_PROTOCOL_VERSION,&version);
   if(ldap_simple_bind_s(ld,"cn=root,dc=starxing,dc=com","secret")!=LDAP_SUCCESS)
   {
     ldap_perror( ld, "ldap_simple_bind_s" );
     exit( 1 );
   }
   sdn="dc=starxing,dc=com";

    timeout.tv_sec = 0;     
	timeout.tv_usec = 50;

    rc_search = ldap_search_st(ld, sdn, LDAP_SCOPE_SUBTREE, "(objectclass=*)", 
                               NULL, 0, &timeout, &res);

    if (rc_search != LDAP_SUCCESS)   
    {
        printf("ldap_search_st: %s\n", ldap_err2string(rc_search)); 
        ldap_msgfree(res);
        ldap_unbind(ld);
        
        return -1;  
    }

    for (e = ldap_first_entry(ld, res); e!=NULL; 
         e = ldap_next_entry(ld, entry))
    {
        dn = ldap_get_dn(ld, e); 
        printf ("dn: %s \n", dn);  
        ldap_memfree(dn);        
           
        for (attrname = ldap_first_attribute(ld, e, &ptr); attrname != NULL;
             attrname = ldap_next_attribute(ld, e, ptr))
        {
            values = ldap_get_values_len(ld, e, a);
            for (i = 0; vals[i] != NULL; i++)   
            {
                 printf(" %s ",vals[i]);
            }
              
            ldap_value_free_len(vals); 
        }
        
        if (ptr != NULL)
        {
            ber_free(ptr, 0);
        }    
        printf("\n");
    }
 
    ldap_msgfree(res);
    ldap_unbind(ld);

}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -