亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vldap.c

?? 相當優(yōu)秀的 UNIX 進程管理工具
?? C
?? 第 1 頁 / 共 3 頁
字號:
        snprintf(b, ret, "%s/%s", dom_dir, user);    }    dir = b;    /* make an ldap connection (unless we already have one open) */    if (ld == NULL ) {        if (ldap_connect() != 0)            return -99;    }    lm = (LDAPMod **)safe_malloc(sizeof(LDAPMod *) * (NUM_LDAP_FIELDS +1));    for(i=0;i<NUM_LDAP_FIELDS;++i) {        lm[i] = (LDAPMod *)safe_malloc(sizeof(LDAPMod));        memset((LDAPMod *)lm[i], 0, sizeof(LDAPMod));        lm[i]->mod_op = LDAP_MOD_ADD;        lm[i]->mod_type = safe_strdup(ldap_fields[i]);        lm[i]->mod_values = (char **)safe_malloc(sizeof(char *) * 2);        lm[i]->mod_values[1] = NULL;    }    lm[NUM_LDAP_FIELDS] = NULL;    /* lm[0] will store : uid / pw_name */    lm[0]->mod_values[0] = safe_strdup(user);    /* lm[1] will store : userPassword / pw_password */    memset((char *)crypted, 0, 100);    if ( password[0] == 0 ) {        crypted[0] = 0;    } else {        mkpasswd3(password, crypted, 100);    }    lm[1]->mod_values[0] = (char *) safe_malloc(strlen(crypted) + 7 + 1);#ifdef MD5_PASSWORDS    snprintf(lm[1]->mod_values[0], strlen(crypted) + 7 + 1, "{MD5}%s", crypted);#else    snprintf(lm[1]->mod_values[0], strlen(crypted) + 7 + 1, "{crypt}%s", crypted);#endif    /* lm[2] will store : qmailUID / pw_uid */    lm[2]->mod_values[0] = (char *) safe_malloc(10);    if ( apop == USE_POP )        sprintf(lm[2]->mod_values[0], "%d", 1 );    else        sprintf(lm[2]->mod_values[0], "%d", 2 );    /* lm[3] will store : qmailGID / pw_gid */    lm[3]->mod_values[0] = (char *) safe_malloc(10);    sprintf(lm[3]->mod_values[0], "%d", 0);    /* lm[4] will store : qmaildomain / pw_gecos */    lm[4]->mod_values[0] = safe_strdup(gecos);    /* lm[5] will store : mailMessageStore / pw_dir */    lm[5]->mod_values[0] = safe_strdup(dir);    /* lm[6] will store : mailQuota / pw_shell */    lm[6]->mod_values[0] = safe_strdup("NOQUOTA");    /* When running with clearpasswords enabled,     * lm[7] will store : clearPassword / pw_clear_password     */#ifdef CLEAR_PASS    /* with clear passwords,     * lm[7] will store : clearPassword / pw_clear_password      * lm[8] will store : objectclass       */    lm[7]->mod_values[0] = strdup(password);    lm[8]->mod_values[0] = safe_strdup("qmailUser");#else    /* without clear passwords,    * lm[7] will store : objectclass    */    lm[7]->mod_values[0] = safe_strdup("qmailUser");#endif    /* set dn_tmp to be of the format :     *   ou=somedomain.com,o=vpopmail      */    if (compose_dn(&dn_tmp,domain) != 0) {        for(i=0;i<8;++i) {            safe_free((void **) &lm[i]->mod_type);            safe_free((void **) &lm[i]->mod_values[0]);        }        safe_free((void **) &lm);        safe_free((void **) &dn);        return -98;    }    /* set dn to be of the format :     *   uid=someuser, ou=somedomain,o=vpopmail     */    len = 4 + strlen(user) + 2 + strlen(VLDAP_BASEDN) + 4 + strlen(domain) + 1;    dn = (char *) safe_malloc(len);    memset((char *)dn, 0, len);    snprintf(dn, len, "uid=%s, %s", user, dn_tmp);    safe_free((void **) &dn_tmp);    /* add object to ldap     *   dn is the DN of the entry to add     *   lm is the attributes of the entry to add     */    ret = ldap_add_s(ld, dn, lm);    safe_free((void **) &dn);    for(i=0;i<NUM_LDAP_FIELDS;++i) {        safe_free((void **) &lm[i]->mod_type);        safe_free((void **) &lm[i]->mod_values[0]);    }    safe_free((void **) &lm);    if (ret != LDAP_SUCCESS) {        ldap_perror(ld,"Error");        if (ret == LDAP_ALREADY_EXISTS)            return VA_USERNAME_EXISTS;        return -99;    }    return VA_SUCCESS;}/***************************************************************************/int vauth_adddomain( char *domain ) {    int ret = 0;    char *dn = NULL;    LDAPMod **lm = NULL;    /* make a connection to the ldap server, if we are not already connected */    if (ld == NULL ) {        ret = ldap_connect();        if (ret != 0) {            return -99;            /* Attention I am not quite shure, when we return NULL or -99, see above */        }    }    lm = (LDAPMod **)safe_malloc(sizeof(LDAPMod *) * 2);    lm[0] = (LDAPMod *)safe_malloc(sizeof(LDAPMod));    lm[1] = (LDAPMod *)safe_malloc(sizeof(LDAPMod));    lm[2] = NULL;    memset((LDAPMod *)lm[0], 0, sizeof(LDAPMod));    memset((LDAPMod *)lm[1], 0, sizeof(LDAPMod));    lm[0]->mod_op = LDAP_MOD_ADD;    lm[1]->mod_op = LDAP_MOD_ADD;    lm[0]->mod_type = safe_strdup("ou");    lm[1]->mod_type = safe_strdup("objectclass");    lm[0]->mod_values = (char **)safe_malloc(sizeof(char *) * 2);    lm[1]->mod_values = (char **)safe_malloc(sizeof(char *) * 2);    lm[0]->mod_values[1] = NULL;    lm[1]->mod_values[1] = NULL;    lm[0]->mod_values[0] = safe_strdup(domain);    lm[1]->mod_values[0] = safe_strdup("organizationalUnit");    /* set dn to be of the format :     *   ou=somedomain.com,o=vpopmail      */    if (compose_dn(&dn,domain) != 0 ) {        safe_free((void **) &lm[0]->mod_type);        safe_free((void **) &lm[1]->mod_type);        safe_free((void **) &lm[0]->mod_values[0]);        safe_free((void **) &lm[1]->mod_values[0]);        safe_free((void **) &lm[1]);        safe_free((void **) &lm[0]);        safe_free((void **) &lm);        return -98;    }    /* dn will be ou=somedomain.com,o=vpopmail     * lm will be the ldap propoerties of somedomain.com     */    ret = ldap_add_s(ld, dn, lm);    if (ret != LDAP_SUCCESS) {        ldap_perror(ld,"Error");        return -99;    }    safe_free((void **) &dn);    safe_free((void **) &lm[0]->mod_type);    safe_free((void **) &lm[1]->mod_type);    safe_free((void **) &lm[0]->mod_values[0]);    safe_free((void **) &lm[1]->mod_values[0]);    safe_free((void **) &lm[2]);    safe_free((void **) &lm[1]);    safe_free((void **) &lm[0]);    safe_free((void **) &lm);    if (ret != LDAP_SUCCESS) {        if (ret == LDAP_ALREADY_EXISTS)            return VA_USERNAME_EXISTS;        return -99;    }    return VA_SUCCESS;}/***************************************************************************/int vauth_deldomain( char *domain ) {    int ret = 0;    size_t len = 0;    char *dn = NULL;    struct vqpasswd *pw = NULL;    /* make a connection to the ldap server, if we dont have one already */    if (ld == NULL ) {        if (ldap_connect() != 0)            return -99;    }    len = strlen(domain) + strlen(VLDAP_BASEDN) + 4 + 1;    /* dn will be of the format :     *   ou=somedomain.com,o=vpopmail     */    if (compose_dn(&dn,domain) != 0)        return -98;    /* loop through all the users in the domain, deleting each one */    for (pw = vauth_getall(domain, 1, 0); pw; pw = vauth_getall(domain, 0, 0))        vauth_deluser(pw->pw_name, domain);    /* next, delete the actual domain */    ret = ldap_delete_s(ld, dn);    safe_free((void **) &dn);    if (ret != LDAP_SUCCESS ) {        ldap_perror(ld,"Error");        return -99;    }    return VA_SUCCESS;}/***************************************************************************/int vauth_vpasswd( char *user, char *domain, char *crypted, int apop ) {    int ret = 0;    struct vqpasswd *pw = NULL;    pw = vauth_getpw(user, domain);    if (pw == NULL)        return VA_USER_DOES_NOT_EXIST;    pw->pw_passwd = safe_strdup(crypted);    ret = vauth_setpw(pw, domain);    return ret;}/***************************************************************************/int vauth_deluser( char *user, char *domain ) {    int ret = 0;    size_t len = 0;    char *dn = NULL;    char *dn_tmp = NULL;    /* make a connection to the ldap server if we dont have one already */    if (ld == NULL ) {        if (ldap_connect() != 0)            return -99;    }    len = 4 + strlen(user) + 2 + strlen(VLDAP_BASEDN) + 4 + strlen(domain) + 1;    /* make dn_tmp to be of the format     *  ou=somedomain.com,o=vpopmail      */    if (compose_dn(&dn_tmp,domain) != 0)        return -98;    dn = (char *)safe_malloc(len);    memset((char *)dn, 0, len);    /* make dn to be of the format     *   uid=someuser, ou=somedomain.com,o=vpopmail     */    snprintf(dn, len, "uid=%s, %s", user, dn_tmp);    safe_free((void **) &dn_tmp);    /* delete the user */    ret = ldap_delete_s(ld, dn);    safe_free((void **) &dn);    if (ret != LDAP_SUCCESS) {        ldap_perror(ld,"Error");        return -99;    }    return VA_SUCCESS;}/***************************************************************************/int vauth_setquota( char *username, char *domain, char *quota) {    int ret = 0;    struct vqpasswd *pw = NULL;    if ( strlen(username) > MAX_PW_NAME )        return(VA_USER_NAME_TOO_LONG);#ifdef USERS_BIG_DIR    if ( strlen(username) == 1 )        return(VA_ILLEGAL_USERNAME);#endif    if ( strlen(domain) > MAX_PW_DOMAIN )        return(VA_DOMAIN_NAME_TOO_LONG);    if ( strlen(quota) > MAX_PW_QUOTA )        return(VA_QUOTA_TOO_LONG);    pw = vauth_getpw(username, domain);    if ( (pw == NULL) && (verrori != 0))        return verrori;    else if ( pw == NULL )        return VA_USER_DOES_NOT_EXIST;    pw->pw_shell = safe_strdup(quota);    ret = vauth_setpw(pw, domain);    return ret;}/***************************************************************************/int vauth_setpw( struct vqpasswd *inpw, char *domain ) {    int ret = 0;    size_t len = 0;    char *dn = NULL;    char *dn_tmp = NULL;    LDAPMod **lm = NULL;    int i;#ifdef SQWEBMAIL_PASS    uid_t uid;    gid_t gid;#endif    ret = vcheck_vqpw(inpw, domain);    if ( ret != 0 ) {        return(ret);    }    if (ld == NULL ) {        if (ldap_connect() != 0)            return -99;    }    lm = (LDAPMod **)malloc(sizeof(LDAPMod *) * NUM_LDAP_FIELDS + 1);    for(i=0;i<NUM_LDAP_FIELDS;++i) {        lm[i] = (LDAPMod *)safe_malloc(sizeof(LDAPMod));        memset((LDAPMod *)lm[i], 0, sizeof(LDAPMod));        lm[i]->mod_op = LDAP_MOD_REPLACE;        lm[i]->mod_values = (char **)safe_malloc(sizeof(char *) * 2);        lm[i]->mod_values[1] = NULL;        lm[i]->mod_type = safe_strdup(ldap_fields[i]);    }    lm[NUM_LDAP_FIELDS] = NULL;    lm[0]->mod_values[0] = safe_strdup(inpw->pw_name);    lm[1]->mod_values[0] = safe_malloc(strlen(inpw->pw_passwd) + 7 + 1);#ifdef MD5_PASSWORDS    snprintf(lm[1]->mod_values[0], strlen(inpw->pw_passwd) + 7 + 1, "{MD5}%s", inpw->pw_passwd);#else    snprintf(lm[1]->mod_values[0], strlen(inpw->pw_passwd) + 7 + 1, "{crypt}%s", inpw->pw_passwd);#endif    lm[2]->mod_values[0] = (char *)safe_malloc(10);    sprintf(lm[2]->mod_values[0], "%d", inpw->pw_uid);    lm[3]->mod_values[0] = (char *) safe_malloc(10);    sprintf(lm[3]->mod_values[0], "%d", inpw->pw_gid);    if ( inpw->pw_gecos == NULL) {        lm[4]->mod_values[0] = safe_strdup("");    } else {        lm[4]->mod_values[0] = safe_strdup(inpw->pw_gecos);    }    lm[5]->mod_values[0] = safe_strdup(inpw->pw_dir);    lm[6]->mod_values[0] = safe_strdup(inpw->pw_shell);#ifdef CLEAR_PASS    lm[7]->mod_values[0] = safe_strdup(inpw->pw_clear_passwd);#endif    lm[NUM_LDAP_FIELDS-1]->mod_values[0] = strdup("qmailUser");    if (compose_dn(&dn_tmp,domain) != 0 ) {        safe_free((void **) &lm);        return -98;    }    len = 4 + strlen(inpw->pw_name) + 2 + strlen(VLDAP_BASEDN) + 4 + strlen(domain) + 1;    dn = (char *) safe_malloc (len);    memset((char *)dn, 0, len);    snprintf(dn, len, "uid=%s, %s", inpw->pw_name, dn_tmp);    ret = ldap_modify_s(ld, dn, lm);    safe_free((void **) &dn);    for(i=0;i<NUM_LDAP_FIELDS;++i)        safe_free((void **) &lm);    if (ret != LDAP_SUCCESS) {        ldap_perror(ld,"Error");        return -99;    }    /* MARK */#ifdef SQWEBMAIL_PASS    vget_assign(domain, NULL, 0, &uid, &gid );    vsqwebmail_pass( inpw->pw_dir, inpw->pw_passwd, uid, gid);#endif    return VA_SUCCESS;}/***************************************************************************/void vclose(void) {    if (ld) {        ldap_unbind_s(ld);        ld = NULL;    }}/***************************************************************************/char *dc_filename(char *domain, uid_t uid, gid_t gid){ static char dir_control_file[MAX_DIR_NAME]; struct passwd *pw;    /* if we are lucky the domain is in the assign file */    if ( vget_assign(domain,dir_control_file,MAX_DIR_NAME,NULL,NULL)!=NULL ) {        strncat(dir_control_file, "/.dir-control", MAX_DIR_NAME);    /* it isn't in the assign file so we have to get it from /etc/passwd */    } else {        /* save some time if this is the vpopmail user */        if ( uid == VPOPMAILUID ) {            strncpy(dir_control_file, VPOPMAILDIR, MAX_DIR_NAME);        /* for other users, look them up in /etc/passwd */        } else if ( (pw=getpwuid(uid))!=NULL ) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产精品自在自线| 在线观看视频91| 亚洲乱码中文字幕| 日韩欧美在线1卡| 色婷婷av一区二区三区gif| 久久激情综合网| 一区二区三区四区蜜桃| 一区二区三区在线视频播放| 欧美日韩国产高清一区二区三区| 国产精品66部| 日本免费新一区视频 | 1000部国产精品成人观看| 欧美精品免费视频| 91麻豆国产福利精品| 极品瑜伽女神91| 日韩精品视频网| 亚洲精品成人精品456| 国产欧美中文在线| 欧美不卡一区二区| 在线成人小视频| 91久久精品日日躁夜夜躁欧美| 国产成人自拍网| 韩国女主播成人在线观看| 亚洲成年人影院| 樱花草国产18久久久久| 欧美国产日韩在线观看| 欧美电视剧免费全集观看| 欧洲生活片亚洲生活在线观看| 成人黄色大片在线观看| 久久精品国产99国产精品| 日韩精品乱码av一区二区| 综合久久久久综合| 久久久不卡影院| 日韩精品一区二区三区三区免费 | 欧美精品三级在线观看| 国产成人小视频| 国产成人av一区二区三区在线| 丝袜亚洲精品中文字幕一区| 亚洲无线码一区二区三区| 国产精品久久久久久久久搜平片| 久久九九99视频| 26uuu亚洲| 99re这里只有精品6| 91毛片在线观看| 99久久精品99国产精品| a级精品国产片在线观看| 国产精品77777| 成人高清视频在线观看| 国产iv一区二区三区| 成人app在线| 不卡高清视频专区| 91在线高清观看| 国产成人鲁色资源国产91色综| 久久se精品一区二区| 丝瓜av网站精品一区二区| 亚洲国产wwwccc36天堂| 国产精品美女久久久久久久久| 久久精品欧美一区二区三区不卡| 精品国产网站在线观看| 欧美电影免费观看完整版| 91.xcao| 在线综合亚洲欧美在线视频| 欧美又粗又大又爽| 91麻豆精品国产91久久久更新时间| 欧美日韩专区在线| 欧美tickling网站挠脚心| 欧美电影免费观看完整版| 久久精品网站免费观看| 久久精品夜色噜噜亚洲a∨| 日韩理论片网站| 亚洲国产一区二区视频| 激情五月激情综合网| 国产盗摄精品一区二区三区在线| 成人永久aaa| 色偷偷88欧美精品久久久| 欧美精三区欧美精三区| 欧美成人aa大片| 国产三级久久久| 日韩一区有码在线| 五月综合激情网| 国产呦萝稀缺另类资源| 色综合天天综合色综合av | 精品国产乱码久久久久久免费| 精品久久久久一区二区国产| **欧美大码日韩| 日韩精品91亚洲二区在线观看| 丰满少妇久久久久久久| 欧美无人高清视频在线观看| 欧美mv日韩mv亚洲| 国产精品夫妻自拍| 麻豆国产欧美日韩综合精品二区 | 欧美日韩成人在线| 精品剧情v国产在线观看在线| 国产精品第四页| 丝袜诱惑亚洲看片| 狠狠色丁香婷婷综合| 在线免费不卡电影| 精品动漫一区二区三区在线观看| 亚洲男人的天堂网| 蜜芽一区二区三区| 色久优优欧美色久优优| 日韩你懂的在线播放| 一区二区成人在线| 韩日欧美一区二区三区| 在线观看免费视频综合| 精品日韩欧美一区二区| 亚洲一区二区三区爽爽爽爽爽| 韩国av一区二区三区在线观看| 欧美专区日韩专区| 国产清纯在线一区二区www| 日韩精品一级中文字幕精品视频免费观看| 国产一区二区三区免费| 91国偷自产一区二区三区成为亚洲经典| 日韩视频在线永久播放| 久久精品免视看| 亚洲3atv精品一区二区三区| 99精品一区二区三区| 26uuu久久天堂性欧美| 久久免费精品国产久精品久久久久| 亚洲曰韩产成在线| 国产精品自拍网站| 久久久另类综合| 亚洲免费观看高清| 色域天天综合网| 欧美va亚洲va香蕉在线| 美国欧美日韩国产在线播放| a美女胸又www黄视频久久| 久久夜色精品国产噜噜av| 日韩电影在线观看网站| 91成人看片片| 亚洲精品成a人| 精品一区二区综合| 国产麻豆精品视频| 国产精品久久一卡二卡| 日韩精品乱码av一区二区| 欧美性大战久久| 亚洲欧洲精品一区二区精品久久久| 欧美日韩精品一区二区三区蜜桃| 国产精品日韩成人| 免费看黄色91| 91精品国产色综合久久不卡电影 | 日韩一级完整毛片| 日日噜噜夜夜狠狠视频欧美人| 色吧成人激情小说| 亚洲一区日韩精品中文字幕| 99国产精品久久久久| 亚洲欧美中日韩| 99久久精品免费| 亚洲精品国产成人久久av盗摄 | 欧美肥妇bbw| 五月婷婷色综合| 欧美一区二区三区男人的天堂| 五月婷婷久久丁香| 日韩精品一区在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 国产亚洲欧洲997久久综合| 国产一二精品视频| **欧美大码日韩| 色狠狠桃花综合| 蜜臀av性久久久久蜜臀aⅴ| 51精品视频一区二区三区| 美女视频一区二区| 制服丝袜成人动漫| 国产经典欧美精品| 国产精品国产三级国产a| 欧美亚洲禁片免费| 图片区日韩欧美亚洲| 久久久精品中文字幕麻豆发布| 国产乱色国产精品免费视频| 《视频一区视频二区| 欧洲中文字幕精品| 国产一区福利在线| 欧美国产一区二区在线观看| 欧美性xxxxxxxx| 亚洲黄网站在线观看| 日韩丝袜美女视频| 美女www一区二区| 国产精品欧美精品| 欧美日韩国产综合一区二区三区| 青青草一区二区三区| 中文幕一区二区三区久久蜜桃| 色综合天天天天做夜夜夜夜做| 懂色av噜噜一区二区三区av| 最好看的中文字幕久久| 欧美一区三区四区| 国产一区二区三区日韩| 亚洲一区二区三区自拍| 日韩欧美国产一区二区三区| 99久久99久久免费精品蜜臀| 午夜精品福利一区二区蜜股av| 久久久www成人免费毛片麻豆| 99久久99久久免费精品蜜臀| 蜜桃久久av一区| 国产精品日日摸夜夜摸av| 日韩欧美一区二区视频| 国产精品18久久久久久vr| 视频一区视频二区中文| 欧美成人一区二区三区| 色呦呦国产精品| 国产精品一二三四|