ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

GBase8d_C_API_09_添加条目_使用异步函数添加条目的例子

2022-01-24 10:31:51  阅读:133  来源: 互联网

标签:ld 09 rc API values LDAP ldap 添加


GBase8d_C_API_09_添加条目_使用异步函数添加条目的例子

/*

* Copyright(c) 2004-2022, 南大通用数据技术股份有限公司. All rights reserved.

*

* 文件名称: ldap_add_a.c

* 说    明: 调用异步函数ldap_add(),添加一个新条目到LDAP Server。

*

* 当前版本: 5.0

* 作    者: GBase

* 完成日期: 2008.5.22

*/

/* Windows平台和UNIX/Linux平台分开包含头文件 */

#ifdef WIN32

#include "..\..\include\samples.h"

#else

#include "../../include/samples.h"

#endif

/*

* 函数名称: main

* 函数说明: 向LDAP Server异步添加一个条目。

* 输入参数:

*   void

* 返回值  :

*   0:  成功

*   -1: 失败

*/

int main(void)

{

    LDAP *ld;          /* LDAP 会话句柄 */

    

    /* 添加的值 */

    char *objectClass_values[] = {"top", "organization", "organizationalperson",

                                  NULL};

    char *cn_values[] = {"John Smith","Mary Smith", NULL};

    char *telephoneNumber_values[] = {"022-83711260", NULL};

    char *postalCode_values[] = {"300071", NULL};

    char *o_values[] = {"ITEC", NULL};   

    char *sn_values[] = {"Smith", NULL};

    

    /* 添加的属性和属性值,每种属性和属性值用一个LDAPMod类型数据表示 */

    LDAPMod objectClassattr = {LDAP_MOD_ADD, "objectclass", objectClass_values};

    LDAPMod cnattr = {LDAP_MOD_ADD, "cn", cn_values};

    LDAPMod oattr = {LDAP_MOD_ADD, "o", o_values};

    LDAPMod snattr = {LDAP_MOD_ADD, "sn", sn_values};  

    LDAPMod telephoneNumberattr = {LDAP_MOD_ADD, "telephoneNumber",

                                   telephoneNumber_values};

    LDAPMod postalCodeattr = {LDAP_MOD_ADD, "postalCode", postalCode_values};    

    LDAPMod *attrs[] = {&objectClassattr, &cnattr, &oattr, &snattr,

                        &telephoneNumberattr, &postalCodeattr, NULL};

    int rc_bind;           /* ldap_simple_bind_s返回结果 */

    int rc_result;         /* ldap_result返回结果 */

    int rc_result2error;   /* ldap_result2error返回结果 */

    /* 添加DN */

    char *dn = "cn=John Smith, " BASE_DN;

    int msgid;

    LDAPMessage *res;

    

    int finished = 0;

    /* 获得到LDAP server的会话句柄 */

    ld = ldap_init(HOST, PORT);  

    

    /* 绑定LDAP server */

    rc_bind = ldap_simple_bind_s(ld, BIND_DN, PASSWORD);

    /* 绑定失败处理 */

    if (rc_bind != LDAP_SUCCESS)

    {

        ldap_perror(ld, "ldap_simple_bind_s");

        return -1;

    }

    /* 添加新条目 */

    msgid = ldap_add(ld, dn, attrs);

    /* 添加失败处理 */

    if(msgid == -1)

    {

        ldap_perror(ld, "ldap_add");

        ldap_unbind(ld);

        return -1;

    }

   

    /* 异步操作筛选结果 */

    while (!finished)

    {

        rc_result = ldap_result(ld, msgid, LDAP_MSG_ONE, NULL, &res);

        switch (rc_result)

    {

        case -1:

                /* 发生错误 */

                ldap_perror(ld, "ldap_result");

                ldap_unbind(ld);  

                return -1;

            case 0:

                /* 超时,条目没准备好 */

            break;

            case LDAP_RES_ADD:

                /* 操作完成,筛选结束 */

            finished = 1;

                break;

        default:

                /* 不会出现这种情况 */

                ldap_unbind(ld);  

                return -1;

    }

        

        /*

        * 因为是异步操作,筛选结果同时可以做其他操作。

        * 这里可以添加需要的操作。

        */    

    }

   

    /* 转换从ldap_result()中输出的结果信息 */

    rc_result2error = ldap_result2error(ld, res, 0);

    if (rc_result2error == LDAP_SUCCESS)

    {

        printf ("ldap_add: Entry added successfully.\n");

    }

    else

    {

        ldap_perror(ld, "ldap_add");

    }

    ldap_msgfree(res);

    ldap_unbind(ld);

    return 0;

}

标签:ld,09,rc,API,values,LDAP,ldap,添加
来源: https://blog.csdn.net/clarke_tong/article/details/122662455

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有