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

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

?? squid_ldap_auth.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 2 頁
字號:
	case 'b':	    basedn = value;	    break;	case 'f':	    searchfilter = value;	    break;	case 'u':	    userattr = value;	    break;	case 'U':	    passwdattr = value;	    break;	case 's':	    if (strcmp(value, "base") == 0)		searchscope = LDAP_SCOPE_BASE;	    else if (strcmp(value, "one") == 0)		searchscope = LDAP_SCOPE_ONELEVEL;	    else if (strcmp(value, "sub") == 0)		searchscope = LDAP_SCOPE_SUBTREE;	    else {		fprintf(stderr, PROGRAM_NAME ": ERROR: Unknown search scope '%s'\n", value);		exit(1);	    }	    break;	case 'E':#if defined(NETSCAPE_SSL)	    sslpath = value;	    if (port == LDAP_PORT)		port = LDAPS_PORT;#else	    fprintf(stderr, PROGRAM_NAME " ERROR: -E unsupported with this LDAP library\n");	    exit(1);#endif	    break;	case 'c':	    connect_timeout = atoi(value);	    break;	case 't':	    timelimit = atoi(value);	    break;	case 'a':	    if (strcmp(value, "never") == 0)		aliasderef = LDAP_DEREF_NEVER;	    else if (strcmp(value, "always") == 0)		aliasderef = LDAP_DEREF_ALWAYS;	    else if (strcmp(value, "search") == 0)		aliasderef = LDAP_DEREF_SEARCHING;	    else if (strcmp(value, "find") == 0)		aliasderef = LDAP_DEREF_FINDING;	    else {		fprintf(stderr, PROGRAM_NAME ": ERROR: Unknown alias dereference method '%s'\n", value);		exit(1);	    }	    break;	case 'D':	    binddn = value;	    break;	case 'w':	    bindpasswd = value;	    break;	case 'W':	    readSecret(value);	    break;	case 'P':	    persistent = !persistent;	    break;	case 'O':	    bind_once = !bind_once;	    break;	case 'p':	    port = atoi(value);	    break;	case 'R':	    noreferrals = !noreferrals;	    break;#ifdef LDAP_VERSION3	case 'v':	    switch (atoi(value)) {	    case 2:		version = LDAP_VERSION2;		break;	    case 3:		version = LDAP_VERSION3;		break;	    default:		fprintf(stderr, "Protocol version should be 2 or 3\n");		exit(1);	    }	    break;	case 'Z':	    if (version == LDAP_VERSION2) {		fprintf(stderr, "TLS (-Z) is incompatible with version %d\n",		    version);		exit(1);	    }	    version = LDAP_VERSION3;	    use_tls = 1;	    break;#endif	case 'd':	    debug++;	    break;	default:	    fprintf(stderr, PROGRAM_NAME ": ERROR: Unknown command line option '%c'\n", option);	    exit(1);	}    }    while (argc > 1) {	char *value = argv[1];	if (ldapServer) {	    int len = strlen(ldapServer) + 1 + strlen(value) + 1;	    char *newhost = malloc(len);	    snprintf(newhost, len, "%s %s", ldapServer, value);	    free(ldapServer);	    ldapServer = newhost;	} else {	    ldapServer = strdup(value);	}	argc--;	argv++;    }    if (!ldapServer)	ldapServer = strdup("localhost");    if (!basedn) {	fprintf(stderr, "Usage: " PROGRAM_NAME " -b basedn [options] [ldap_server_name[:port]]...\n\n");	fprintf(stderr, "\t-b basedn (REQUIRED)\tbase dn under which to search\n");	fprintf(stderr, "\t-f filter\t\tsearch filter to locate user DN\n");	fprintf(stderr, "\t-u userattr\t\tusername DN attribute\n");	fprintf(stderr, "\t-s base|one|sub\t\tsearch scope\n");	fprintf(stderr, "\t-D binddn\t\tDN to bind as to perform searches\n");	fprintf(stderr, "\t-w bindpasswd\t\tpassword for binddn\n");	fprintf(stderr, "\t-W secretfile\t\tread password for binddn from file secretfile\n");#if HAS_URI_SUPPORT	fprintf(stderr, "\t-H URI\t\t\tLDAPURI (defaults to ldap://localhost)\n");#endif	fprintf(stderr, "\t-h server\t\tLDAP server (defaults to localhost)\n");	fprintf(stderr, "\t-p port\t\t\tLDAP server port\n");	fprintf(stderr, "\t-P\t\t\tpersistent LDAP connection\n");#if defined(NETSCAPE_SSL)	fprintf(stderr, "\t-E sslcertpath\t\tenable LDAP over SSL\n");#endif	fprintf(stderr, "\t-c timeout\t\tconnect timeout\n");	fprintf(stderr, "\t-t timelimit\t\tsearch time limit\n");	fprintf(stderr, "\t-R\t\t\tdo not follow referrals\n");	fprintf(stderr, "\t-a never|always|search|find\n\t\t\t\twhen to dereference aliases\n");#ifdef LDAP_VERSION3	fprintf(stderr, "\t-v 2|3\t\t\tLDAP version\n");	fprintf(stderr, "\t-Z\t\t\tTLS encrypt the LDAP connection, requires LDAP version 3\n");#endif	fprintf(stderr, "\n");	fprintf(stderr, "\tIf no search filter is specified, then the dn <userattr>=user,basedn\n\twill be used (same as specifying a search filter of '<userattr>=',\n\tbut quicker as as there is no need to search for the user DN)\n\n");	fprintf(stderr, "\tIf you need to bind as a user to perform searches then use the\n\t-D binddn -w bindpasswd or -D binddn -W secretfile options\n\n");	exit(1);    }/* 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);	}    }#endif    while (fgets(buf, sizeof(buf), stdin) != NULL) {	user = strtok(buf, " \r\n");	passwd = strtok(NULL, "\r\n");	if (!user || !passwd || !passwd[0]) {	    printf("ERR\n");	    continue;	}	rfc1738_unescape(user);	rfc1738_unescape(passwd);	if (!validUsername(user)) {	    printf("ERR No such user\n");	    continue;	}	tryagain = (ld != NULL);      recover:	if (ld == NULL && persistent)	    ld = open_ldap_connection(ldapServer, port);	if (checkLDAP(ld, user, passwd, ldapServer, port) != 0) {	    if (tryagain && squid_ldap_errno(ld) != LDAP_INVALID_CREDENTIALS) {		tryagain = 0;		ldap_unbind(ld);		ld = NULL;		goto recover;	    }	    printf("ERR %s\n", ldap_err2string(squid_ldap_errno(ld)));	} else {	    printf("OK\n");	}	if (ld && (squid_ldap_errno(ld) != LDAP_SUCCESS && squid_ldap_errno(ld) != LDAP_INVALID_CREDENTIALS)) {	    ldap_unbind(ld);	    ld = NULL;	}    }    if (ld)	ldap_unbind(ld);    return 0;}static 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", (unsigned char) *src++);		escaped += 2;	    }	    break;	default:	    *escaped++ = *src++;	    n++;	    size--;	}    }    *escaped = '\0';    return n;}/* Check the userid & password. * Return 0 on success, 1 on failure */static intcheckLDAP(LDAP * persistent_ld, const char *userid, const char *password, const char *ldapServer, int port){    char dn[1024];    int ret = 0;    LDAP *bind_ld = NULL;    if (!*password) {	/* LDAP can't bind with a blank password. Seen as "anonymous"	 * and always granted access	 */	if (debug)	    fprintf(stderr, "Blank password given\n");	return 1;    }    if (searchfilter) {	char filter[16384];	char escaped_login[1024];	LDAPMessage *res = NULL;	LDAPMessage *entry;	char *searchattr[] =	{(char *)LDAP_NO_ATTRS, NULL};	char *userdn;	int rc;	LDAP *search_ld = persistent_ld;	if (!search_ld)	    search_ld = open_ldap_connection(ldapServer, port);	ldap_escape_value(escaped_login, sizeof(escaped_login), userid);	if (binddn) {	    rc = ldap_simple_bind_s(search_ld, binddn, bindpasswd);	    if (rc != LDAP_SUCCESS) {		fprintf(stderr, PROGRAM_NAME ": WARNING, could not bind to binddn '%s'\n", ldap_err2string(rc));		ret = 1;		goto search_done;	    }	}	snprintf(filter, sizeof(filter), searchfilter, 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);	if (debug)	    fprintf(stderr, "user filter '%s', searchbase '%s'\n", filter, basedn);	rc = ldap_search_s(search_ld, basedn, searchscope, filter, searchattr, 1, &res);	if (rc != LDAP_SUCCESS) {	    if (noreferrals && rc == LDAP_PARTIAL_RESULTS) {		/* Everything is fine. This is expected when referrals		 * are disabled.		 */		if (debug)		    fprintf(stderr, "noreferrals && rc == LDAP_PARTIAL_RESULTS\n");	    } 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		ret = 1;		goto search_done;	    }	}	entry = ldap_first_entry(search_ld, res);	if (!entry) {	    if (debug)		fprintf(stderr, "Ldap search returned nothing\n");	    ret = 1;	    goto search_done;	}	userdn = ldap_get_dn(search_ld, entry);	if (!userdn) {	    fprintf(stderr, PROGRAM_NAME ": ERROR, could not get user DN for '%s'\n", userid);	    ret = 1;	    goto search_done;	}	snprintf(dn, sizeof(dn), "%s", userdn);	squid_ldap_memfree(userdn);	if (ret == 0 && (!binddn || !bind_once || passwdattr)) {	    /* Reuse the search connection for comparing the user password attribute */	    bind_ld = search_ld;	    search_ld = NULL;	}      search_done:	if (res) {	    ldap_msgfree(res);	    res = NULL;	}	if (search_ld && search_ld != persistent_ld) {	    ldap_unbind(search_ld);	    search_ld = NULL;	}	if (ret != 0)	    return ret;    } else {	snprintf(dn, sizeof(dn), "%s=%s,%s", userattr, userid, basedn);    }    if (debug)	fprintf(stderr, "attempting to authenticate user '%s'\n", dn);    if (!bind_ld && !bind_once)	bind_ld = persistent_ld;    if (!bind_ld)	bind_ld = open_ldap_connection(ldapServer, port);    if (passwdattr) {	if (ldap_compare_s(bind_ld, dn, passwdattr, password) != LDAP_COMPARE_TRUE) {	    ret = 1;	}    } else if (ldap_simple_bind_s(bind_ld, dn, password) != LDAP_SUCCESS)	ret = 1;    if (bind_ld != persistent_ld) {	ldap_unbind(bind_ld);	bind_ld = NULL;    }    return ret;}intreadSecret(const char *filename){    char buf[BUFSIZ];    char *e = NULL;    FILE *f;    char *passwd = NULL;    if (!(f = fopen(filename, "r"))) {	fprintf(stderr, PROGRAM_NAME " ERROR: Can not read secret file %s\n", filename);	return 1;    }    if (!fgets(buf, sizeof(buf) - 1, f)) {	fprintf(stderr, PROGRAM_NAME " ERROR: Secret file %s is empty\n", filename);	fclose(f);	return 1;    }    /* strip whitespaces on end */    if ((e = strrchr(buf, '\n')))	*e = 0;    if ((e = strrchr(buf, '\r')))	*e = 0;    passwd = (char *) calloc(sizeof(char), strlen(buf) + 1);    if (!passwd) {	fprintf(stderr, PROGRAM_NAME " ERROR: can not allocate memory\n");	exit(1);    }    strcpy(passwd, buf);    bindpasswd = passwd;    fclose(f);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女一区二区视频| 国产成a人无v码亚洲福利| 中文字幕中文字幕一区二区 | 国产精品久久久久国产精品日日| 精品国产一区二区三区av性色| 日韩久久精品一区| xf在线a精品一区二区视频网站| 日韩欧美亚洲一区二区| 欧美精品一区二区三区很污很色的 | www.日韩精品| 一本一本大道香蕉久在线精品 | 日本成人在线电影网| 久久www免费人成看片高清| 久久91精品国产91久久小草| 国产宾馆实践打屁股91| 色综合一区二区| 91精品国产入口| 国产精品热久久久久夜色精品三区| 欧美激情一区二区三区四区| 亚洲视频资源在线| 亚洲午夜久久久久久久久电影院| 爽好多水快深点欧美视频| 理论电影国产精品| voyeur盗摄精品| 欧美色综合影院| 久久亚洲欧美国产精品乐播| 国产精品不卡一区| 蜜臀国产一区二区三区在线播放| 国产高清在线精品| 精品视频在线免费观看| 久久综合色婷婷| 亚洲影视在线观看| 国产成人无遮挡在线视频| 91麻豆免费在线观看| 久久综合色8888| 香蕉久久夜色精品国产使用方法| 国产一区二区三区不卡在线观看 | 国产精品青草久久| 日本在线观看不卡视频| av一区二区三区在线| 欧美日韩国产大片| ...av二区三区久久精品| 精品在线亚洲视频| 欧美亚洲一区二区在线观看| 欧美激情在线免费观看| 日韩成人av影视| 欧美性大战久久久| 国产精品初高中害羞小美女文| 日本大胆欧美人术艺术动态| 色综合久久99| 亚洲欧洲日韩在线| 国产乱码精品一区二区三 | 精品国产三级a在线观看| 亚洲少妇中出一区| www.在线成人| 中文字幕免费观看一区| 激情图区综合网| 欧美大片在线观看一区二区| 五月婷婷另类国产| 欧美性三三影院| 一区二区三区在线免费观看| 成人福利在线看| 欧美国产激情二区三区 | 亚洲精品乱码久久久久久黑人 | 一区二区三区在线视频播放| 成人午夜电影久久影院| 久久九九全国免费| 国产麻豆欧美日韩一区| 精品国产成人系列| 九色|91porny| 久久精品人人做人人爽人人| 久久精品国产77777蜜臀| 日韩精品一区二区三区四区| 蜜桃久久久久久久| 精品国产免费人成在线观看| 蜜桃一区二区三区在线| 欧美xxxx老人做受| 国产真实乱对白精彩久久| 久久精品亚洲麻豆av一区二区| 国内精品写真在线观看| 国产婷婷色一区二区三区在线| 国产真实乱子伦精品视频| 国产视频一区不卡| 成人av资源网站| 亚洲图片有声小说| 欧美一级片在线看| 国产麻豆精品在线观看| 国产精品久久久久9999吃药| 色一情一乱一乱一91av| 日韩电影在线一区| 国产亚洲精品资源在线26u| 成人性色生活片| 亚洲国产美女搞黄色| 日韩精品中文字幕一区| 成人免费毛片a| 亚洲成人av一区| 久久久久国产精品免费免费搜索| 99久久免费视频.com| 亚洲成人在线观看视频| 精品乱码亚洲一区二区不卡| jlzzjlzz国产精品久久| 丝袜美腿亚洲综合| 国产精品美女久久久久高潮| 欧美日韩免费在线视频| 精品一区二区三区久久| 亚洲女人的天堂| ww亚洲ww在线观看国产| 91论坛在线播放| 国产一区中文字幕| 亚洲午夜免费视频| 国产欧美一区二区三区在线看蜜臀 | 精品国产百合女同互慰| 在线精品观看国产| 国内精品久久久久影院色| 一区二区三区在线观看视频| 精品国产一区二区三区不卡| 欧美在线综合视频| k8久久久一区二区三区| 久久69国产一区二区蜜臀| 亚洲国产三级在线| 中文字幕电影一区| 26uuu久久综合| 欧美日韩精品电影| 91免费版pro下载短视频| 国产精品一线二线三线| 日韩成人一区二区三区在线观看| 亚洲女爱视频在线| 欧美激情在线一区二区三区| 日韩视频123| 91精品国产综合久久精品app| 91麻豆国产精品久久| 不卡在线观看av| 成人免费视频视频| 国产精品99久久久久久久女警| 日本欧美在线看| 午夜精品国产更新| 亚洲高清免费在线| 依依成人综合视频| 亚洲精品va在线观看| 亚洲视频你懂的| 亚洲女人****多毛耸耸8| 中文字幕一区三区| ㊣最新国产の精品bt伙计久久| 久久久五月婷婷| 精品国产精品一区二区夜夜嗨| 欧美高清hd18日本| 777奇米四色成人影色区| 欧美日韩国产美女| 日韩亚洲欧美在线观看| 欧美一级理论片| 欧美一卡二卡三卡| 精品国产乱码久久久久久浪潮| 欧美日韩国产欧美日美国产精品| 欧美在线短视频| 91精品免费在线| 精品久久一区二区| 久久久国产午夜精品| 国产精品美女一区二区在线观看| 日本一区免费视频| 1区2区3区精品视频| 亚洲免费av在线| 亚洲成人福利片| 精品一区二区三区在线播放视频| 国产专区欧美精品| av色综合久久天堂av综合| 91蝌蚪porny成人天涯| 欧美日韩在线精品一区二区三区激情| 在线免费观看一区| 欧美一区二区黄| 欧美极品xxx| 亚洲高清免费视频| 久久国产生活片100| 成人影视亚洲图片在线| 91天堂素人约啪| 欧美一区二区三区在| 国产蜜臀97一区二区三区| 亚洲激情五月婷婷| 久久精品理论片| 一本色道久久综合精品竹菊| 欧美日韩国产不卡| 欧美激情一二三区| 亚洲h动漫在线| 成人做爰69片免费看网站| 欧美日韩国产精选| 国产精品人妖ts系列视频| 亚洲国产精品一区二区www在线| 精品在线播放免费| 欧美亚洲综合色| 国产网站一区二区三区| 香蕉av福利精品导航| 国产精品一级二级三级| 欧美日韩亚洲综合一区二区三区| 久久老女人爱爱| 亚洲电影激情视频网站| 成人激情av网| 久久久综合视频| 男人的天堂亚洲一区| 在线免费观看不卡av| 国产欧美一区二区三区鸳鸯浴| 日韩在线a电影|