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

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

?? ldap_backend.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * * * * ldap_backend.c * AUTHOR: Flavio Pescuma, MARA Systems AB <flavio@marasystems.com> */#define LDAP_DEPRECATED 1#include "ldap_backend.h"#ifdef _SQUID_MSWIN_		/* Native Windows port and MinGW */#define snprintf _snprintf#include <windows.h>#include <winldap.h>#ifndef LDAPAPI#define LDAPAPI __cdecl#endif#ifdef LDAP_VERSION3#ifndef LDAP_OPT_X_TLS#define LDAP_OPT_X_TLS 0x6000#endif/* Some tricks to allow dynamic bind with ldap_start_tls_s entry point at * run time. */#undef ldap_start_tls_s#if LDAP_UNICODE#define LDAP_START_TLS_S "ldap_start_tls_sW"typedef WINLDAPAPI ULONG(LDAPAPI * PFldap_start_tls_s) (IN PLDAP, OUT PULONG, OUT LDAPMessage **, IN PLDAPControlW *, IN PLDAPControlW *);#else#define LDAP_START_TLS_S "ldap_start_tls_sA"typedef WINLDAPAPI ULONG(LDAPAPI * PFldap_start_tls_s) (IN PLDAP, OUT PULONG, OUT LDAPMessage **, IN PLDAPControlA *, IN PLDAPControlA *);#endif /* LDAP_UNICODE */PFldap_start_tls_s Win32_ldap_start_tls_s;#define ldap_start_tls_s(l,s,c) Win32_ldap_start_tls_s(l,NULL,NULL,s,c)#endif /* LDAP_VERSION3 */#else#include <lber.h>#include <ldap.h>#endif#include "edir_ldapext.h"#define PROGRAM_NAME "digest_pw_auth(LDAP_backend)"/* Globals */static LDAP *ld = NULL;static char *passattr = NULL;static char *ldapServer = NULL;static char *userbasedn = NULL;static char *userdnattr = NULL;static char *usersearchfilter = NULL;static char *binddn = NULL;static char *bindpasswd = NULL;static char *delimiter = ":";static int encrpass = 0;static int searchscope = LDAP_SCOPE_SUBTREE;static int persistent = 0;static int noreferrals = 0;static int debug = 0;static int port = LDAP_PORT;static int strip_nt_domain = 0;static int edir_universal_passwd = 0;static int aliasderef = LDAP_DEREF_NEVER;#if defined(NETSCAPE_SSL)static char *sslpath = NULL;static int sslinit = 0;#endifstatic int connect_timeout = 0;static int timelimit = LDAP_NO_LIMIT;#ifdef LDAP_VERSION3/* Added for TLS support and version 3 */static int use_tls = 0;static int version = -1;#endifstatic void ldapconnect(void);static int readSecret(char *filename);/* Yuck.. we need to glue to different versions of the API */#if defined(LDAP_API_VERSION) && LDAP_API_VERSION > 1823static voidsquid_ldap_set_aliasderef(int deref){    ldap_set_option(ld, LDAP_OPT_DEREF, &deref);}static voidsquid_ldap_set_referrals(int referrals){    int *value = referrals ? LDAP_OPT_ON : LDAP_OPT_OFF;    ldap_set_option(ld, LDAP_OPT_REFERRALS, value);}static voidsquid_ldap_set_timelimit(int timelimit){    ldap_set_option(ld, LDAP_OPT_TIMELIMIT, &timelimit);}static voidsquid_ldap_set_connect_timeout(int timelimit){#if defined(LDAP_OPT_NETWORK_TIMEOUT)    struct timeval tv;    tv.tv_sec = timelimit;    tv.tv_usec = 0;    ldap_set_option(ld, LDAP_OPT_NETWORK_TIMEOUT, &tv);#elif defined(LDAP_X_OPT_CONNECT_TIMEOUT)    timelimit *= 1000;    ldap_set_option(ld, LDAP_X_OPT_CONNECT_TIMEOUT, &timelimit);#endif}#elsestatic intsquid_ldap_errno(LDAP * ld){    return ld->ld_errno;}static voidsquid_ldap_set_aliasderef(int deref){    ld->ld_deref = deref;}static voidsquid_ldap_set_referrals(int referrals){    if (referrals)	ld->ld_options |= ~LDAP_OPT_REFERRALS;    else	ld->ld_options &= ~LDAP_OPT_REFERRALS;}static voidsquid_ldap_set_timelimit(int timelimit){    ld->ld_timelimit = timelimit;}static voidsquid_ldap_set_connect_timeout(int timelimit){    fprintf(stderr, "Connect timeouts not supported in your LDAP library\n");}static voidsquid_ldap_memfree(char *p){    free(p);}#endif#ifdef LDAP_API_FEATURE_X_OPENLDAP#if LDAP_VENDOR_VERSION > 194#define HAS_URI_SUPPORT 1#endif#endifstatic intldap_escape_value(char *escaped, int size, const char *src){    int n = 0;    while (size > 4 && *src) {	switch (*src) {	case '*':	case '(':	case ')':	case '\\':	    n += 3;	    size -= 3;	    if (size > 0) {		*escaped++ = '\\';		snprintf(escaped, 3, "%02x", (int) *src++);		escaped += 2;	    }	    break;	default:	    *escaped++ = *src++;	    n++;	    size--;	}    }    *escaped = '\0';    return n;}static char *getpassword(char *login, char *realm){    LDAPMessage *res = NULL;    LDAPMessage *entry;    char **values = NULL;    char **value = NULL;    char *password = NULL;    int retry = 0;    char filter[8192];    char searchbase[8192];    char *universal_password = NULL;    size_t universal_password_len = UNIVERSAL_PASS_LEN;    int nmas_res = 0;    int rc = -1;    if (ld) {	if (usersearchfilter) {	    char escaped_login[1024];	    snprintf(searchbase, sizeof(searchbase), "%s", userbasedn);	    ldap_escape_value(escaped_login, sizeof(escaped_login), login);	    snprintf(filter, sizeof(filter), usersearchfilter, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login, escaped_login);	  retrysrch:	    if (debug)		fprintf(stderr, "user filter '%s', searchbase '%s'\n", filter, searchbase);	    rc = ldap_search_s(ld, searchbase, searchscope, filter, NULL, 0, &res);	    if (rc != LDAP_SUCCESS) {		if (noreferrals && rc == LDAP_PARTIAL_RESULTS) {		    /* Everything is fine. This is expected when referrals		     * are disabled.		     */		    rc = LDAP_SUCCESS;		} else {		    fprintf(stderr, PROGRAM_NAME " WARNING, LDAP search error '%s'\n", ldap_err2string(rc));#if defined(NETSCAPE_SSL)		    if (sslpath && ((rc == LDAP_SERVER_DOWN) || (rc == LDAP_CONNECT_ERROR))) {			int sslerr = PORT_GetError();			fprintf(stderr, PROGRAM_NAME ": WARNING, SSL error %d (%s)\n", sslerr, ldapssl_err2string(sslerr));		    }#endif		    fprintf(stderr, PROGRAM_NAME " WARNING, LDAP search error, trying to recover'%s'\n", ldap_err2string(rc));		    ldap_msgfree(res);		    /* try to connect to the LDAP server agin, maybe my persisten conexion failed. */		    if (!retry) {			retry++;			ldap_unbind(ld);			ld = NULL;			ldapconnect();			goto retrysrch;		    }		    return NULL;		}	    }	} else if (userdnattr) {	    sprintf(searchbase, "%s=%s, %s", userdnattr, login, userbasedn);	  retrydnattr:	    if (debug)		fprintf(stderr, "searchbase '%s'\n", searchbase);	    rc = ldap_search_s(ld, searchbase, searchscope, NULL, NULL, 0, &res);	}	if (rc == LDAP_SUCCESS) {	    entry = ldap_first_entry(ld, res);	    if (entry) {                if (debug)                    printf("ldap dn: %s\n", ldap_get_dn(ld, entry));                if (edir_universal_passwd) {                                   /* allocate some memory for the universal password returned by NMAS */                     universal_password = malloc(universal_password_len);                    memset(universal_password, 0, universal_password_len);                    values = malloc(sizeof(char *));                                        /* actually talk to NMAS to get a password */                    nmas_res = nmasldap_get_password(ld, ldap_get_dn(ld, entry), &universal_password_len, universal_password);                    if (nmas_res == NMAS_SUCCESS && universal_password) {                        if (debug)                          printf("NMAS returned value %s\n", universal_password);                        values[0] = universal_password;                    } else {                        if (debug)                          printf("Error reading Universal Password: %d = %s\n", nmas_res, ldap_err2string(nmas_res));                    }                } else {                    values = ldap_get_values(ld, entry, passattr);                }	    } else {		ldap_msgfree(res);		return NULL;	    }	    if (!values) {		if (debug)		    printf("No attribute value found\n");                if (edir_universal_passwd)                   free(universal_password);		ldap_msgfree(res);		return NULL;	    }	    value = values;	    while (*value) {		if (encrpass) {		    if (strcmp(strtok(*value, delimiter), realm) == 0) {			password = strtok(NULL, delimiter);			break;		    }		} else {		    password = *value;		    break;		}		value++;	    }	    if (debug)		printf("password: %s\n", password);	    if (password)		password = strdup(password);            if (edir_universal_passwd) {                free(values);                free(universal_password);            } else {	    ldap_value_free(values);            }	    ldap_msgfree(res);	    return password;	} else {	    fprintf(stderr, PROGRAM_NAME " WARNING, LDAP error '%s'\n", ldap_err2string(rc));	    /* try to connect to the LDAP server agin, maybe my persisten conexion failed. */	    if (!retry) {		retry++;		ldap_unbind(ld);		ld = NULL;		ldapconnect();		goto retrydnattr;	    }	    return NULL;	}    }    return NULL;}static voidldapconnect(void){    int rc;/* On Windows ldap_start_tls_s is available starting from Windows XP,  * so we need to bind at run-time with the function entry point */#ifdef _SQUID_MSWIN_    if (use_tls) {	HMODULE WLDAP32Handle;	WLDAP32Handle = GetModuleHandle("wldap32");	if ((Win32_ldap_start_tls_s = (PFldap_start_tls_s) GetProcAddress(WLDAP32Handle, LDAP_START_TLS_S)) == NULL) {	    fprintf(stderr, PROGRAM_NAME ": ERROR: TLS (-Z) not supported on this platform.\n");	    exit(1);	}    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜亚洲福利老司机| 日日摸夜夜添夜夜添精品视频| 欧美福利视频一区| 在线一区二区三区| 在线精品视频一区二区三四 | 亚洲女厕所小便bbb| 国产日产精品一区| 久久久久成人黄色影片| 国产午夜精品久久久久久久| xfplay精品久久| 国产亚洲综合av| 亚洲天堂免费看| 亚洲一区二区在线免费观看视频| 一二三四社区欧美黄| 亚洲成av人影院在线观看网| 日本午夜一区二区| 国产一区不卡视频| 91玉足脚交白嫩脚丫在线播放| 日本福利一区二区| 日韩午夜电影av| 久久久美女艺术照精彩视频福利播放| 国产视频不卡一区| 亚洲精品欧美二区三区中文字幕| 日韩综合小视频| 国产一区不卡精品| 在线视频亚洲一区| 日韩一区二区在线观看视频| 国产日产欧美精品一区二区三区| 亚洲欧美国产三级| 免费成人美女在线观看| 成人18视频日本| 欧美图片一区二区三区| 久久婷婷色综合| 有码一区二区三区| 国产精品1区2区3区| 色香蕉成人二区免费| 日韩一区二区三区在线| 国产日产精品一区| 亚洲va中文字幕| 成人丝袜18视频在线观看| 欧美视频一区二| 中文字幕国产精品一区二区| 亚洲国产成人91porn| 国产激情视频一区二区三区欧美 | 成人永久看片免费视频天堂| 欧美日韩日本视频| 亚洲国产精品激情在线观看| 日日夜夜免费精品视频| 99国产精品99久久久久久| 日韩精品一区二| 亚洲一区二区综合| 97国产精品videossex| 亚洲精品一区二区三区精华液| 亚洲综合色丁香婷婷六月图片| 精品在线播放午夜| 欧美人狂配大交3d怪物一区| 综合久久综合久久| 成人自拍视频在线| 欧美mv日韩mv| 日韩**一区毛片| 欧美人伦禁忌dvd放荡欲情| 综合电影一区二区三区| 国产99精品国产| 欧美精品一区二区三区视频| 麻豆精品国产91久久久久久| 777奇米四色成人影色区| 日韩美女视频19| 成人免费视频网站在线观看| 久久久久久日产精品| 国产美女主播视频一区| 精品久久久久久久久久久久久久久 | 久久久国产综合精品女国产盗摄| 奇米在线7777在线精品| 制服.丝袜.亚洲.中文.综合| 亚洲va中文字幕| 6080亚洲精品一区二区| 天涯成人国产亚洲精品一区av| 欧美伊人精品成人久久综合97| 自拍偷拍国产亚洲| 91福利社在线观看| 亚洲大尺度视频在线观看| 欧美日韩亚洲另类| 日韩激情一区二区| 久久综合五月天婷婷伊人| 国内成人自拍视频| 国产精品女同互慰在线看| 91丨porny丨最新| 亚洲午夜电影网| 欧美二区三区91| 精品写真视频在线观看| 久久久91精品国产一区二区三区| 国产成人免费视频网站| 中文字幕在线不卡国产视频| 91老师片黄在线观看| 午夜精品久久久久久久久久| 91精品国产综合久久久久久漫画| 久久99国产精品久久99| 日本一区二区三区在线观看| 成人理论电影网| 一片黄亚洲嫩模| 精品人伦一区二区色婷婷| 国产91精品一区二区麻豆网站 | 久久嫩草精品久久久久| 成人一级片在线观看| 亚洲精品一二三| 日韩一区二区电影网| 丁香婷婷综合色啪| 亚洲国产综合91精品麻豆| 欧美成人一区二区三区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲丶国产丶欧美一区二区三区| 久久久亚洲国产美女国产盗摄| 91小视频免费观看| 美女网站色91| 亚洲三级免费观看| 久久女同精品一区二区| 欧美偷拍一区二区| 成人网男人的天堂| 美女免费视频一区二区| 亚洲激情男女视频| 国产欧美日韩精品在线| 5858s免费视频成人| 不卡的电视剧免费网站有什么| 人人爽香蕉精品| 亚洲图片欧美色图| 中文天堂在线一区| 精品国产亚洲一区二区三区在线观看| 色又黄又爽网站www久久| 国产精品一区二区三区乱码| 亚洲bt欧美bt精品777| 亚洲男人的天堂av| 欧美国产精品久久| 久久久精品免费免费| 日韩免费观看高清完整版| 欧美午夜免费电影| 日本道免费精品一区二区三区| 成人自拍视频在线观看| 国产美女主播视频一区| 蜜臀久久99精品久久久久久9| 亚洲综合色视频| 亚洲欧美激情一区二区| 国产精品久久午夜夜伦鲁鲁| 国产人成亚洲第一网站在线播放| 欧美一区二区高清| 欧美精品欧美精品系列| 精品视频在线免费看| 日本精品一区二区三区高清 | 亚洲bt欧美bt精品| 亚洲一区二区中文在线| 亚洲一区日韩精品中文字幕| 亚洲综合视频网| 亚洲在线一区二区三区| 亚洲一区二区3| 亚洲v日本v欧美v久久精品| 亚洲制服欧美中文字幕中文字幕| 一区二区三区在线视频观看 | 久久久亚洲精品一区二区三区| 精品奇米国产一区二区三区| 欧美sm极限捆绑bd| 亚洲精品在线观| 国产视频亚洲色图| 中日韩av电影| 亚洲精品日韩专区silk| 亚洲图片欧美综合| 捆绑调教一区二区三区| 国产一区二区三区久久悠悠色av| 极品瑜伽女神91| 成人午夜激情在线| 色婷婷国产精品| 91精品国产品国语在线不卡| 精品国产一区二区精华| 国产精品电影院| 亚洲一二三四久久| 日韩av一级电影| 国产精品一区二区在线播放| 99久久国产综合精品色伊| 在线观看日韩国产| 欧美大度的电影原声| 国产精品久久久久一区| 亚洲成人av在线电影| 国产一区二区福利| 色婷婷精品久久二区二区蜜臀av| 69堂成人精品免费视频| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美激情一区二区三区在线| 亚洲精品中文字幕乱码三区| 看国产成人h片视频| 99免费精品在线观看| 91精品国产全国免费观看| 国产精品无人区| 首页国产欧美日韩丝袜| 国产成人在线看| 欧美一级二级三级蜜桃| 国产欧美一区二区三区网站 | 日本一区二区三区高清不卡| 亚洲一级在线观看| 国产成人在线色| 欧美一区二区精品| 亚洲美女偷拍久久| 国产91富婆露脸刺激对白|