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

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

?? auth_digest.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 4 頁
字號:
		digest_request->nc, digest_request->cnonce, digest_request->qop,		RequestMethodStr[METHOD_GET], digest_request->uri, HA2, Response);	    if (strcasecmp(digest_request->response, Response)) {		digest_request->flags.credentials_ok = 3;		safe_free(auth_user_request->message);		auth_user_request->message = xstrdup("Incorrect password");		return;	    } else {		const char *useragent = httpHeaderGetStr(&request->header, HDR_USER_AGENT);		static struct in_addr last_broken_addr;		static int seen_broken_client = 0;		if (!seen_broken_client) {		    last_broken_addr = no_addr;		    seen_broken_client = 1;		}		if (memcmp(&last_broken_addr, &request->client_addr, sizeof(last_broken_addr)) != 0) {		    debug(29, 1) ("\nDigest POST bug detected from %s using '%s'. Please upgrade browser. See Bug #630 for details.\n", inet_ntoa(request->client_addr), useragent ? useragent : "-");		    last_broken_addr = request->client_addr;		}	    }	} else {	    digest_request->flags.credentials_ok = 3;	    safe_free(auth_user_request->message);	    auth_user_request->message = xstrdup("Incorrect password");	    return;	}    }    /* check for stale nonce */    if (!authDigestNonceIsValid(digest_request->nonce, digest_request->nc)) {	debug(29, 3) ("authenticateDigestAuthenticateuser: user '%s' validated OK but nonce stale\n",	    digest_user->username);	digest_request->flags.nonce_stale = 1;	digest_request->flags.credentials_ok = 3;	safe_free(auth_user_request->message);	auth_user_request->message = xstrdup("Stale nonce");	return;    }    /* password was checked and did match */    digest_request->flags.credentials_ok = 1;    debug(29, 4) ("authenticateDigestAuthenticateuser: user '%s' validated OK\n",	digest_user->username);    /* auth_user is now linked, we reset these values     * after external auth occurs anyway */    auth_user->expiretime = current_time.tv_sec;    return;}static intauthenticateDigestDirection(auth_user_request_t * auth_user_request){    digest_request_h *digest_request = auth_user_request->scheme_data;    if (!digest_request)	return -2;    switch (digest_request->flags.credentials_ok) {    case 0:			/* not checked */	return -1;    case 1:			/* checked & ok */	return 0;    case 2:			/* partway through checking. */	return -1;    case 3:			/* authentication process failed. */	if (digest_request->flags.nonce_stale)	    /* nonce is stale, send new challenge */	    return 1;	return -2;    }    return -2;}/* add the [proxy]authorisation header */static voidauthDigestAddHeader(auth_user_request_t * auth_user_request, HttpReply * rep, int accel){    int type;    digest_request_h *digest_request;    if (!auth_user_request)	return;    digest_request = auth_user_request->scheme_data;    if (!digest_request)	return;    /* don't add to authentication error pages */    if ((!accel && rep->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED)	|| (accel && rep->sline.status == HTTP_UNAUTHORIZED))	return;    type = accel ? HDR_AUTHENTICATION_INFO : HDR_PROXY_AUTHENTICATION_INFO;#if WAITING_FOR_TE    /* test for http/1.1 transfer chunked encoding */    if (chunkedtest)	return;#endif    if ((digestConfig->authenticate) && authDigestNonceLastRequest(digest_request->nonce)) {	digest_request->flags.authinfo_sent = 1;	debug(29, 9) ("authDigestAddHead: Sending type:%d header: 'nextnonce=\"%s\"", type, authenticateDigestNonceNonceb64(digest_request->nonce));	httpHeaderPutStrf(&rep->header, type, "nextnonce=\"%s\"", authenticateDigestNonceNonceb64(digest_request->nonce));    }}#if WAITING_FOR_TE/* add the [proxy]authorisation header */static voidauthDigestAddTrailer(auth_user_request_t * auth_user_request, HttpReply * rep, int accel){    int type;    digest_request_h *digest_request;    if (!auth_user_request)	return;    digest_request = auth_user_request->scheme_data;    /* has the header already been send? */    if (digest_request->flags.authinfo_sent)	return;    /* don't add to authentication error pages */    if ((!accel && rep->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED)	|| (accel && rep->sline.status == HTTP_UNAUTHORIZED))	return;    type = accel ? HDR_AUTHENTICATION_INFO : HDR_PROXY_AUTHENTICATION_INFO;    if ((digestConfig->authenticate) && authDigestNonceLastRequest(digest_request->nonce)) {	debug(29, 9) ("authDigestAddTrailer: Sending type:%d header: 'nextnonce=\"%s\"", type, authenticateDigestNonceNonceb64(digest_request->nonce));	httpTrailerPutStrf(&rep->header, type, "nextnonce=\"%s\"", authenticateDigestNonceNonceb64(digest_request->nonce));    }}#endif/* add the [www-|Proxy-]authenticate header on a 407 or 401 reply */voidauthenticateDigestFixHeader(auth_user_request_t * auth_user_request, HttpReply * rep, http_hdr_type type, request_t * request){    digest_request_h *digest_request;    int stale = 0;    digest_nonce_h *nonce = authenticateDigestNonceNew();    if (auth_user_request && auth_user_request->scheme_data) {	digest_request = auth_user_request->scheme_data;	stale = digest_request->flags.nonce_stale;    }    if (digestConfig->authenticate) {	debug(29, 9) ("authenticateFixHeader: Sending type:%d header: 'Digest realm=\"%s\", nonce=\"%s\", qop=\"%s\", stale=%s\n", type, digestConfig->digestAuthRealm, authenticateDigestNonceNonceb64(nonce), QOP_AUTH, stale ? "true" : "false");	/* in the future, for WWW auth we may want to support the domain entry */	httpHeaderPutStrf(&rep->header, type, "Digest realm=\"%s\", nonce=\"%s\", qop=\"%s\", stale=%s", digestConfig->digestAuthRealm, authenticateDigestNonceNonceb64(nonce), QOP_AUTH, stale ? "true" : "false");    }}static voidauthenticateDigestUserFree(auth_user_t * auth_user){    digest_user_h *digest_user = auth_user->scheme_data;    dlink_node *link, *tmplink;    debug(29, 9) ("authenticateDigestFreeUser: Clearing Digest scheme data\n");    if (!digest_user)	return;    safe_free(digest_user->username);    link = digest_user->nonces.head;    while (link) {	tmplink = link;	link = link->next;	dlinkDelete(tmplink, &digest_user->nonces);	authDigestNoncePurge(tmplink->data);	authDigestNonceUnlink(tmplink->data);	dlinkNodeDelete(tmplink);    }    memPoolFree(digest_user_pool, auth_user->scheme_data);    auth_user->scheme_data = NULL;}static voidauthenticateDigestHandleReply(void *data, char *reply){    authenticateStateData *r = data;    auth_user_request_t *auth_user_request;    digest_request_h *digest_request;    digest_user_h *digest_user;    int valid;    char *t = NULL;    debug(29, 9) ("authenticateDigestHandleReply: {%s}\n", reply ? reply : "<NULL>");    if (reply) {	if ((t = strchr(reply, ' ')))	    *t++ = '\0';	if (*reply == '\0' || *reply == '\n')	    reply = NULL;    }    assert(r->auth_user_request != NULL);    auth_user_request = r->auth_user_request;    assert(auth_user_request->scheme_data != NULL);    digest_request = auth_user_request->scheme_data;    digest_user = auth_user_request->auth_user->scheme_data;    if (reply && (strncasecmp(reply, "ERR", 3) == 0)) {	digest_request->flags.credentials_ok = 3;	safe_free(auth_user_request->message);	if (t && *t)	    auth_user_request->message = xstrdup(t);    } else if (reply) {	CvtBin(reply, digest_user->HA1);	digest_user->HA1created = 1;    }    valid = cbdataValid(r->data);    if (valid)	r->handler(r->data, NULL);    cbdataUnlock(r->data);    authenticateStateFree(r);}/* Initialize helpers and the like for this auth scheme. Called AFTER parsing the * config file */static voidauthDigestInit(authScheme * scheme){    static int init = 0;    if (digestConfig->authenticate) {	authDigestUserSetup();	authDigestRequestSetup();	authenticateDigestNonceSetup();	authdigest_initialised = 1;	if (digestauthenticators == NULL)	    digestauthenticators = helperCreate("digestauthenticator");	digestauthenticators->cmdline = digestConfig->authenticate;	digestauthenticators->n_to_start = digestConfig->authenticateChildren;	digestauthenticators->concurrency = digestConfig->authenticateConcurrency;	digestauthenticators->ipc_type = IPC_STREAM;	helperOpenServers(digestauthenticators);	if (!init) {	    cachemgrRegister("digestauthenticator",		"Digest User Authenticator Stats",		authenticateDigestStats, 0, 1);	    init++;	}	CBDATA_INIT_TYPE(authenticateStateData);    }}/* free any allocated configuration details */voidauthDigestFreeConfig(authScheme * scheme){    if (digestConfig == NULL)	return;    assert(digestConfig == scheme->scheme_data);    if (digestConfig->authenticate)	wordlistDestroy(&digestConfig->authenticate);    if (digestConfig->digestAuthRealm)	safe_free(digestConfig->digestAuthRealm);    xfree(digestConfig);    digestConfig = NULL;}static voidauthDigestParse(authScheme * scheme, int n_configured, char *param_str){    if (scheme->scheme_data == NULL) {	assert(digestConfig == NULL);	/* this is the first param to be found */	scheme->scheme_data = xmalloc(sizeof(auth_digest_config));	memset(scheme->scheme_data, 0, sizeof(auth_digest_config));	digestConfig = scheme->scheme_data;	digestConfig->authenticateChildren = 5;	digestConfig->digestAuthRealm = xstrdup("Squid proxy-caching web server");	/* 5 minutes */	digestConfig->nonceGCInterval = 5 * 60;	/* 30 minutes */	digestConfig->noncemaxduration = 30 * 60;	/* 50 requests */	digestConfig->noncemaxuses = 50;	/* Not strict nonce count behaviour */	digestConfig->NonceStrictness = 0;	/* Verify nonce count */	digestConfig->CheckNonceCount = 1;	digestConfig->PostWorkaround = 0;    }    digestConfig = scheme->scheme_data;    if (strcasecmp(param_str, "program") == 0) {	if (digestConfig->authenticate)	    wordlistDestroy(&digestConfig->authenticate);	parse_wordlist(&digestConfig->authenticate);    } else if (strcasecmp(param_str, "children") == 0) {	parse_int(&digestConfig->authenticateChildren);    } else if (strcasecmp(param_str, "concurrency") == 0) {	parse_int(&digestConfig->authenticateConcurrency);    } else if (strcasecmp(param_str, "realm") == 0) {	parse_eol(&digestConfig->digestAuthRealm);    } else if (strcasecmp(param_str, "nonce_garbage_interval") == 0) {	parse_time_t(&digestConfig->nonceGCInterval);    } else if (strcasecmp(param_str, "nonce_max_duration") == 0) {	parse_time_t(&digestConfig->noncemaxduration);    } else if (strcasecmp(param_str, "nonce_max_count") == 0) {	parse_int(&digestConfig->noncemaxuses);    } else if (strcasecmp(param_str, "nonce_strictness") == 0) {	parse_onoff(&digestConfig->NonceStrictness);    } else if (strcasecmp(param_str, "check_nonce_count") == 0) {	parse_onoff(&digestConfig->CheckNonceCount);    } else if (strcasecmp(param_str, "post_workaround") == 0) {	parse_onoff(&digestConfig->PostWorkaround);    } else {	debug(29, 0) ("unrecognised digest auth scheme parameter '%s'\n", param_str);    }}static voidauthDigestCheckConfig(authScheme * scheme){    auth_digest_config *config = scheme->scheme_data;    requirePathnameExists("authparam digest program", config->authenticate->key);}static voidauthenticateDigestStats(StoreEntry * sentry){    storeAppendPrintf(sentry, "Digest Authenticator Statistics:\n");    helperStats(sentry, digestauthenticators);}/* NonceUserUnlink: remove the reference to auth_user and unlink the node from the list */static voidauthDigestNonceUserUnlink(digest_nonce_h * nonce){    digest_user_h *digest_user;    dlink_node *link, *tmplink;    if (!nonce)	return;    if (!nonce->auth_user)	return;    digest_user = nonce->auth_user->scheme_data;    /* unlink from the user list. Yes we're crossing structures but this is the only      * time this code is needed     */    link = digest_user->nonces.head;    while (link) {	tmplink = link;	link = link->next;	if (tmplink->data == nonce) {	    dlinkDelete(tmplink, &digest_user->nonces);	    authDigestNonceUnlink(tmplink->data);	    dlinkNodeDelete(tmplink);	    link = NULL;	}    }    /* this reference to auth_user was not locked because freeeing the auth_user frees     * the nonce too.      */    nonce->auth_user = NULL;}/* authDigestUserLinkNonce: add a nonce to a given user's struct */static voidauthDigestUserLinkNonce(auth_user_t * auth_user, digest_nonce_h * nonce){    dlink_node *node;    digest_user_h *digest_user;    if (!auth_user || !nonce)	return;    if (!auth_user->scheme_data)	return;    digest_user = auth_user->scheme_data;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美主播一区二区三区| 国产视频一区在线观看| 欧美日韩一级二级| 色先锋aa成人| 日本黄色一区二区| 在线观看亚洲专区| 欧美性猛交xxxxxxxx| 欧美视频一区二| 欧美男男青年gay1069videost | 国产精品一级在线| 国产一区激情在线| 国产成人8x视频一区二区| 国产成人精品免费在线| 成人av网站在线| 91丝袜美腿高跟国产极品老师| 色哟哟一区二区| 欧美猛男gaygay网站| 欧美一区二区三区爱爱| 精品国产免费视频| 国产日产亚洲精品系列| 亚洲欧洲国产日本综合| 亚洲综合色噜噜狠狠| 日本特黄久久久高潮| 国产一区二区久久| av激情亚洲男人天堂| 欧美亚洲国产一区二区三区| 欧美一二三在线| 欧美国产精品中文字幕| 亚洲精品日韩一| 日本亚洲免费观看| 国产精品911| 91福利视频在线| 欧美一级片在线观看| 国产拍欧美日韩视频二区| 亚洲美腿欧美偷拍| 免费成人美女在线观看.| 成人性视频网站| 欧美日韩午夜在线视频| 久久亚洲影视婷婷| 亚洲激情校园春色| 久久99国产精品久久99| www.日韩在线| 91精品国产高清一区二区三区蜜臀| 久久亚洲影视婷婷| 亚洲国产成人91porn| 国产aⅴ综合色| 欧美三片在线视频观看| 久久综合精品国产一区二区三区 | 亚洲一区在线观看免费 | 欧美一区二区性放荡片| 国产日本一区二区| 日韩精品电影在线观看| 不卡的av电影| 欧美电影免费观看高清完整版| 最新热久久免费视频| 日产精品久久久久久久性色| 99久久精品国产网站| 精品久久人人做人人爰| 亚洲最新视频在线观看| 国产69精品久久久久毛片 | 亚洲少妇30p| 国产麻豆精品视频| 7777精品伊人久久久大香线蕉| 国产精品电影一区二区| 精品一区二区三区在线观看国产| 日本高清不卡视频| 欧美国产精品一区二区| 日韩高清在线一区| 欧美三级一区二区| 中文字幕在线免费不卡| 韩日av一区二区| 91精品国模一区二区三区| 亚洲精品欧美在线| 成人国产在线观看| 久久天天做天天爱综合色| 日韩一区欧美二区| 欧美午夜片在线观看| 中文字幕一区二区三区在线不卡 | 成人深夜在线观看| 欧美精品一区二区精品网| 亚洲一卡二卡三卡四卡| 91丨porny丨国产| 国产精品日产欧美久久久久| 国产麻豆精品视频| 精品福利一二区| 麻豆成人综合网| 欧美一级高清片| 日韩精品视频网站| 6080日韩午夜伦伦午夜伦| 亚洲最新视频在线观看| 色琪琪一区二区三区亚洲区| 亚洲女人小视频在线观看| 99在线精品视频| 亚洲欧洲在线观看av| 成人精品国产一区二区4080| 国产午夜久久久久| 懂色中文一区二区在线播放| 久久精品夜色噜噜亚洲a∨| 老司机精品视频导航| 精品欧美黑人一区二区三区| 麻豆中文一区二区| 精品乱人伦小说| 国产精品一区二区在线观看网站| 久久综合久久综合久久综合| 久久成人久久鬼色| 精品av综合导航| 国产九九视频一区二区三区| 久久久久青草大香线综合精品| 国产自产高清不卡| 国产清纯在线一区二区www| 成人午夜大片免费观看| 日韩一区在线免费观看| 在线精品视频一区二区| 亚洲成av人片在线观看| 日韩欧美在线一区二区三区| 国模一区二区三区白浆| 中文字幕欧美激情一区| 99精品国产99久久久久久白柏| 亚洲色欲色欲www在线观看| 欧美在线啊v一区| 日韩 欧美一区二区三区| 亚洲精品一区在线观看| 成人小视频免费观看| 亚洲精品视频在线看| 精品视频1区2区| 久久精品国产亚洲aⅴ| 国产女人水真多18毛片18精品视频| 成人va在线观看| 亚洲国产精品久久艾草纯爱| 精品少妇一区二区| 成人av免费网站| 五月天国产精品| 久久精品一区四区| 91亚洲精品久久久蜜桃| 天天影视网天天综合色在线播放| 日韩欧美中文字幕制服| 国产sm精品调教视频网站| 亚洲影院久久精品| 久久综合久久综合亚洲| 一道本成人在线| 久久精品av麻豆的观看方式| 国产免费观看久久| 欧美精选午夜久久久乱码6080| 极品美女销魂一区二区三区| 亚洲婷婷综合色高清在线| 欧美精品18+| 成人黄页毛片网站| 日本aⅴ免费视频一区二区三区| 欧美国产综合色视频| 欧美久久久久久久久| 成人h动漫精品一区二| 日韩精品午夜视频| 亚洲欧洲av在线| 精品国产免费人成电影在线观看四季| 成人午夜av电影| 麻豆精品一区二区综合av| 亚洲人精品一区| 精品国内二区三区| 欧美主播一区二区三区| 福利一区在线观看| 青青草成人在线观看| 亚洲女同一区二区| 国产午夜一区二区三区| 91精品国产综合久久婷婷香蕉| 99久久久久免费精品国产 | 欧美亚洲国产一区在线观看网站 | 欧美日韩国产大片| a4yy欧美一区二区三区| 麻豆精品一二三| 亚洲午夜羞羞片| 中文字幕日韩一区二区| 26uuu精品一区二区| 欧美久久久久久久久中文字幕| 99国内精品久久| 岛国av在线一区| 久久99精品久久久久久| 午夜婷婷国产麻豆精品| 亚洲三级免费观看| 国产精品毛片无遮挡高清| 精品黑人一区二区三区久久| 在线播放/欧美激情| 欧美影片第一页| 色8久久人人97超碰香蕉987| 成人av小说网| 成人精品国产福利| 国产激情视频一区二区三区欧美 | 亚洲成人福利片| 亚洲精品中文在线观看| 国产精品成人免费精品自在线观看 | 欧美一区日韩一区| 精品视频1区2区| 欧美日韩视频一区二区| 欧美午夜不卡视频| 在线视频你懂得一区| 97aⅴ精品视频一二三区| eeuss国产一区二区三区| 粉嫩欧美一区二区三区高清影视| 国内精品嫩模私拍在线| 韩国女主播成人在线| 激情偷乱视频一区二区三区|