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

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

?? auth_digest.c

?? 代理服務器 squid-2.6.STABLE16
?? C
?? 第 1 頁 / 共 4 頁
字號:
    if ((digestConfig->NonceStrictness && intnc != nonce->nc + 1) ||	intnc < nonce->nc + 1) {	debug(29, 4) ("authDigestNonceIsValid: Nonce count doesn't match\n");	nonce->flags.valid = 0;	return 0;    }    /* seems ok */    /* increment the nonce count - we've already checked that intnc is a     *  valid representation for us, so we don't need the test here.     */    nonce->nc = intnc;    return -1;}static intauthDigestNonceIsStale(digest_nonce_h * nonce){    /* do we have a nonce ? */    if (!nonce)	return -1;    /* has it's max duration expired? */    if (nonce->noncedata.creationtime + digestConfig->noncemaxduration < current_time.tv_sec) {	debug(29, 4) ("authDigestNonceIsStale: Nonce is too old. %ld %d %ld\n", (long int) nonce->noncedata.creationtime, (int) digestConfig->noncemaxduration, (long int) current_time.tv_sec);	nonce->flags.valid = 0;	return -1;    }    if (nonce->nc > 99999998) {	debug(29, 4) ("authDigestNonceIsStale: Nonce count overflow\n");	nonce->flags.valid = 0;	return -1;    }    if (nonce->nc > digestConfig->noncemaxuses) {	debug(29, 4) ("authDigestNoncelastRequest: Nonce count over user limit\n");	nonce->flags.valid = 0;	return -1;    }    /* seems ok */    return 0;}/* return -1 if the digest will be stale on the next request */static intauthDigestNonceLastRequest(digest_nonce_h * nonce){    if (!nonce)	return -1;    if (nonce->nc == 99999997) {	debug(29, 4) ("authDigestNoncelastRequest: Nonce count about to overflow\n");	return -1;    }    if (nonce->nc >= digestConfig->noncemaxuses - 1) {	debug(29, 4) ("authDigestNoncelastRequest: Nonce count about to hit user limit\n");	return -1;    }    /* and other tests are possible. */    return 0;}static voidauthDigestNoncePurge(digest_nonce_h * nonce){    if (!nonce)	return;    if (!nonce->flags.incache)	return;    hash_remove_link(digest_nonce_cache, &nonce->hash);    nonce->flags.incache = 0;    /* the cache's link */    authDigestNonceUnlink(nonce);}/* USER related functions */#if NOT_USEDstatic intauthDigestUsercmpname(digest_user_h * u1, digest_user_h * u2){    return strcmp(u1->username, u2->username);}#endifstatic auth_user_t *authDigestUserFindUsername(const char *username){    auth_user_hash_pointer *usernamehash;    auth_user_t *auth_user;    debug(29, 9) ("authDigestUserFindUsername: Looking for user '%s'\n", username);    if (username && (usernamehash = hash_lookup(proxy_auth_username_cache, username))) {	while ((usernamehash->auth_user->auth_type != AUTH_DIGEST) &&	    (usernamehash->next))	    usernamehash = usernamehash->next;	auth_user = NULL;	if (usernamehash->auth_user->auth_type == AUTH_DIGEST) {	    auth_user = usernamehash->auth_user;	}	return auth_user;    }    return NULL;}static digest_user_h *authDigestUserNew(void){    return memPoolAlloc(digest_user_pool);}static voidauthDigestUserSetup(void){    if (!digest_user_pool)	digest_user_pool = memPoolCreate("Digest Scheme User Data", sizeof(digest_user_h));}static voidauthDigestUserShutdown(void){    /*     * Future work: the auth framework could flush it's cache      */    auth_user_hash_pointer *usernamehash;    auth_user_t *auth_user;    hash_first(proxy_auth_username_cache);    while ((usernamehash = ((auth_user_hash_pointer *) hash_next(proxy_auth_username_cache)))) {	auth_user = usernamehash->auth_user;	if (authscheme_list[auth_user->auth_module - 1].typestr &&	    strcmp(authscheme_list[auth_user->auth_module - 1].typestr, "digest") == 0)	    /* it's digest */	    authenticateAuthUserUnlock(auth_user);    }    if (digest_user_pool) {	assert(memPoolInUseCount(digest_user_pool) == 0);	memPoolDestroy(digest_user_pool);	digest_user_pool = NULL;    }}/* request related functions *//* delete the digest reuqest structure. Does NOT delete related structures */static voidauthDigestRequestDelete(digest_request_h * digest_request){    if (digest_request->nonceb64)	xfree(digest_request->nonceb64);    if (digest_request->cnonce)	xfree(digest_request->cnonce);    if (digest_request->realm)	xfree(digest_request->realm);    if (digest_request->pszPass)	xfree(digest_request->pszPass);    if (digest_request->algorithm)	xfree(digest_request->algorithm);    if (digest_request->pszMethod)	xfree(digest_request->pszMethod);    if (digest_request->qop)	xfree(digest_request->qop);    if (digest_request->uri)	xfree(digest_request->uri);    if (digest_request->response)	xfree(digest_request->response);    if (digest_request->nonce)	authDigestNonceUnlink(digest_request->nonce);    memPoolFree(digest_request_pool, digest_request);}static voidauthDigestAURequestFree(auth_user_request_t * auth_user_request){    if (auth_user_request->scheme_data != NULL) {	authDigestRequestDelete((digest_request_h *) auth_user_request->scheme_data);	auth_user_request->scheme_data = NULL;    }}static digest_request_h *authDigestRequestNew(void){    digest_request_h *tmp;    tmp = memPoolAlloc(digest_request_pool);    assert(tmp != NULL);    return tmp;}static voidauthDigestRequestSetup(void){    if (!digest_request_pool)	digest_request_pool = memPoolCreate("Digest Scheme Request Data", sizeof(digest_request_h));}static voidauthDigestRequestShutdown(void){    /* No requests should be in progress when we get here */    if (digest_request_pool) {	assert(memPoolInUseCount(digest_request_pool) == 0);	memPoolDestroy(digest_request_pool);	digest_request_pool = NULL;    }}static voidauthDigestDone(void){    if (digestauthenticators)	helperShutdown(digestauthenticators);    authdigest_initialised = 0;    if (!shutting_down) {	authenticateDigestNonceReconfigure();	return;    }    if (digestauthenticators) {	helperFree(digestauthenticators);	digestauthenticators = NULL;    }    authDigestRequestShutdown();    authDigestUserShutdown();    authenticateDigestNonceShutdown();    debug(29, 2) ("authenticateDigestDone: Digest authentication shut down.\n");}static voidauthDigestCfgDump(StoreEntry * entry, const char *name, authScheme * scheme){    auth_digest_config *config = scheme->scheme_data;    wordlist *list = config->authenticate;    debug(29, 9) ("authDigestCfgDump: Dumping configuration\n");    storeAppendPrintf(entry, "%s %s", name, "digest");    while (list != NULL) {	storeAppendPrintf(entry, " %s", list->key);	list = list->next;    }    storeAppendPrintf(entry, "\n%s %s realm %s\n", name, "digest", config->digestAuthRealm);    storeAppendPrintf(entry, "%s %s children %d\n", name, "digest", config->authenticateChildren);    storeAppendPrintf(entry, "%s %s concurrency %d\n", name, "digest", config->authenticateConcurrency);    storeAppendPrintf(entry, "%s %s nonce_max_count %d\n", name, "digest", config->noncemaxuses);    storeAppendPrintf(entry, "%s %s nonce_max_duration %d seconds\n", name, "digest", (int) config->noncemaxduration);    storeAppendPrintf(entry, "%s %s nonce_garbage_interval %d seconds\n", name, "digest", (int) config->nonceGCInterval);}voidauthSchemeSetup_digest(authscheme_entry_t * authscheme){    assert(!authdigest_initialised);    authscheme->Active = authenticateDigestActive;    authscheme->configured = authDigestConfigured;    authscheme->parse = authDigestParse;    authscheme->checkconfig = authDigestCheckConfig;    authscheme->freeconfig = authDigestFreeConfig;    authscheme->dump = authDigestCfgDump;    authscheme->init = authDigestInit;    authscheme->authAuthenticate = authenticateDigestAuthenticateUser;    authscheme->authenticated = authDigestAuthenticated;    authscheme->authFixHeader = authenticateDigestFixHeader;    authscheme->FreeUser = authenticateDigestUserFree;    authscheme->AddHeader = authDigestAddHeader;#if WAITING_FOR_TE    authscheme->AddTrailer = authDigestAddTrailer;#endif    authscheme->authStart = authenticateDigestStart;    authscheme->authStats = authenticateDigestStats;    authscheme->authUserUsername = authenticateDigestUsername;    authscheme->getdirection = authenticateDigestDirection;    authscheme->oncloseconnection = NULL;    authscheme->decodeauth = authenticateDigestDecodeAuth;    authscheme->donefunc = authDigestDone;    authscheme->requestFree = authDigestAURequestFree;    authscheme->authConnLastHeader = NULL;}static intauthenticateDigestActive(void){    return (authdigest_initialised == 1) ? 1 : 0;}static intauthDigestConfigured(void){    if ((digestConfig != NULL) && (digestConfig->authenticate != NULL) &&	(digestConfig->authenticateChildren != 0) &&	(digestConfig->digestAuthRealm != NULL) && (digestConfig->noncemaxduration > -1))	return 1;    return 0;}static intauthDigestAuthenticated(auth_user_request_t * auth_user_request){    digest_request_h *request = auth_user_request->scheme_data;    assert(request);    if (request->flags.credentials_ok == 1)	return 1;    else	return 0;}/* log a digest user in */static voidauthenticateDigestAuthenticateUser(auth_user_request_t * auth_user_request, request_t * request, ConnStateData * conn, http_hdr_type type){    auth_user_t *auth_user;    digest_request_h *digest_request;    digest_user_h *digest_user;    HASHHEX SESSIONKEY;    HASHHEX HA2 = "";    HASHHEX Response;    assert(auth_user_request->auth_user != NULL);    auth_user = auth_user_request->auth_user;    assert(auth_user->scheme_data != NULL);    digest_user = auth_user->scheme_data;    digest_request = auth_user_request->scheme_data;    assert(auth_user_request->scheme_data != NULL);    /* if the check has corrupted the user, just return */    if (digest_request->flags.credentials_ok == 3) {	return;    }    /* do we have the HA1 */    if (!digest_user->HA1created) {	digest_request->flags.credentials_ok = 2;	return;    }    if (digest_request->nonce == NULL) {	/* this isn't a nonce we issued */	digest_request->flags.credentials_ok = 3;	return;    }    DigestCalcHA1(digest_request->algorithm, NULL, NULL, NULL,	authenticateDigestNonceNonceb64(digest_request->nonce),	digest_request->cnonce,	digest_user->HA1, SESSIONKEY);    DigestCalcResponse(SESSIONKEY, authenticateDigestNonceNonceb64(digest_request->nonce),	digest_request->nc, digest_request->cnonce, digest_request->qop,	RequestMethodStr[request->method], digest_request->uri, HA2, Response);    debug(29, 9) ("\nResponse = '%s'\n"	"squid is = '%s'\n", digest_request->response, Response);    if (strcasecmp(digest_request->response, Response) != 0) {	if (!digest_request->flags.helper_queried) {	    /* Query the helper in case the password has changed */	    digest_request->flags.helper_queried = 1;	    digest_request->flags.credentials_ok = 2;	    return;	}	if (digestConfig->PostWorkaround && request->method != METHOD_GET) {	    /* Ugly workaround for certain very broken browsers using the	     * wrong method to calculate the request-digest on POST request.	     * This should be deleted once Digest authentication becomes more	     * widespread and such broken browsers no longer are commonly	     * used.	     */	    DigestCalcResponse(SESSIONKEY, authenticateDigestNonceNonceb64(digest_request->nonce),

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产网站一区二区三区| 亚洲欧洲精品一区二区精品久久久| 久久精品欧美日韩| 国产精品一区二区久久精品爱涩| 欧美性猛片xxxx免费看久爱 | 国产91精品免费| 亚洲欧美日韩在线| 欧美日产在线观看| 日本美女一区二区| 在线不卡中文字幕| 国产一二精品视频| 中文字幕亚洲成人| 欧美一级二级三级蜜桃| 亚洲一区二区在线免费观看视频 | 亚洲第一搞黄网站| 日韩视频免费观看高清完整版在线观看| 日韩电影在线免费| 国产性色一区二区| 日本乱人伦aⅴ精品| 成人avav影音| 日韩福利视频网| 国产精品麻豆久久久| 欧美色图一区二区三区| 激情小说欧美图片| 一区二区高清在线| 国产女同性恋一区二区| 粉嫩高潮美女一区二区三区| 在线欧美小视频| 国产一区二区三区四区在线观看| 国产精品国产三级国产有无不卡| 欧美影视一区二区三区| 国产成人亚洲综合a∨婷婷图片| 一区二区国产视频| 国产精品女主播av| 久久只精品国产| 91精品欧美一区二区三区综合在| 国产成人精品www牛牛影视| 免费看精品久久片| 香港成人在线视频| 樱桃国产成人精品视频| 亚洲h在线观看| 欧美日韩一区久久| 在线观看国产91| 色狠狠av一区二区三区| 99久久婷婷国产综合精品| 国产一区二区网址| 国产一区二区伦理| 成人一区二区三区在线观看| 国产91对白在线观看九色| 国产成人亚洲综合a∨婷婷| 国产成人在线电影| 成人av高清在线| 一本久道久久综合中文字幕 | 国产精华液一区二区三区| 另类小说综合欧美亚洲| 国产精品一级二级三级| 成人免费视频一区| 精品视频一区二区不卡| 91精品免费在线观看| 欧美一区二区福利视频| 久久久一区二区三区| 国产精品狼人久久影院观看方式| 中文字幕在线观看不卡视频| 亚洲免费观看在线视频| 亚洲va韩国va欧美va| 韩国视频一区二区| 92国产精品观看| 日本二三区不卡| 精品第一国产综合精品aⅴ| 国产精品乱人伦| 免费欧美在线视频| 91丨porny丨户外露出| 亚洲第一主播视频| 555夜色666亚洲国产免| 中文在线一区二区| 国产一区二区三区美女| 欧美一卡在线观看| 日韩欧美一区二区三区在线| 91国产精品成人| 国产成人午夜精品影院观看视频 | 国产ts人妖一区二区| 2014亚洲片线观看视频免费| 韩国成人福利片在线播放| 国产拍揄自揄精品视频麻豆| 不卡的av中国片| 午夜婷婷国产麻豆精品| 99久久精品国产观看| 久久综合中文字幕| 欧美a级一区二区| 欧美美女视频在线观看| 国产精品―色哟哟| 粉嫩一区二区三区性色av| 日韩区在线观看| 日日夜夜精品视频天天综合网| 99综合电影在线视频| 久久中文娱乐网| 久久国产精品一区二区| 日韩欧美国产不卡| 奇米色一区二区| 日韩一区二区视频在线观看| 奇米精品一区二区三区在线观看一 | 亚洲综合色自拍一区| 欧美亚洲国产一卡| 亚洲综合在线第一页| 在线观看一区日韩| 亚洲国产精品视频| 91精品国产综合久久久久| 亚洲成av人片| 欧美成人三级在线| 丁香六月综合激情| 亚洲午夜在线视频| 欧美日韩一区二区三区在线看| 美国一区二区三区在线播放| 最新日韩av在线| 精品欧美一区二区在线观看| 成人免费看视频| 天天色天天操综合| 亚洲天堂中文字幕| www久久精品| 欧美一区二区三区在线观看视频| 国产在线观看免费一区| 欧美aaa在线| 亚洲精品乱码久久久久久黑人 | 日韩一区二区三| 欧美亚洲愉拍一区二区| 大美女一区二区三区| 国产中文字幕精品| 美女看a上一区| 日本vs亚洲vs韩国一区三区| 亚洲午夜久久久久中文字幕久| 国产精品色在线观看| 国产色产综合产在线视频| 亚洲精品一区二区三区影院| 欧美精品777| 在线中文字幕不卡| 欧美日韩激情一区二区三区| 欧美在线观看一区二区| 在线观看免费一区| 欧美日韩国产一级片| 欧美日韩一二三区| 91精品国产黑色紧身裤美女| 欧美日韩国产综合久久| 欧美日韩国产精品成人| 欧美成人精品1314www| www国产亚洲精品久久麻豆| 中国色在线观看另类| 欧美日韩成人在线| 日本视频在线一区| 国产精品久久久久久久久免费桃花| 亚洲欧美自拍偷拍色图| 久久精品久久综合| 色婷婷av一区二区三区gif| 精品福利二区三区| 婷婷成人激情在线网| 91在线一区二区三区| 国产婷婷色一区二区三区 | 肉肉av福利一精品导航| 久久成人麻豆午夜电影| 色八戒一区二区三区| 久久综合久久鬼色| 亚洲一区二区视频在线| 国产一区二区三区在线观看免费 | 91精品国产91久久久久久一区二区 | 大白屁股一区二区视频| 欧美日韩大陆一区二区| 中文字幕一区二区三区四区不卡| 亚洲国产aⅴ成人精品无吗| 国产成人啪午夜精品网站男同| 欧美私人免费视频| 亚洲三级在线播放| 国产在线观看免费一区| 91精品国产色综合久久不卡蜜臀| 国产精品伦理在线| 成人综合在线网站| 精品少妇一区二区三区日产乱码| 亚洲另类在线一区| 91亚洲精品久久久蜜桃| 日韩美女啊v在线免费观看| 99久久99久久久精品齐齐| 欧美国产日韩亚洲一区| 免费精品视频在线| 欧美一区二区三区白人| 天天综合网天天综合色| 7777精品伊人久久久大香线蕉的| 视频一区欧美精品| 91精品国产一区二区三区 | 国产很黄免费观看久久| 精品国产免费人成在线观看| 日本va欧美va瓶| 国产丝袜欧美中文另类| 国产成人无遮挡在线视频| 国产精品久久久久一区| 日本精品一级二级| 视频一区中文字幕| 欧美精品一区在线观看| av午夜一区麻豆| 蜜桃av噜噜一区| 最好看的中文字幕久久| 日韩美女在线视频| 91视频在线观看|